[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v8 14/31] python: Add pipenv support
From: |
John Snow |
Subject: |
[PATCH v8 14/31] python: Add pipenv support |
Date: |
Thu, 27 May 2021 17:16:58 -0400 |
pipenv is a tool used for managing virtual environments with pinned,
explicit dependencies. It is used for precisely recreating python
virtual environments.
pipenv uses two files to do this:
(1) Pipfile, which is similar in purpose and scope to what setup.cfg
lists. It specifies the requisite minimum to get a functional
environment for using this package.
(2) Pipfile.lock, which is similar in purpose to `pip freeze >
requirements.txt`. It specifies a canonical virtual environment used for
deployment or testing. This ensures that all users have repeatable
results.
The primary benefit of using this tool is to ensure *rock solid*
repeatable CI results with a known set of packages. Although I endeavor
to support as many versions as I can, the fluid nature of the Python
toolchain often means tailoring code for fairly specific versions.
Note that pipenv is *not* required to install or use this module; this is
purely for the sake of repeatable testing by CI or developers.
Here, a "blank" pipfile is added with no dependencies, but specifies
Python 3.6 for the virtual environment.
Pipfile will specify our version minimums, while Pipfile.lock specifies
an exact loadout of packages that were known to operate correctly. This
latter file provides the real value for easy setup of container images
and CI environments.
Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Cleber Rosa <crosa@redhat.com>
---
python/README.rst | 3 +++
python/Pipfile | 11 +++++++++++
2 files changed, 14 insertions(+)
create mode 100644 python/Pipfile
diff --git a/python/README.rst b/python/README.rst
index 0099646ae2f..bf9bbca979a 100644
--- a/python/README.rst
+++ b/python/README.rst
@@ -36,6 +36,9 @@ Files in this directory
- ``MANIFEST.in`` is read by python setuptools, it specifies additional files
that should be included by a source distribution.
- ``PACKAGE.rst`` is used as the README file that is visible on PyPI.org.
+- ``Pipfile`` is used by Pipenv to generate ``Pipfile.lock``.
+- ``Pipfile.lock`` is a set of pinned package dependencies that this package
+ is tested under in our CI suite. It is used by ``make venv-check``.
- ``README.rst`` you are here!
- ``VERSION`` contains the PEP-440 compliant version used to describe
this package; it is referenced by ``setup.cfg``.
diff --git a/python/Pipfile b/python/Pipfile
new file mode 100644
index 00000000000..9534830b5eb
--- /dev/null
+++ b/python/Pipfile
@@ -0,0 +1,11 @@
+[[source]]
+name = "pypi"
+url = "https://pypi.org/simple"
+verify_ssl = true
+
+[dev-packages]
+
+[packages]
+
+[requires]
+python_version = "3.6"
--
2.31.1
- [PATCH v8 04/31] python/console_socket: Add a pylint ignore, (continued)
- [PATCH v8 04/31] python/console_socket: Add a pylint ignore, John Snow, 2021/05/27
- [PATCH v8 05/31] python/machine: Disable pylint warning for open() in _pre_launch, John Snow, 2021/05/27
- [PATCH v8 06/31] python/machine: disable warning for Popen in _launch(), John Snow, 2021/05/27
- [PATCH v8 07/31] python/machine: Trim line length to below 80 chars, John Snow, 2021/05/27
- [PATCH v8 08/31] iotests/297: add --namespace-packages to mypy arguments, John Snow, 2021/05/27
- [PATCH v8 09/31] python: create qemu packages, John Snow, 2021/05/27
- [PATCH v8 10/31] python: add qemu package installer, John Snow, 2021/05/27
- [PATCH v8 11/31] python: add VERSION file, John Snow, 2021/05/27
- [PATCH v8 13/31] python: add MANIFEST.in, John Snow, 2021/05/27
- [PATCH v8 12/31] python: add directory structure README.rst files, John Snow, 2021/05/27
- [PATCH v8 14/31] python: Add pipenv support,
John Snow <=
- [PATCH v8 15/31] python: add pylint import exceptions, John Snow, 2021/05/27
- [PATCH v8 16/31] python: move pylintrc into setup.cfg, John Snow, 2021/05/27
- [PATCH v8 17/31] python: add pylint to pipenv, John Snow, 2021/05/27
- [PATCH v8 18/31] python: move flake8 config to setup.cfg, John Snow, 2021/05/27
- [PATCH v8 19/31] python: add excluded dirs to flake8 config, John Snow, 2021/05/27
- [PATCH v8 20/31] python: Add flake8 to pipenv, John Snow, 2021/05/27
- [PATCH v8 21/31] python: move mypy.ini into setup.cfg, John Snow, 2021/05/27
- [PATCH v8 22/31] python: add mypy to pipenv, John Snow, 2021/05/27
- [PATCH v8 23/31] python: move .isort.cfg into setup.cfg, John Snow, 2021/05/27
- [PATCH v8 25/31] python/qemu: add qemu package itself to pipenv, John Snow, 2021/05/27