diff --git a/MANIFEST.in b/MANIFEST.in
index a86c1c7..0497df0 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -8,6 +8,7 @@ include mypy.ini
include .mailmap
include .flake8
include .pre-commit-config.yaml
+include long_description.rst
recursive-exclude tools *
exclude tools
diff --git a/long_description.rst b/long_description.rst
new file mode 100644
index 0000000..f411b45
--- /dev/null
+++ b/long_description.rst
@@ -0,0 +1,37 @@
+IPython provides a rich toolkit to help you make the most out of using Python
+interactively. Its main components are:
+
+* A powerful interactive Python shell
+* A `Jupyter `_ kernel to work with Python code in Jupyter
+notebooks and other interactive frontends.
+
+The enhanced interactive Python shells have the following main features:
+
+* Comprehensive object introspection.
+
+* Input history, persistent across sessions.
+
+* Caching of output results during a session with automatically generated
+references.
+
+* Extensible tab completion, with support by default for completion of python
+variables and keywords, filenames and function keywords.
+
+* Extensible system of 'magic' commands for controlling the environment and
+performing many tasks related either to IPython or the operating system.
+
+* A rich configuration system with easy switching between different setups
+(simpler than changing $PYTHONSTARTUP environment variables every time).
+
+* Session logging and reloading.
+
+* Extensible syntax processing for special purpose situations.
+
+* Access to the system shell with user-extensible alias system.
+
+* Easily embeddable in other Python programs and GUIs.
+
+* Integrated access to the pdb debugger and the Python profiler.
+
+The latest development version is always available from IPython's `GitHub
+site `_.
diff --git a/setup.cfg b/setup.cfg
index d6269ab..61fa022 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -4,44 +4,7 @@ version = attr: IPython.core.release.__version__
url = https://ipython.org
description = IPython: Productive Interactive Computing
long_description_content_type = text/x-rst
-long_description = IPython provides a rich toolkit to help you make the most out of using Python
- interactively. Its main components are:
-
- * A powerful interactive Python shell
- * A `Jupyter `_ kernel to work with Python code in Jupyter
- notebooks and other interactive frontends.
-
- The enhanced interactive Python shells have the following main features:
-
- * Comprehensive object introspection.
-
- * Input history, persistent across sessions.
-
- * Caching of output results during a session with automatically generated
- references.
-
- * Extensible tab completion, with support by default for completion of python
- variables and keywords, filenames and function keywords.
-
- * Extensible system of 'magic' commands for controlling the environment and
- performing many tasks related either to IPython or the operating system.
-
- * A rich configuration system with easy switching between different setups
- (simpler than changing $PYTHONSTARTUP environment variables every time).
-
- * Session logging and reloading.
-
- * Extensible syntax processing for special purpose situations.
-
- * Access to the system shell with user-extensible alias system.
-
- * Easily embeddable in other Python programs and GUIs.
-
- * Integrated access to the pdb debugger and the Python profiler.
-
- The latest development version is always available from IPython's `GitHub
- site `_.
-
+long_description = file: long_description.rst
license_file = LICENSE
project_urls =
Documentation = https://ipython.readthedocs.io/
diff --git a/tools/build_release b/tools/build_release
index 970a5a0..651aec7 100755
--- a/tools/build_release
+++ b/tools/build_release
@@ -16,8 +16,8 @@ def build_release():
# Build source and binary distros
sh(sdists)
buildwheels()
+ # don't try to change, xz, bz2 deprecated.
sh(' '.join([sys.executable, 'tools/retar.py', 'dist/*.gz']))
- sh(' '.join([sys.executable, 'tools/retar.py', 'dist/*.xz']))
if __name__ == '__main__':
build_release()
diff --git a/tools/release b/tools/release
index 2ba4d24..385668d 100755
--- a/tools/release
+++ b/tools/release
@@ -71,7 +71,7 @@ if 'upload' in sys.argv:
print('3. Uploading to PyPI using twine')
cd(distdir)
- call(['twine', 'upload'] + to_upload)
+ call(['twine', 'upload', '--verbose'] + to_upload)
else:
# Build, but don't upload
diff --git a/tools/retar.py b/tools/retar.py
index dbc4f0b..ccf1a13 100644
--- a/tools/retar.py
+++ b/tools/retar.py
@@ -37,8 +37,10 @@ with open(path, "rb") as f:
old_buf.seek(0)
if path.name.endswith("gz"):
r_mode = "r:gz"
-if path.name.endswith(("xz", "xz2")):
- r_mode = "r:xz"
+if path.name.endswith("bz2"):
+ r_mode = "r:bz2"
+if path.name.endswith("xz"):
+ raise ValueError("XZ is deprecated but it's written nowhere")
old = tarfile.open(fileobj=old_buf, mode=r_mode)
buf = io.BytesIO()
@@ -69,10 +71,10 @@ if r_mode == "r:gz":
with open(path, "wb") as f:
with gzip.GzipFile("", "wb", fileobj=f, mtime=timestamp) as gzf:
gzf.write(buf.read())
-elif r_mode == "r:xz":
- import lzma
+elif r_mode == "r:bz2":
+ import bz2
- with lzma.open(path, "wb") as f:
+ with bz2.open(path, "wb") as f:
f.write(buf.read())
else:
diff --git a/tools/toollib.py b/tools/toollib.py
index ce37644..b1498f9 100644
--- a/tools/toollib.py
+++ b/tools/toollib.py
@@ -18,7 +18,7 @@ archive = '%s:%s' % (archive_user, archive_dir)
# Build commands
# Source dists
-sdists = "{python} setup.py sdist --formats=xztar,gztar".format(python=sys.executable)
+sdists = "{python} setup.py sdist --formats=gztar".format(python=sys.executable)
# Binary dists
def buildwheels():
sh("{python} setup.py bdist_wheel".format(python=sys.executable))