diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-04-10 16:27:52 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-04-10 16:27:52 +0000 |
| commit | 1cb8e64bdedb8b0dce0b54daff161820cd63ee28 (patch) | |
| tree | b0c3b43ae2841f1950d98987524d06a2825351db | |
| parent | ef1f192dd9fa1b77c1350cb0b8a6a75a6fafd2b2 (diff) | |
automatic import of python-pip-api
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-pip-api.spec | 385 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 387 insertions, 0 deletions
@@ -0,0 +1 @@ +/pip-api-0.0.30.tar.gz diff --git a/python-pip-api.spec b/python-pip-api.spec new file mode 100644 index 0000000..a3905a7 --- /dev/null +++ b/python-pip-api.spec @@ -0,0 +1,385 @@ +%global _empty_manifest_terminate_build 0 +Name: python-pip-api +Version: 0.0.30 +Release: 1 +Summary: An unofficial, importable pip API +License: Apache Software License +URL: http://github.com/di/pip-api +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/69/a2/90dd01b87277ae65a6fb725dae86a039aeb34e24f576600abd0434aa95c4/pip-api-0.0.30.tar.gz +BuildArch: noarch + +Requires: python3-pip + +%description + +<!--- BADGES: START ---> +[][#github-license] +[][#pypi-package] +[][#pypi-package] +[][#conda-forge-package] +[][#conda-forge-package] +[][#conda-forge-feedstock] + +[#github-license]: https://github.com/di/pip-api/blob/master/LICENSE +[#pypi-package]: https://pypi.org/project/pip-api/ +[#conda-forge-package]: https://anaconda.org/conda-forge/pip-api +[#conda-forge-feedstock]: https://github.com/conda-forge/pip-api-feedstock +<!--- BADGES: END ---> + +Since [`pip`](https://pypi.org/p/pip) is a command-line-tool, [it does not have +an official, supported, _importable_ +API](https://pip.pypa.io/en/latest/user_guide/#using-pip-from-your-program). + +However, this does not mean that people haven't tried to `import pip`, usually +to end up with much headache when `pip`'s maintainers do routine refactoring. + +## Goal +The goal of this project is to provide an importable `pip` API, which is _fully +compliant_ with the recommended method of using `pip` from your program. + +How? By providing an importable API that wraps command-line calls to `pip`, +this library can be used as a drop-in replacement for existing uses of `pip`'s +internal API. + +### Scope +This goal means that any new API added here must have the following +equivalents: + +- some internal `pip` API (or combination of internal APIs) +- some CLI calls (or combination of CLI calls) + +Any functionality that is not currently possible from internal `pip` API or +CLI calls is out of scope. + +## Installation + +You can install `pip-api` with either `pip` or with `conda`. + +**With pip**: + +```sh +python -m pip install pip-api +``` + +**With conda**: + +```sh +conda install -c conda-forge pip-api +``` + +## Supported Commands + +Not all commands are supported in all versions of `pip` and on all platforms. +If the command you are trying to use is not compatible, `pip_api` will raise a +`pip_api.exceptions.Incompatible` exception for your program to catch. + +### Available with all `pip` versions: +* `pip_api.version()` + > Returns the `pip` version as a string, e.g. `"9.0.1"` + +* `pip_api.installed_distributions(local=False)` + > Returns a list of all installed distributions as a `Distribution` object with the following attributes: + > * `Distribution.name` (`string`): The name of the installed distribution + > * `Distribution.version` ([`packaging.version.Version`](https://packaging.pypa.io/en/latest/version/#packaging.version.Version)): The version of the installed distribution + > * `Distribution.location` (`string`): The location of the installed distribution + > * `Distribution.editable` (`bool`): Whether the distribution is editable or not + > Optionally takes a `local` parameter to filter out globally-installed packages + +* `pip_api.parse_requirements(filename, options=None, include_invalid=False, strict_hashes=False)` + > Takes a path to a filename of a Requirements file. Returns a mapping from package name to a `pip_api.Requirement` object (subclass of [`packaging.requirements.Requirement`](https://packaging.pypa.io/en/latest/requirements/#packaging.requirements.Requirement)) with the following attributes: + > * `Requirement.name` (`string`): The name of the requirement. + > * `Requirement.extras` (`set`): A set of extras that the requirement specifies. + > * `Requirement.specifier` ([`packaging.specifiers.SpecifierSet`](https://packaging.pypa.io/en/latest/specifiers/#packaging.specifiers.SpecifierSet)): A `SpecifierSet` of the version specified by the requirement. + > * `Requirement.marker` ([`packaging.markers.Marker`](https://packaging.pypa.io/en/latest/markers/#packaging.markers.Marker)): A `Marker` of the marker for the requirement. Can be `None`. + > * `Requirement.hashes` (`dict`): A mapping of hashes for the requirement, corresponding to `--hash=...` options. + > * `Requirement.editable` (`bool`): Whether the requirement is editable, corresponding to `-e ...` + > * `Requirement.filename` (`str`): The filename that the requirement originates from. + > * `Requirement.lineno` (`int`): The source line that the requirement was parsed from. + > + > Optionally takes an `options` parameter to override the regex used to skip requirements lines. + > Optionally takes an `include_invalid` parameter to return an `UnparsedRequirement` in the event that a requirement cannot be parsed correctly. + > Optionally takes a `strict_hashes` parameter to require that all requirements have associated hashes. + +### Available with `pip>=8.0.0`: +* `pip_api.hash(filename, algorithm='sha256')` + > Returns the resulting as a string. + > Valid `algorithm` parameters are `'sha256'`, `'sha384'`, and `'sha512'` + +### Available with `pip>=19.2`: +* `pip_api.installed_distributions(local=False, paths=[])` + > As described above, but with an extra optional `paths` parameter to provide a list of locations to look for installed distributions. Attempting to use the `paths` parameter with `pip<19.2` will result in a `PipError`. + +## Use cases +This library is in use by a number of other tools, including: +* [`pip-audit`](https://pypi.org/project/pip-audit/), to analyze dependencies for known vulnerabilities +* [`pytest-reqs`](https://pypi.org/project/pytest-reqs), to compare requirements files with test dependencies +* [`hashin`](https://pypi.org/project/hashin/), to add hash pinning to requirements files +* ...and many more. + + +%package -n python3-pip-api +Summary: An unofficial, importable pip API +Provides: python-pip-api +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-pip-api + +<!--- BADGES: START ---> +[][#github-license] +[][#pypi-package] +[][#pypi-package] +[][#conda-forge-package] +[][#conda-forge-package] +[][#conda-forge-feedstock] + +[#github-license]: https://github.com/di/pip-api/blob/master/LICENSE +[#pypi-package]: https://pypi.org/project/pip-api/ +[#conda-forge-package]: https://anaconda.org/conda-forge/pip-api +[#conda-forge-feedstock]: https://github.com/conda-forge/pip-api-feedstock +<!--- BADGES: END ---> + +Since [`pip`](https://pypi.org/p/pip) is a command-line-tool, [it does not have +an official, supported, _importable_ +API](https://pip.pypa.io/en/latest/user_guide/#using-pip-from-your-program). + +However, this does not mean that people haven't tried to `import pip`, usually +to end up with much headache when `pip`'s maintainers do routine refactoring. + +## Goal +The goal of this project is to provide an importable `pip` API, which is _fully +compliant_ with the recommended method of using `pip` from your program. + +How? By providing an importable API that wraps command-line calls to `pip`, +this library can be used as a drop-in replacement for existing uses of `pip`'s +internal API. + +### Scope +This goal means that any new API added here must have the following +equivalents: + +- some internal `pip` API (or combination of internal APIs) +- some CLI calls (or combination of CLI calls) + +Any functionality that is not currently possible from internal `pip` API or +CLI calls is out of scope. + +## Installation + +You can install `pip-api` with either `pip` or with `conda`. + +**With pip**: + +```sh +python -m pip install pip-api +``` + +**With conda**: + +```sh +conda install -c conda-forge pip-api +``` + +## Supported Commands + +Not all commands are supported in all versions of `pip` and on all platforms. +If the command you are trying to use is not compatible, `pip_api` will raise a +`pip_api.exceptions.Incompatible` exception for your program to catch. + +### Available with all `pip` versions: +* `pip_api.version()` + > Returns the `pip` version as a string, e.g. `"9.0.1"` + +* `pip_api.installed_distributions(local=False)` + > Returns a list of all installed distributions as a `Distribution` object with the following attributes: + > * `Distribution.name` (`string`): The name of the installed distribution + > * `Distribution.version` ([`packaging.version.Version`](https://packaging.pypa.io/en/latest/version/#packaging.version.Version)): The version of the installed distribution + > * `Distribution.location` (`string`): The location of the installed distribution + > * `Distribution.editable` (`bool`): Whether the distribution is editable or not + > Optionally takes a `local` parameter to filter out globally-installed packages + +* `pip_api.parse_requirements(filename, options=None, include_invalid=False, strict_hashes=False)` + > Takes a path to a filename of a Requirements file. Returns a mapping from package name to a `pip_api.Requirement` object (subclass of [`packaging.requirements.Requirement`](https://packaging.pypa.io/en/latest/requirements/#packaging.requirements.Requirement)) with the following attributes: + > * `Requirement.name` (`string`): The name of the requirement. + > * `Requirement.extras` (`set`): A set of extras that the requirement specifies. + > * `Requirement.specifier` ([`packaging.specifiers.SpecifierSet`](https://packaging.pypa.io/en/latest/specifiers/#packaging.specifiers.SpecifierSet)): A `SpecifierSet` of the version specified by the requirement. + > * `Requirement.marker` ([`packaging.markers.Marker`](https://packaging.pypa.io/en/latest/markers/#packaging.markers.Marker)): A `Marker` of the marker for the requirement. Can be `None`. + > * `Requirement.hashes` (`dict`): A mapping of hashes for the requirement, corresponding to `--hash=...` options. + > * `Requirement.editable` (`bool`): Whether the requirement is editable, corresponding to `-e ...` + > * `Requirement.filename` (`str`): The filename that the requirement originates from. + > * `Requirement.lineno` (`int`): The source line that the requirement was parsed from. + > + > Optionally takes an `options` parameter to override the regex used to skip requirements lines. + > Optionally takes an `include_invalid` parameter to return an `UnparsedRequirement` in the event that a requirement cannot be parsed correctly. + > Optionally takes a `strict_hashes` parameter to require that all requirements have associated hashes. + +### Available with `pip>=8.0.0`: +* `pip_api.hash(filename, algorithm='sha256')` + > Returns the resulting as a string. + > Valid `algorithm` parameters are `'sha256'`, `'sha384'`, and `'sha512'` + +### Available with `pip>=19.2`: +* `pip_api.installed_distributions(local=False, paths=[])` + > As described above, but with an extra optional `paths` parameter to provide a list of locations to look for installed distributions. Attempting to use the `paths` parameter with `pip<19.2` will result in a `PipError`. + +## Use cases +This library is in use by a number of other tools, including: +* [`pip-audit`](https://pypi.org/project/pip-audit/), to analyze dependencies for known vulnerabilities +* [`pytest-reqs`](https://pypi.org/project/pytest-reqs), to compare requirements files with test dependencies +* [`hashin`](https://pypi.org/project/hashin/), to add hash pinning to requirements files +* ...and many more. + + +%package help +Summary: Development documents and examples for pip-api +Provides: python3-pip-api-doc +%description help + +<!--- BADGES: START ---> +[][#github-license] +[][#pypi-package] +[][#pypi-package] +[][#conda-forge-package] +[][#conda-forge-package] +[][#conda-forge-feedstock] + +[#github-license]: https://github.com/di/pip-api/blob/master/LICENSE +[#pypi-package]: https://pypi.org/project/pip-api/ +[#conda-forge-package]: https://anaconda.org/conda-forge/pip-api +[#conda-forge-feedstock]: https://github.com/conda-forge/pip-api-feedstock +<!--- BADGES: END ---> + +Since [`pip`](https://pypi.org/p/pip) is a command-line-tool, [it does not have +an official, supported, _importable_ +API](https://pip.pypa.io/en/latest/user_guide/#using-pip-from-your-program). + +However, this does not mean that people haven't tried to `import pip`, usually +to end up with much headache when `pip`'s maintainers do routine refactoring. + +## Goal +The goal of this project is to provide an importable `pip` API, which is _fully +compliant_ with the recommended method of using `pip` from your program. + +How? By providing an importable API that wraps command-line calls to `pip`, +this library can be used as a drop-in replacement for existing uses of `pip`'s +internal API. + +### Scope +This goal means that any new API added here must have the following +equivalents: + +- some internal `pip` API (or combination of internal APIs) +- some CLI calls (or combination of CLI calls) + +Any functionality that is not currently possible from internal `pip` API or +CLI calls is out of scope. + +## Installation + +You can install `pip-api` with either `pip` or with `conda`. + +**With pip**: + +```sh +python -m pip install pip-api +``` + +**With conda**: + +```sh +conda install -c conda-forge pip-api +``` + +## Supported Commands + +Not all commands are supported in all versions of `pip` and on all platforms. +If the command you are trying to use is not compatible, `pip_api` will raise a +`pip_api.exceptions.Incompatible` exception for your program to catch. + +### Available with all `pip` versions: +* `pip_api.version()` + > Returns the `pip` version as a string, e.g. `"9.0.1"` + +* `pip_api.installed_distributions(local=False)` + > Returns a list of all installed distributions as a `Distribution` object with the following attributes: + > * `Distribution.name` (`string`): The name of the installed distribution + > * `Distribution.version` ([`packaging.version.Version`](https://packaging.pypa.io/en/latest/version/#packaging.version.Version)): The version of the installed distribution + > * `Distribution.location` (`string`): The location of the installed distribution + > * `Distribution.editable` (`bool`): Whether the distribution is editable or not + > Optionally takes a `local` parameter to filter out globally-installed packages + +* `pip_api.parse_requirements(filename, options=None, include_invalid=False, strict_hashes=False)` + > Takes a path to a filename of a Requirements file. Returns a mapping from package name to a `pip_api.Requirement` object (subclass of [`packaging.requirements.Requirement`](https://packaging.pypa.io/en/latest/requirements/#packaging.requirements.Requirement)) with the following attributes: + > * `Requirement.name` (`string`): The name of the requirement. + > * `Requirement.extras` (`set`): A set of extras that the requirement specifies. + > * `Requirement.specifier` ([`packaging.specifiers.SpecifierSet`](https://packaging.pypa.io/en/latest/specifiers/#packaging.specifiers.SpecifierSet)): A `SpecifierSet` of the version specified by the requirement. + > * `Requirement.marker` ([`packaging.markers.Marker`](https://packaging.pypa.io/en/latest/markers/#packaging.markers.Marker)): A `Marker` of the marker for the requirement. Can be `None`. + > * `Requirement.hashes` (`dict`): A mapping of hashes for the requirement, corresponding to `--hash=...` options. + > * `Requirement.editable` (`bool`): Whether the requirement is editable, corresponding to `-e ...` + > * `Requirement.filename` (`str`): The filename that the requirement originates from. + > * `Requirement.lineno` (`int`): The source line that the requirement was parsed from. + > + > Optionally takes an `options` parameter to override the regex used to skip requirements lines. + > Optionally takes an `include_invalid` parameter to return an `UnparsedRequirement` in the event that a requirement cannot be parsed correctly. + > Optionally takes a `strict_hashes` parameter to require that all requirements have associated hashes. + +### Available with `pip>=8.0.0`: +* `pip_api.hash(filename, algorithm='sha256')` + > Returns the resulting as a string. + > Valid `algorithm` parameters are `'sha256'`, `'sha384'`, and `'sha512'` + +### Available with `pip>=19.2`: +* `pip_api.installed_distributions(local=False, paths=[])` + > As described above, but with an extra optional `paths` parameter to provide a list of locations to look for installed distributions. Attempting to use the `paths` parameter with `pip<19.2` will result in a `PipError`. + +## Use cases +This library is in use by a number of other tools, including: +* [`pip-audit`](https://pypi.org/project/pip-audit/), to analyze dependencies for known vulnerabilities +* [`pytest-reqs`](https://pypi.org/project/pytest-reqs), to compare requirements files with test dependencies +* [`hashin`](https://pypi.org/project/hashin/), to add hash pinning to requirements files +* ...and many more. + + +%prep +%autosetup -n pip-api-0.0.30 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-pip-api -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon Apr 10 2023 Python_Bot <Python_Bot@openeuler.org> - 0.0.30-1 +- Package Spec generated @@ -0,0 +1 @@ +3eb94a0693a4f4063d2782870a39a02f pip-api-0.0.30.tar.gz |
