diff options
author | CoprDistGit <infra@openeuler.org> | 2023-05-18 05:15:12 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-05-18 05:15:12 +0000 |
commit | 4883b95b15ae8f08c10bdc15c7b185fe4d93da55 (patch) | |
tree | 8d968d4a04b96b09afb1aea15162f16ee101d285 | |
parent | 387be1a260c52632b0f160402ccfb72c1d8eb794 (diff) |
automatic import of python-relaxed-poetry
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-relaxed-poetry.spec | 1087 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 1089 insertions, 0 deletions
@@ -0,0 +1 @@ +/relaxed-poetry-0.5.2.tar.gz diff --git a/python-relaxed-poetry.spec b/python-relaxed-poetry.spec new file mode 100644 index 0000000..c85cad1 --- /dev/null +++ b/python-relaxed-poetry.spec @@ -0,0 +1,1087 @@ +%global _empty_manifest_terminate_build 0 +Name: python-relaxed-poetry +Version: 0.5.2 +Release: 1 +Summary: Fork of Poetry (Python dependency management and packaging tool), attempts to be faster and less strict. +License: MIT +URL: https://github.com/bennylut/relaxed-poetry +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/bb/6e/83241b9e3a6f2c074321093626d832746aea27aa4aef01bd7a61f52ae434/relaxed-poetry-0.5.2.tar.gz +BuildArch: noarch + +Requires: python3-relaxed-poetry-core +Requires: python3-cleo +Requires: python3-crashtest +Requires: python3-requests +Requires: python3-cachy +Requires: python3-requests-toolbelt +Requires: python3-cachecontrol[filecache] +Requires: python3-pkginfo +Requires: python3-html5lib +Requires: python3-shellingham +Requires: python3-pexpect +Requires: python3-packaging +Requires: python3-virtualenv +Requires: python3-keyring +Requires: python3-entrypoints +Requires: python3-importlib-metadata +Requires: python3-dataclasses +Requires: python3-protopy-lib +Requires: python3-typing-extensions + +%description +# Relaxed Poetry + +> ℹ️ For installation instructions check the [Wiki](https://github.com/bennylut/relaxed-poetry/wiki/Installation) + +This project is a poetry fork. It serves as a relaxed version of poetry (currently based on version 1.2.0a2). + +Poetry is a great tool and was a perfect fit for my team. Over the time, we found several issues where it is a bit too strict, and while most of the time for good reasons, these issues still made poetry unusable for us in many projects. + +Since, in my eyes, there is no real alternative to poetry, I choose to fork it and include some relaxations for the issues that we encounter. While I'm at it, I also modified some of poetry's behavior and added some features that suite our workflows and views better. + +All of the changes that were made in this fork are documented in the wiki, the followings are some notable ones: +- Forced dependency versions +- Relaxation of version-enforcements +- Faster dependency-versions resolution (more than 4 times faster on tested projects) +- Multi-package projects support +- virtual environments are built inside the project directory by default +- Project and other components scaffolding using [protopy](https://github.com/bennylut/protopy) +- property definition and substitution in pyproject +- automatic and manual build profiles (override groups of properties in pyproject) +- install, update and add are merged into a single (install) command + +See wiki for further details. + +**Important**: this package is based on alpha staged poetry, changes may be frequent, +though it is planed to be used internally for our projects from day one. + +**The rest of this README left as is from the original Poetry README** + +# Poetry: Dependency Management for Python + +Poetry helps you declare, manage and install dependencies of Python projects, +ensuring you have the right stack everywhere. + + + +It supports Python 2.7 and 3.5+. + +**Note**: Python 2.7 and 3.5 will no longer be supported in the next feature release (1.2). +You should consider updating your Python version to a supported one. + +[](https://github.com/python-poetry/poetry/actions?query=workflow%3ATests+branch%3Amaster+event%3Apush) + +The [complete documentation](https://python-poetry.org/docs/) is available on the [official website](https://python-poetry.org). + +## Installation + +Poetry provides a custom installer that will install `poetry` isolated +from the rest of your system. + +### osx / linux / bashonwindows install instructions +```bash +curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py | python - +``` +### windows powershell install instructions +```powershell +(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py -UseBasicParsing).Content | python - +``` + +**Warning**: The previous `get-poetry.py` installer is now deprecated, if you are currently using it +you should migrate to the new, supported, `install-poetry.py` installer. + +The installer installs the `poetry` tool to Poetry's `bin` directory. This location depends on your system: + +- `$HOME/.local/bin` for Unix +- `%APPDATA%\Python\Scripts` on Windows + +If this directory is not on your `PATH`, you will need to add it manually +if you want to invoke Poetry with simply `poetry`. + +Alternatively, you can use the full path to `poetry` to use it. + +Once Poetry is installed you can execute the following: + +```bash +poetry --version +``` + +If you see something like `Poetry (version 1.2.0)` then you are ready to use Poetry. +If you decide Poetry isn't your thing, you can completely remove it from your system +by running the installer again with the `--uninstall` option or by setting +the `POETRY_UNINSTALL` environment variable before executing the installer. + +```bash +python install-poetry.py --uninstall +POETRY_UNINSTALL=1 python install-poetry.py +``` + +By default, Poetry is installed into the user's platform-specific home directory. +If you wish to change this, you may define the `POETRY_HOME` environment variable: + +```bash +POETRY_HOME=/etc/poetry python install-poetry.py +``` + +If you want to install prerelease versions, you can do so by passing `--preview` option to `install-poetry.py` +or by using the `POETRY_PREVIEW` environment variable: + +```bash +python install-poetry.py --preview +POETRY_PREVIEW=1 python install-poetry.py +``` + +Similarly, if you want to install a specific version, you can use `--version` option or the `POETRY_VERSION` +environment variable: + +```bash +python install-poetry.py --version 1.2.0 +POETRY_VERSION=1.2.0 python install-poetry.py +``` + +You can also install Poetry for a `git` repository by using the `--git` option: + +```bash +python install-poetry.py --git https://github.com/python-poetry/poetry.git@master +```` + +**Note**: Note that the installer does not support Python < 3.6. + +## Updating `poetry` + +Updating poetry to the latest stable version is as simple as calling the `self update` command. + +**Warning**: Poetry versions installed using the now deprecated `get-poetry.py` installer will not be able to use this +command to update to 1.2 releases or later. Migrate to using the `install-poetry.py` installer or `pipx`. + +```bash +poetry self update +``` + +If you want to install prerelease versions, you can use the `--preview` option. + +```bash +poetry self update --preview +``` + +And finally, if you want to install a specific version you can pass it as an argument +to `self update`. + +```bash +poetry self update 1.2.0 +``` + + +## Enable tab completion for Bash, Fish, or Zsh + +`poetry` supports generating completion scripts for Bash, Fish, and Zsh. +See `poetry help completions` for full details, but the gist is as simple as using one of the following: + +```bash +# Bash +poetry completions bash > /etc/bash_completion.d/poetry.bash-completion + +# Bash (Homebrew) +poetry completions bash > $(brew --prefix)/etc/bash_completion.d/poetry.bash-completion + +# Fish +poetry completions fish > ~/.config/fish/completions/poetry.fish + +# Fish (Homebrew) +poetry completions fish > (brew --prefix)/share/fish/vendor_completions.d/poetry.fish + +# Zsh +poetry completions zsh > ~/.zfunc/_poetry + +# Zsh (Homebrew) +poetry completions zsh > $(brew --prefix)/share/zsh/site-functions/_poetry + +# Zsh (Oh-My-Zsh) +mkdir $ZSH_CUSTOM/plugins/poetry +poetry completions zsh > $ZSH_CUSTOM/plugins/poetry/_poetry + +# Zsh (prezto) +poetry completions zsh > ~/.zprezto/modules/completion/external/src/_poetry +``` + +*Note:* you may need to restart your shell in order for the changes to take +effect. + +For `zsh`, you must then add the following line in your `~/.zshrc` before +`compinit` (not for homebrew setup): + +```zsh +fpath+=~/.zfunc +``` + + +## Introduction + +`poetry` is a tool to handle dependency installation as well as building and packaging of Python packages. +It only needs one file to do all of that: the new, [standardized](https://www.python.org/dev/peps/pep-0518/) `pyproject.toml`. + +In other words, poetry uses `pyproject.toml` to replace `setup.py`, `requirements.txt`, `setup.cfg`, `MANIFEST.in` and the newly added `Pipfile`. + +```toml +[tool.poetry] +name = "my-package" +version = "0.1.0" +description = "The description of the package" + +license = "MIT" + +authors = [ + "Sébastien Eustace <sebastien@eustace.io>" +] + +readme = 'README.md' # Markdown files are supported + +repository = "https://github.com/python-poetry/poetry" +homepage = "https://github.com/python-poetry/poetry" + +keywords = ['packaging', 'poetry'] + +[tool.poetry.dependencies] +python = "~2.7 || ^3.2" # Compatible python versions must be declared here +toml = "^0.9" +# Dependencies with extras +requests = { version = "^2.13", extras = [ "security" ] } +# Python specific dependencies with prereleases allowed +pathlib2 = { version = "^2.2", python = "~2.7", allow-prereleases = true } +# Git dependencies +cleo = { git = "https://github.com/sdispater/cleo.git", branch = "master" } + +# Optional dependencies (extras) +pendulum = { version = "^1.4", optional = true } + +[tool.poetry.dev-dependencies] +pytest = "^3.0" +pytest-cov = "^2.4" + +[tool.poetry.scripts] +my-script = 'my_package:main' +``` + +There are some things we can notice here: + +* It will try to enforce [semantic versioning](<http://semver.org>) as the best practice in version naming. +* You can specify the readme, included and excluded files: no more `MANIFEST.in`. +`poetry` will also use VCS ignore files (like `.gitignore`) to populate the `exclude` section. +* Keywords (up to 5) can be specified and will act as tags on the packaging site. +* The dependencies sections support caret, tilde, wildcard, inequality and multiple requirements. +* You must specify the python versions for which your package is compatible. + +`poetry` will also detect if you are inside a virtualenv and install the packages accordingly. +So, `poetry` can be installed globally and used everywhere. + +`poetry` also comes with a full fledged dependency resolution library. + +## Why? + +Packaging systems and dependency management in Python are rather convoluted and hard to understand for newcomers. +Even for seasoned developers it might be cumbersome at times to create all files needed in a Python project: `setup.py`, +`requirements.txt`, `setup.cfg`, `MANIFEST.in` and the newly added `Pipfile`. + +So I wanted a tool that would limit everything to a single configuration file to do: +dependency management, packaging and publishing. + +It takes inspiration in tools that exist in other languages, like `composer` (PHP) or `cargo` (Rust). + +And, finally, I started `poetry` to bring another exhaustive dependency resolver to the Python community apart from +[Conda's](https://conda.io). + +### What about Pipenv? + +In short: I do not like the CLI it provides, or some of the decisions made, +and I think we can make a better and more intuitive one. Here are a few things +that I don't like. + +#### Dependency resolution + +The dependency resolution is erratic and will fail even if there is a solution. Let's take an example: + +```bash +pipenv install oslo.utils==1.4.0 +``` + +will fail with this error: + +```text +Could not find a version that matches pbr!=0.7,!=2.1.0,<1.0,>=0.6,>=2.0.0 +``` + +while Poetry will get you the right set of packages: + +```bash +poetry add oslo.utils=1.4.0 +``` + +results in : + +```text + - Installing pytz (2018.3) + - Installing netifaces (0.10.6) + - Installing netaddr (0.7.19) + - Installing oslo.i18n (2.1.0) + - Installing iso8601 (0.1.12) + - Installing six (1.11.0) + - Installing babel (2.5.3) + - Installing pbr (0.11.1) + - Installing oslo.utils (1.4.0) +``` + +This is possible thanks to the efficient dependency resolver at the heart of Poetry. + +Here is a breakdown of what exactly happens here: + +`oslo.utils (1.4.0)` depends on: + +- `pbr (>=0.6,!=0.7,<1.0)` +- `Babel (>=1.3)` +- `six (>=1.9.0)` +- `iso8601 (>=0.1.9)` +- `oslo.i18n (>=1.3.0)` +- `netaddr (>=0.7.12)` +- `netifaces (>=0.10.4)` + +What interests us is `pbr (>=0.6,!=0.7,<1.0)`. + +At this point, poetry will choose `pbr==0.11.1` which is the latest version that matches the constraint. + +Next it will try to select `oslo.i18n==3.20.0` which is the latest version that matches `oslo.i18n (>=1.3.0)`. + +However this version requires `pbr (!=2.1.0,>=2.0.0)` which is incompatible with `pbr==0.11.1`, +so `poetry` will try to find a version of `oslo.i18n` that satisfies `pbr (>=0.6,!=0.7,<1.0)`. + +By analyzing the releases of `oslo.i18n`, it will find `oslo.i18n==2.1.0` which requires `pbr (>=0.11,<2.0)`. +At this point the rest of the resolution is straightforward since there is no more conflict. + +## Resources + +* [Official Website](https://python-poetry.org) +* [Issue Tracker](https://github.com/python-poetry/poetry/issues) +* [Discord](https://discord.com/invite/awxPgve) + + +%package -n python3-relaxed-poetry +Summary: Fork of Poetry (Python dependency management and packaging tool), attempts to be faster and less strict. +Provides: python-relaxed-poetry +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-relaxed-poetry +# Relaxed Poetry + +> ℹ️ For installation instructions check the [Wiki](https://github.com/bennylut/relaxed-poetry/wiki/Installation) + +This project is a poetry fork. It serves as a relaxed version of poetry (currently based on version 1.2.0a2). + +Poetry is a great tool and was a perfect fit for my team. Over the time, we found several issues where it is a bit too strict, and while most of the time for good reasons, these issues still made poetry unusable for us in many projects. + +Since, in my eyes, there is no real alternative to poetry, I choose to fork it and include some relaxations for the issues that we encounter. While I'm at it, I also modified some of poetry's behavior and added some features that suite our workflows and views better. + +All of the changes that were made in this fork are documented in the wiki, the followings are some notable ones: +- Forced dependency versions +- Relaxation of version-enforcements +- Faster dependency-versions resolution (more than 4 times faster on tested projects) +- Multi-package projects support +- virtual environments are built inside the project directory by default +- Project and other components scaffolding using [protopy](https://github.com/bennylut/protopy) +- property definition and substitution in pyproject +- automatic and manual build profiles (override groups of properties in pyproject) +- install, update and add are merged into a single (install) command + +See wiki for further details. + +**Important**: this package is based on alpha staged poetry, changes may be frequent, +though it is planed to be used internally for our projects from day one. + +**The rest of this README left as is from the original Poetry README** + +# Poetry: Dependency Management for Python + +Poetry helps you declare, manage and install dependencies of Python projects, +ensuring you have the right stack everywhere. + + + +It supports Python 2.7 and 3.5+. + +**Note**: Python 2.7 and 3.5 will no longer be supported in the next feature release (1.2). +You should consider updating your Python version to a supported one. + +[](https://github.com/python-poetry/poetry/actions?query=workflow%3ATests+branch%3Amaster+event%3Apush) + +The [complete documentation](https://python-poetry.org/docs/) is available on the [official website](https://python-poetry.org). + +## Installation + +Poetry provides a custom installer that will install `poetry` isolated +from the rest of your system. + +### osx / linux / bashonwindows install instructions +```bash +curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py | python - +``` +### windows powershell install instructions +```powershell +(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py -UseBasicParsing).Content | python - +``` + +**Warning**: The previous `get-poetry.py` installer is now deprecated, if you are currently using it +you should migrate to the new, supported, `install-poetry.py` installer. + +The installer installs the `poetry` tool to Poetry's `bin` directory. This location depends on your system: + +- `$HOME/.local/bin` for Unix +- `%APPDATA%\Python\Scripts` on Windows + +If this directory is not on your `PATH`, you will need to add it manually +if you want to invoke Poetry with simply `poetry`. + +Alternatively, you can use the full path to `poetry` to use it. + +Once Poetry is installed you can execute the following: + +```bash +poetry --version +``` + +If you see something like `Poetry (version 1.2.0)` then you are ready to use Poetry. +If you decide Poetry isn't your thing, you can completely remove it from your system +by running the installer again with the `--uninstall` option or by setting +the `POETRY_UNINSTALL` environment variable before executing the installer. + +```bash +python install-poetry.py --uninstall +POETRY_UNINSTALL=1 python install-poetry.py +``` + +By default, Poetry is installed into the user's platform-specific home directory. +If you wish to change this, you may define the `POETRY_HOME` environment variable: + +```bash +POETRY_HOME=/etc/poetry python install-poetry.py +``` + +If you want to install prerelease versions, you can do so by passing `--preview` option to `install-poetry.py` +or by using the `POETRY_PREVIEW` environment variable: + +```bash +python install-poetry.py --preview +POETRY_PREVIEW=1 python install-poetry.py +``` + +Similarly, if you want to install a specific version, you can use `--version` option or the `POETRY_VERSION` +environment variable: + +```bash +python install-poetry.py --version 1.2.0 +POETRY_VERSION=1.2.0 python install-poetry.py +``` + +You can also install Poetry for a `git` repository by using the `--git` option: + +```bash +python install-poetry.py --git https://github.com/python-poetry/poetry.git@master +```` + +**Note**: Note that the installer does not support Python < 3.6. + +## Updating `poetry` + +Updating poetry to the latest stable version is as simple as calling the `self update` command. + +**Warning**: Poetry versions installed using the now deprecated `get-poetry.py` installer will not be able to use this +command to update to 1.2 releases or later. Migrate to using the `install-poetry.py` installer or `pipx`. + +```bash +poetry self update +``` + +If you want to install prerelease versions, you can use the `--preview` option. + +```bash +poetry self update --preview +``` + +And finally, if you want to install a specific version you can pass it as an argument +to `self update`. + +```bash +poetry self update 1.2.0 +``` + + +## Enable tab completion for Bash, Fish, or Zsh + +`poetry` supports generating completion scripts for Bash, Fish, and Zsh. +See `poetry help completions` for full details, but the gist is as simple as using one of the following: + +```bash +# Bash +poetry completions bash > /etc/bash_completion.d/poetry.bash-completion + +# Bash (Homebrew) +poetry completions bash > $(brew --prefix)/etc/bash_completion.d/poetry.bash-completion + +# Fish +poetry completions fish > ~/.config/fish/completions/poetry.fish + +# Fish (Homebrew) +poetry completions fish > (brew --prefix)/share/fish/vendor_completions.d/poetry.fish + +# Zsh +poetry completions zsh > ~/.zfunc/_poetry + +# Zsh (Homebrew) +poetry completions zsh > $(brew --prefix)/share/zsh/site-functions/_poetry + +# Zsh (Oh-My-Zsh) +mkdir $ZSH_CUSTOM/plugins/poetry +poetry completions zsh > $ZSH_CUSTOM/plugins/poetry/_poetry + +# Zsh (prezto) +poetry completions zsh > ~/.zprezto/modules/completion/external/src/_poetry +``` + +*Note:* you may need to restart your shell in order for the changes to take +effect. + +For `zsh`, you must then add the following line in your `~/.zshrc` before +`compinit` (not for homebrew setup): + +```zsh +fpath+=~/.zfunc +``` + + +## Introduction + +`poetry` is a tool to handle dependency installation as well as building and packaging of Python packages. +It only needs one file to do all of that: the new, [standardized](https://www.python.org/dev/peps/pep-0518/) `pyproject.toml`. + +In other words, poetry uses `pyproject.toml` to replace `setup.py`, `requirements.txt`, `setup.cfg`, `MANIFEST.in` and the newly added `Pipfile`. + +```toml +[tool.poetry] +name = "my-package" +version = "0.1.0" +description = "The description of the package" + +license = "MIT" + +authors = [ + "Sébastien Eustace <sebastien@eustace.io>" +] + +readme = 'README.md' # Markdown files are supported + +repository = "https://github.com/python-poetry/poetry" +homepage = "https://github.com/python-poetry/poetry" + +keywords = ['packaging', 'poetry'] + +[tool.poetry.dependencies] +python = "~2.7 || ^3.2" # Compatible python versions must be declared here +toml = "^0.9" +# Dependencies with extras +requests = { version = "^2.13", extras = [ "security" ] } +# Python specific dependencies with prereleases allowed +pathlib2 = { version = "^2.2", python = "~2.7", allow-prereleases = true } +# Git dependencies +cleo = { git = "https://github.com/sdispater/cleo.git", branch = "master" } + +# Optional dependencies (extras) +pendulum = { version = "^1.4", optional = true } + +[tool.poetry.dev-dependencies] +pytest = "^3.0" +pytest-cov = "^2.4" + +[tool.poetry.scripts] +my-script = 'my_package:main' +``` + +There are some things we can notice here: + +* It will try to enforce [semantic versioning](<http://semver.org>) as the best practice in version naming. +* You can specify the readme, included and excluded files: no more `MANIFEST.in`. +`poetry` will also use VCS ignore files (like `.gitignore`) to populate the `exclude` section. +* Keywords (up to 5) can be specified and will act as tags on the packaging site. +* The dependencies sections support caret, tilde, wildcard, inequality and multiple requirements. +* You must specify the python versions for which your package is compatible. + +`poetry` will also detect if you are inside a virtualenv and install the packages accordingly. +So, `poetry` can be installed globally and used everywhere. + +`poetry` also comes with a full fledged dependency resolution library. + +## Why? + +Packaging systems and dependency management in Python are rather convoluted and hard to understand for newcomers. +Even for seasoned developers it might be cumbersome at times to create all files needed in a Python project: `setup.py`, +`requirements.txt`, `setup.cfg`, `MANIFEST.in` and the newly added `Pipfile`. + +So I wanted a tool that would limit everything to a single configuration file to do: +dependency management, packaging and publishing. + +It takes inspiration in tools that exist in other languages, like `composer` (PHP) or `cargo` (Rust). + +And, finally, I started `poetry` to bring another exhaustive dependency resolver to the Python community apart from +[Conda's](https://conda.io). + +### What about Pipenv? + +In short: I do not like the CLI it provides, or some of the decisions made, +and I think we can make a better and more intuitive one. Here are a few things +that I don't like. + +#### Dependency resolution + +The dependency resolution is erratic and will fail even if there is a solution. Let's take an example: + +```bash +pipenv install oslo.utils==1.4.0 +``` + +will fail with this error: + +```text +Could not find a version that matches pbr!=0.7,!=2.1.0,<1.0,>=0.6,>=2.0.0 +``` + +while Poetry will get you the right set of packages: + +```bash +poetry add oslo.utils=1.4.0 +``` + +results in : + +```text + - Installing pytz (2018.3) + - Installing netifaces (0.10.6) + - Installing netaddr (0.7.19) + - Installing oslo.i18n (2.1.0) + - Installing iso8601 (0.1.12) + - Installing six (1.11.0) + - Installing babel (2.5.3) + - Installing pbr (0.11.1) + - Installing oslo.utils (1.4.0) +``` + +This is possible thanks to the efficient dependency resolver at the heart of Poetry. + +Here is a breakdown of what exactly happens here: + +`oslo.utils (1.4.0)` depends on: + +- `pbr (>=0.6,!=0.7,<1.0)` +- `Babel (>=1.3)` +- `six (>=1.9.0)` +- `iso8601 (>=0.1.9)` +- `oslo.i18n (>=1.3.0)` +- `netaddr (>=0.7.12)` +- `netifaces (>=0.10.4)` + +What interests us is `pbr (>=0.6,!=0.7,<1.0)`. + +At this point, poetry will choose `pbr==0.11.1` which is the latest version that matches the constraint. + +Next it will try to select `oslo.i18n==3.20.0` which is the latest version that matches `oslo.i18n (>=1.3.0)`. + +However this version requires `pbr (!=2.1.0,>=2.0.0)` which is incompatible with `pbr==0.11.1`, +so `poetry` will try to find a version of `oslo.i18n` that satisfies `pbr (>=0.6,!=0.7,<1.0)`. + +By analyzing the releases of `oslo.i18n`, it will find `oslo.i18n==2.1.0` which requires `pbr (>=0.11,<2.0)`. +At this point the rest of the resolution is straightforward since there is no more conflict. + +## Resources + +* [Official Website](https://python-poetry.org) +* [Issue Tracker](https://github.com/python-poetry/poetry/issues) +* [Discord](https://discord.com/invite/awxPgve) + + +%package help +Summary: Development documents and examples for relaxed-poetry +Provides: python3-relaxed-poetry-doc +%description help +# Relaxed Poetry + +> ℹ️ For installation instructions check the [Wiki](https://github.com/bennylut/relaxed-poetry/wiki/Installation) + +This project is a poetry fork. It serves as a relaxed version of poetry (currently based on version 1.2.0a2). + +Poetry is a great tool and was a perfect fit for my team. Over the time, we found several issues where it is a bit too strict, and while most of the time for good reasons, these issues still made poetry unusable for us in many projects. + +Since, in my eyes, there is no real alternative to poetry, I choose to fork it and include some relaxations for the issues that we encounter. While I'm at it, I also modified some of poetry's behavior and added some features that suite our workflows and views better. + +All of the changes that were made in this fork are documented in the wiki, the followings are some notable ones: +- Forced dependency versions +- Relaxation of version-enforcements +- Faster dependency-versions resolution (more than 4 times faster on tested projects) +- Multi-package projects support +- virtual environments are built inside the project directory by default +- Project and other components scaffolding using [protopy](https://github.com/bennylut/protopy) +- property definition and substitution in pyproject +- automatic and manual build profiles (override groups of properties in pyproject) +- install, update and add are merged into a single (install) command + +See wiki for further details. + +**Important**: this package is based on alpha staged poetry, changes may be frequent, +though it is planed to be used internally for our projects from day one. + +**The rest of this README left as is from the original Poetry README** + +# Poetry: Dependency Management for Python + +Poetry helps you declare, manage and install dependencies of Python projects, +ensuring you have the right stack everywhere. + + + +It supports Python 2.7 and 3.5+. + +**Note**: Python 2.7 and 3.5 will no longer be supported in the next feature release (1.2). +You should consider updating your Python version to a supported one. + +[](https://github.com/python-poetry/poetry/actions?query=workflow%3ATests+branch%3Amaster+event%3Apush) + +The [complete documentation](https://python-poetry.org/docs/) is available on the [official website](https://python-poetry.org). + +## Installation + +Poetry provides a custom installer that will install `poetry` isolated +from the rest of your system. + +### osx / linux / bashonwindows install instructions +```bash +curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py | python - +``` +### windows powershell install instructions +```powershell +(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py -UseBasicParsing).Content | python - +``` + +**Warning**: The previous `get-poetry.py` installer is now deprecated, if you are currently using it +you should migrate to the new, supported, `install-poetry.py` installer. + +The installer installs the `poetry` tool to Poetry's `bin` directory. This location depends on your system: + +- `$HOME/.local/bin` for Unix +- `%APPDATA%\Python\Scripts` on Windows + +If this directory is not on your `PATH`, you will need to add it manually +if you want to invoke Poetry with simply `poetry`. + +Alternatively, you can use the full path to `poetry` to use it. + +Once Poetry is installed you can execute the following: + +```bash +poetry --version +``` + +If you see something like `Poetry (version 1.2.0)` then you are ready to use Poetry. +If you decide Poetry isn't your thing, you can completely remove it from your system +by running the installer again with the `--uninstall` option or by setting +the `POETRY_UNINSTALL` environment variable before executing the installer. + +```bash +python install-poetry.py --uninstall +POETRY_UNINSTALL=1 python install-poetry.py +``` + +By default, Poetry is installed into the user's platform-specific home directory. +If you wish to change this, you may define the `POETRY_HOME` environment variable: + +```bash +POETRY_HOME=/etc/poetry python install-poetry.py +``` + +If you want to install prerelease versions, you can do so by passing `--preview` option to `install-poetry.py` +or by using the `POETRY_PREVIEW` environment variable: + +```bash +python install-poetry.py --preview +POETRY_PREVIEW=1 python install-poetry.py +``` + +Similarly, if you want to install a specific version, you can use `--version` option or the `POETRY_VERSION` +environment variable: + +```bash +python install-poetry.py --version 1.2.0 +POETRY_VERSION=1.2.0 python install-poetry.py +``` + +You can also install Poetry for a `git` repository by using the `--git` option: + +```bash +python install-poetry.py --git https://github.com/python-poetry/poetry.git@master +```` + +**Note**: Note that the installer does not support Python < 3.6. + +## Updating `poetry` + +Updating poetry to the latest stable version is as simple as calling the `self update` command. + +**Warning**: Poetry versions installed using the now deprecated `get-poetry.py` installer will not be able to use this +command to update to 1.2 releases or later. Migrate to using the `install-poetry.py` installer or `pipx`. + +```bash +poetry self update +``` + +If you want to install prerelease versions, you can use the `--preview` option. + +```bash +poetry self update --preview +``` + +And finally, if you want to install a specific version you can pass it as an argument +to `self update`. + +```bash +poetry self update 1.2.0 +``` + + +## Enable tab completion for Bash, Fish, or Zsh + +`poetry` supports generating completion scripts for Bash, Fish, and Zsh. +See `poetry help completions` for full details, but the gist is as simple as using one of the following: + +```bash +# Bash +poetry completions bash > /etc/bash_completion.d/poetry.bash-completion + +# Bash (Homebrew) +poetry completions bash > $(brew --prefix)/etc/bash_completion.d/poetry.bash-completion + +# Fish +poetry completions fish > ~/.config/fish/completions/poetry.fish + +# Fish (Homebrew) +poetry completions fish > (brew --prefix)/share/fish/vendor_completions.d/poetry.fish + +# Zsh +poetry completions zsh > ~/.zfunc/_poetry + +# Zsh (Homebrew) +poetry completions zsh > $(brew --prefix)/share/zsh/site-functions/_poetry + +# Zsh (Oh-My-Zsh) +mkdir $ZSH_CUSTOM/plugins/poetry +poetry completions zsh > $ZSH_CUSTOM/plugins/poetry/_poetry + +# Zsh (prezto) +poetry completions zsh > ~/.zprezto/modules/completion/external/src/_poetry +``` + +*Note:* you may need to restart your shell in order for the changes to take +effect. + +For `zsh`, you must then add the following line in your `~/.zshrc` before +`compinit` (not for homebrew setup): + +```zsh +fpath+=~/.zfunc +``` + + +## Introduction + +`poetry` is a tool to handle dependency installation as well as building and packaging of Python packages. +It only needs one file to do all of that: the new, [standardized](https://www.python.org/dev/peps/pep-0518/) `pyproject.toml`. + +In other words, poetry uses `pyproject.toml` to replace `setup.py`, `requirements.txt`, `setup.cfg`, `MANIFEST.in` and the newly added `Pipfile`. + +```toml +[tool.poetry] +name = "my-package" +version = "0.1.0" +description = "The description of the package" + +license = "MIT" + +authors = [ + "Sébastien Eustace <sebastien@eustace.io>" +] + +readme = 'README.md' # Markdown files are supported + +repository = "https://github.com/python-poetry/poetry" +homepage = "https://github.com/python-poetry/poetry" + +keywords = ['packaging', 'poetry'] + +[tool.poetry.dependencies] +python = "~2.7 || ^3.2" # Compatible python versions must be declared here +toml = "^0.9" +# Dependencies with extras +requests = { version = "^2.13", extras = [ "security" ] } +# Python specific dependencies with prereleases allowed +pathlib2 = { version = "^2.2", python = "~2.7", allow-prereleases = true } +# Git dependencies +cleo = { git = "https://github.com/sdispater/cleo.git", branch = "master" } + +# Optional dependencies (extras) +pendulum = { version = "^1.4", optional = true } + +[tool.poetry.dev-dependencies] +pytest = "^3.0" +pytest-cov = "^2.4" + +[tool.poetry.scripts] +my-script = 'my_package:main' +``` + +There are some things we can notice here: + +* It will try to enforce [semantic versioning](<http://semver.org>) as the best practice in version naming. +* You can specify the readme, included and excluded files: no more `MANIFEST.in`. +`poetry` will also use VCS ignore files (like `.gitignore`) to populate the `exclude` section. +* Keywords (up to 5) can be specified and will act as tags on the packaging site. +* The dependencies sections support caret, tilde, wildcard, inequality and multiple requirements. +* You must specify the python versions for which your package is compatible. + +`poetry` will also detect if you are inside a virtualenv and install the packages accordingly. +So, `poetry` can be installed globally and used everywhere. + +`poetry` also comes with a full fledged dependency resolution library. + +## Why? + +Packaging systems and dependency management in Python are rather convoluted and hard to understand for newcomers. +Even for seasoned developers it might be cumbersome at times to create all files needed in a Python project: `setup.py`, +`requirements.txt`, `setup.cfg`, `MANIFEST.in` and the newly added `Pipfile`. + +So I wanted a tool that would limit everything to a single configuration file to do: +dependency management, packaging and publishing. + +It takes inspiration in tools that exist in other languages, like `composer` (PHP) or `cargo` (Rust). + +And, finally, I started `poetry` to bring another exhaustive dependency resolver to the Python community apart from +[Conda's](https://conda.io). + +### What about Pipenv? + +In short: I do not like the CLI it provides, or some of the decisions made, +and I think we can make a better and more intuitive one. Here are a few things +that I don't like. + +#### Dependency resolution + +The dependency resolution is erratic and will fail even if there is a solution. Let's take an example: + +```bash +pipenv install oslo.utils==1.4.0 +``` + +will fail with this error: + +```text +Could not find a version that matches pbr!=0.7,!=2.1.0,<1.0,>=0.6,>=2.0.0 +``` + +while Poetry will get you the right set of packages: + +```bash +poetry add oslo.utils=1.4.0 +``` + +results in : + +```text + - Installing pytz (2018.3) + - Installing netifaces (0.10.6) + - Installing netaddr (0.7.19) + - Installing oslo.i18n (2.1.0) + - Installing iso8601 (0.1.12) + - Installing six (1.11.0) + - Installing babel (2.5.3) + - Installing pbr (0.11.1) + - Installing oslo.utils (1.4.0) +``` + +This is possible thanks to the efficient dependency resolver at the heart of Poetry. + +Here is a breakdown of what exactly happens here: + +`oslo.utils (1.4.0)` depends on: + +- `pbr (>=0.6,!=0.7,<1.0)` +- `Babel (>=1.3)` +- `six (>=1.9.0)` +- `iso8601 (>=0.1.9)` +- `oslo.i18n (>=1.3.0)` +- `netaddr (>=0.7.12)` +- `netifaces (>=0.10.4)` + +What interests us is `pbr (>=0.6,!=0.7,<1.0)`. + +At this point, poetry will choose `pbr==0.11.1` which is the latest version that matches the constraint. + +Next it will try to select `oslo.i18n==3.20.0` which is the latest version that matches `oslo.i18n (>=1.3.0)`. + +However this version requires `pbr (!=2.1.0,>=2.0.0)` which is incompatible with `pbr==0.11.1`, +so `poetry` will try to find a version of `oslo.i18n` that satisfies `pbr (>=0.6,!=0.7,<1.0)`. + +By analyzing the releases of `oslo.i18n`, it will find `oslo.i18n==2.1.0` which requires `pbr (>=0.11,<2.0)`. +At this point the rest of the resolution is straightforward since there is no more conflict. + +## Resources + +* [Official Website](https://python-poetry.org) +* [Issue Tracker](https://github.com/python-poetry/poetry/issues) +* [Discord](https://discord.com/invite/awxPgve) + + +%prep +%autosetup -n relaxed-poetry-0.5.2 + +%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-relaxed-poetry -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Thu May 18 2023 Python_Bot <Python_Bot@openeuler.org> - 0.5.2-1 +- Package Spec generated @@ -0,0 +1 @@ +8b75bebfd68d1c0cf0778baa3382f4cf relaxed-poetry-0.5.2.tar.gz |