diff --git a/docs/basic-usage.md b/docs/basic-usage.md index 0441664ab3f..2255e85b7ca 100644 --- a/docs/basic-usage.md +++ b/docs/basic-usage.md @@ -89,7 +89,7 @@ Poetry will not install a Python interpreter for you. ### Initialising a pre-existing project -Instead of creating a new project, Poetry can be used to 'initialise' a pre-populated +Instead of creating a new project, Poetry can be used to 'initialize' a pre-populated directory. To interactively create a `pyproject.toml` file in directory `pre-existing-project`: ```bash diff --git a/docs/building-extension-modules.md b/docs/building-extension-modules.md index e1e54b1ab8a..b854ccc2a0c 100644 --- a/docs/building-extension-modules.md +++ b/docs/building-extension-modules.md @@ -79,7 +79,7 @@ script = "relative/path/to/build-extension.py" ``` {{% note %}} -The name of the build script is arbitrary. Common practice has been to name it `build.py`, however this is not +The name of the build script is arbitrary. Common practice has been to name it `build.py`, however, this is not mandatory. You **should** consider [using a subdirectory]({{< relref "#can-i-store-the-build-script-in-a-subdirectory" >}}) if feasible. {{% /note %}} @@ -322,7 +322,7 @@ def build(): maturin("build", "-r", *cargo_args) # We won't use the wheel built by maturin directly since - # we want Poetry to build it but, we need to retrieve the + # we want Poetry to build it, but we need to retrieve the # compiled extensions from the maturin wheel. wheel = next(iter(wheels_dir.glob("*.whl"))) with zipfile.ZipFile(wheel.as_posix()) as whl: diff --git a/docs/cli.md b/docs/cli.md index be1bf5166aa..6c9b952f2f3 100644 --- a/docs/cli.md +++ b/docs/cli.md @@ -213,7 +213,7 @@ If necessary the build process happens in an isolated environment. {{% note %}} When using `--local-version`, the identifier must be [PEP 440](https://peps.python.org/pep-0440/#local-version-identifiers) -compliant. This is useful for adding build numbers, platform specificities etc. for private packages. +compliant. This is useful for adding build numbers, platform specificities, etc. for private packages. `--local-version` is deprecated and will be removed in a future version of Poetry. Use `--config-settings local-version=` instead. @@ -717,7 +717,7 @@ Should match a repository name set by the [`config`](#config) command. * `--password (-p)`: The password to access the repository. * `--cert`: Certificate authority to access the repository. * `--client-cert`: Client certificate to access the repository. -* `--dist-dir`: Dist directory where built artifact are stored. Default is `dist`. +* `--dist-dir`: Dist directory where built artifacts are stored. Default is `dist`. * `--build`: Build the package before publishing. * `--dry-run`: Perform all actions except upload the package. * `--skip-existing`: Ignore errors from files already existing in the repository. @@ -852,7 +852,7 @@ poetry search requests pendulum PyPI no longer allows for the search of packages without a browser. Please use https://pypi.org/search (via a browser) instead. -For more information please see [warehouse documentation](https://warehouse.pypa.io/api-reference/xml-rpc.html#deprecated-methods) +For more information, please see [warehouse documentation](https://warehouse.pypa.io/api-reference/xml-rpc.html#deprecated-methods) and this [discussion](https://discuss.python.org/t/fastly-interfering-with-pypi-search/73597/6). {{% /note %}} diff --git a/docs/configuration.md b/docs/configuration.md index 7280a93d2a7..3349be58323 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -382,7 +382,7 @@ The directory in which Poetry managed Python versions are installed to. Do not download entire wheels to extract metadata but use [HTTP range requests](https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests) to only download the METADATA files of wheels. -Especially with slow network connections this setting can speed up dependency resolution significantly. +Especially with slow network connections, this setting can speed up dependency resolution significantly. If the cache has already been filled or the server does not support HTTP range requests, this setting makes no difference. diff --git a/docs/contributing.md b/docs/contributing.md index 3b0ff6d0516..186833bb8c1 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -23,7 +23,7 @@ your best judgement, and feel free to propose changes to this document in a pull ### Reporting bugs This section guides you through submitting a bug report for Poetry. -Following these guidelines helps maintainers and the community understand your report, reproduce the behavior, and find +Following these guidelines helps maintainers and the community understands your report, reproduces the behavior, and finds related reports. #### Before submitting a bug report @@ -66,7 +66,7 @@ and under which conditions it normally happens. Provide more context by answering these questions: -* **Did the problem start happening recently** (e.g. after updating to a new version of Poetry) or was this always a +* **Did the problem start happening recently** (e.g., after updating to a new version of Poetry) or was this always a problem? * If the problem started happening recently, **can you reproduce the problem in an older version of Poetry?** What's the most recent version in which the problem does not happen? @@ -144,7 +144,7 @@ Poetry's development toolchain requires Python 3.9 or newer. {{% /note %}} You should first fork the Poetry repository and then clone it locally, so that you can make pull requests against the -project. If you are new to Git and pull request based development, GitHub provides a +project. If you are new to Git and pull request-based development, GitHub provides a [guide](https://docs.github.com/en/get-started/quickstart/contributing-to-projects) you will find helpful. Next, you should install Poetry's dependencies, and run the test suite to make sure everything is working as expected: diff --git a/docs/dependency-specification.md b/docs/dependency-specification.md index bced0dd1ac7..3099286aa0e 100644 --- a/docs/dependency-specification.md +++ b/docs/dependency-specification.md @@ -41,7 +41,7 @@ to [PEP 508](https://peps.python.org/pep-0508/). In many cases, `tool.poetry.dependencies` can be replaced with `project.dependencies`. However, there are some cases where you might still need to use `tool.poetry.dependencies`. For example, if you want to define additional information that is not required for building -but only for locking (for example an explicit source), you can enrich dependency +but only for locking (for example, an explicit source), you can enrich dependency information in the `tool.poetry` section. ```toml @@ -99,7 +99,7 @@ If you only specify a major, and minor version, then minor- and patch-level chan ### Wildcard requirements -**Wildcard requirements** allow for the latest (dependency dependent) version where the wildcard is positioned. +**Wildcard requirements** allow for the latest (dependency-dependent) version where the wildcard is positioned. `*`, `1.*` and `1.2.*` are examples of wildcard requirements. @@ -133,7 +133,7 @@ You can specify the exact version of a package. `1.2.3` is an example of an exact version specification. This will tell Poetry to install this version and this version only. -If other dependencies require a different version, the solver will ultimately fail and abort any install or update procedures. +If other dependencies require a different version, the solver will ultimately fail and abort any installation or update procedures. Exact versions can also be specified with `==` according to [PEP 440](https://peps.python.org/pep-0440/). @@ -147,7 +147,7 @@ Not supported in `project.dependencies`. When using `poetry add` such constraints are automatically converted into an equivalent constraint. {{% /warning %}} -**Caret requirements** allow [SemVer](https://semver.org/) compatible updates to a specified version. An update is allowed if the new version number does not modify the left-most non-zero digit in the major, minor, patch grouping. For instance, if we previously ran `poetry add requests@^2.13.0` and wanted to update the library and ran `poetry update requests`, poetry would update us to version `2.14.0` if it was available, but would not update us to `3.0.0`. If instead we had specified the version string as `^0.1.13`, poetry would update to `0.1.14` but not `0.2.0`. `0.0.x` is not considered compatible with any other version. +**Caret requirements** allow [SemVer](https://semver.org/) compatible updates to a specified version. An update is allowed if the new version number does not modify the left-most non-zero digit in the major, minor, patch grouping. For instance, if we previously ran `poetry add requests@^2.13.0` and wanted to update the library and ran `poetry update requests`, poetry would update us to version `2.14.0` if it was available, but would not update us to `3.0.0`. If instead, we had specified the version string as `^0.1.13`, poetry would update to `0.1.14` but not `0.2.0`. `0.0.x` is not considered compatible with any other version. Here are some more examples of caret requirements and the versions that would be allowed with them: @@ -281,7 +281,7 @@ Since we haven’t specified any other information, Poetry assumes that we intend to use the latest commit on the `main` branch to build our project. -You can explicit specify which branch, commit hash or tagged ref should be usd: +You can explicitly specify which branch, commit hash or tagged ref should be usd: {{< tabs tabTotal="2" tabID1="git-rev-project" tabID2="git-rev-poetry" tabName1="[project]" tabName2="[tool.poetry]">}} @@ -346,7 +346,7 @@ The corresponding `add` call looks like this: poetry add "git+https://github.com/myorg/mypackage_with_subdirs.git#subdirectory=subdir" ``` -To use an SSH connection, for example in the case of private repositories, use the following example syntax: +To use an SSH connection, for example, in the case of private repositories, use the following example syntax: {{< tabs tabTotal="2" tabID1="git-ssh-project" tabID2="git-ssh-poetry" tabName1="[project]" tabName2="[tool.poetry]">}} @@ -424,7 +424,7 @@ my-package = { path = "../my-package/", develop = true } my-package = { path = "../my-package/dist/my-package-0.1.0.tar.gz" } ``` -To install directory path dependencies in editable mode use the `develop` keyword and set it to `true`. +To install directory path dependencies in editable mode, use the `develop` keyword and set it to `true`. {{< /tab >}} {{< /tabs >}} @@ -679,11 +679,11 @@ priority = "explicit" ## Multiple constraints dependencies -Sometimes, one of your dependency may have different version ranges depending +Sometimes, one of your dependencies may have different version ranges depending on the target Python versions. Let's say you have a dependency on the package `foo` which is only compatible -with Python 3.6-3.7 up to version 1.9, and compatible with Python 3.8+ from version 2.0: +with Python 3.6–3.7 up to version 1.9, and compatible with Python 3.8+ from version 2.0: you would declare it like so: {{< tabs tabTotal="2" tabID1="multiple-constraints-project" tabID2="multiple-constraints-poetry" tabName1="[project]" tabName2="[tool.poetry]">}} @@ -718,8 +718,8 @@ otherwise it will cause an error when resolving dependencies. ### Combining git / url / path dependencies with source repositories Direct origin (`git`/ `url`/ `path`) dependencies can satisfy the requirement of a dependency that -doesn't explicitly specify a source, even when mutually exclusive markers are used. For instance -in the following example the url package will also be a valid solution for the second requirement: +doesn't explicitly specify a source, even when mutually exclusive markers are used. For instance, +in the following example, the url package will also be a valid solution for the second requirement: ```toml foo = [ { platform = "darwin", url = "https://example.com/example-1.0-py3-none-any.whl" }, @@ -728,7 +728,7 @@ foo = [ ``` Sometimes you may instead want to use a direct origin dependency for specific conditions -(i.e. a compiled package that is not available on PyPI for a certain platform/architecture) while +(i.e., a compiled package that is not available on PyPI for a certain platform/architecture) while falling back on source repositories in other cases. In this case you should explicitly ask for your dependency to be satisfied by another `source`. For example: ```toml @@ -742,7 +742,7 @@ foo = [ In the case of more complex dependency specifications, you may find that you end up with lines which are very long and difficult to read. In these cases, -you can shift from using "inline table" syntax, to the "standard table" syntax. +you can shift from using "inline table" syntax to the "standard table" syntax. An example where this might be useful is the following: diff --git a/docs/faq.md b/docs/faq.md index eb041ebabf7..fcb9017cdf4 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -14,7 +14,7 @@ menu: ### Why is the dependency resolution process slow? While the dependency resolver at the heart of Poetry is highly optimized and -should be fast enough for most cases, with certain sets of dependencies +should be fast enough for most cases, with certain sets of dependencies, it can take time to find a valid solution. This is due to the fact that not all libraries on PyPI have properly declared their metadata @@ -22,9 +22,9 @@ and, as such, they are not available via the PyPI JSON API. At this point, Poetr but to download the packages and inspect them to get the necessary information. This is an expensive operation, both in bandwidth and time, which is why it seems this is a long process. -At the moment there is no way around it. However, if you notice that Poetry +At the moment, there is no way around it. However, if you notice that Poetry is downloading many versions of a single package, you can lessen the workload -by constraining that one package in your pyproject.toml more narrowly. That way +by constraining that one package in your pyproject.toml more narrowly. That way, Poetry does not have to sift through so many versions of it, which may speed up the locking process considerably in some cases. @@ -40,7 +40,7 @@ Poetry uses "major.minor.micro" version identifiers as mentioned in Version bumps are done similar to Python's versioning: * A major version bump (incrementing the first number) is only done for breaking changes - if a deprecation cycle is not possible and many users have to perform some manual steps + if a deprecation cycle is not possible, and many users have to perform some manual steps to migrate from one version to the next one. * A minor version bump (incrementing the second number) may include new features as well as new deprecations and drop features deprecated in an earlier minor release. @@ -64,22 +64,22 @@ Once a release of your package is published, you cannot tweak its dependencies a – you have to do a new release but the previous one stays broken. (Users can still work around the broken dependency by restricting it by themselves.) -To avoid such issues you can define an upper bound on your constraints, +To avoid such issues, you can define an upper bound on your constraints, which you can increase in a new release after testing that your package is compatible with the new major version of your dependency. -For example instead of using `>=3.4` you can use `^3.4` which allows all versions `<4.0`. +For example, instead of using `>=3.4` you can use `^3.4` which allows all versions `<4.0`. The `^` operator works very well with libraries following [semantic versioning](https://semver.org). However, when defining an upper bound, users of your package are not able to update a dependency beyond the upper bound even if it does not break anything and is fully compatible with your package. -You have to release a new version of your package with an increased upper bound first. +You have to release a new version of your package with an increased upper-bound first. -If your package will be used as a library in other packages, it might be better to avoid +If your package is used as a library in other packages, it might be better to avoid upper bounds and thus unnecessary dependency conflicts (unless you already know for sure that the next release of the dependency will break your package). -If your package will be used as an application, it might be worth to define an upper bound. +If your package is used as an application, it might be worth defining an upper bound. ### Is tox supported? @@ -125,7 +125,7 @@ commands = ``` `tox` will create an `sdist` package of the project and uses `pip` to install it in a fresh environment. -Thus, dependencies are resolved by `pip` in the first place. But afterward we run Poetry, +Thus, dependencies are resolved by `pip` in the first place. But afterward, we run Poetry, which will install the locked dependencies into the environment. #### Use case #3 @@ -171,7 +171,7 @@ dependencies specified in `poetry.lock` into [Nox](https://nox.thea.codes/en/sta ### I don't want Poetry to manage my virtual environments. Can I disable it? While Poetry automatically creates virtual environments to always work isolated -from the global Python installation, there are rare scenarios where the use a Poetry managed +from the global Python installation, there are rare scenarios where the use of a Poetry managed virtual environment is not possible or preferred. In this case, you can disable this feature by setting the `virtualenvs.create` setting to `false`: @@ -189,7 +189,7 @@ The Poetry team strongly encourages the use of a virtual environment. ### Why is Poetry telling me that the current project's supported Python range is not compatible with one or more packages' Python requirements? -Unlike `pip`, Poetry doesn't resolve for just the Python in the current environment. Instead it makes sure that a dependency +Unlike `pip`, Poetry doesn't resolve for just the Python in the current environment. Instead, it makes sure that a dependency is resolvable within the given Python version range in `pyproject.toml`. Assume you have the following `pyproject.toml`: @@ -200,7 +200,7 @@ python = "^3.7" ``` This means your project aims to be compatible with any Python version >=3.7,<4.0. Whenever you try to add a dependency -whose Python requirement doesn't match the whole range Poetry will tell you this, e.g.: +whose Python requirement doesn't match the whole range, Poetry will tell you this, e.g.: ``` The current project's supported Python range (>=3.7.0,<4.0.0) is not compatible with some of the required packages Python requirement: @@ -208,7 +208,7 @@ The current project's supported Python range (>=3.7.0,<4.0.0) is not compatible ``` Usually you will want to match the supported Python range of your project with the upper bound of the failing dependency. -Alternatively you can tell Poetry to install this dependency [only for a specific range of Python versions]({{< relref "dependency-specification#multiple-constraints-dependencies" >}}), +Alternatively, you can tell Poetry to install this dependency [only for a specific range of Python versions]({{< relref "dependency-specification#multiple-constraints-dependencies" >}}), if you know that it's not needed in all versions. If you do not want to set an upper bound in the metadata when building your project, @@ -228,7 +228,7 @@ python = ">=3.7,<3.11" # used for locking dependencies This is done to be compliant with the broader Python ecosystem. -For example, if Poetry builds a distribution for a project that uses a version that is not valid according to +For example, if Poetry builds a distribution for a project that uses a version that is not valid, according to [PEP 440](https://peps.python.org/pep-0440), third party tools will be unable to parse the version correctly. diff --git a/docs/libraries.md b/docs/libraries.md index 6da07ba95ec..ee6d5807c6c 100644 --- a/docs/libraries.md +++ b/docs/libraries.md @@ -88,7 +88,7 @@ an isolated environment. Ensure you have specified any additional settings accor documentation of the build backend you are using. -Once building is done you are ready to publish your library. +Once building is done, you are ready to publish your library. ## Publishing to PyPI @@ -105,7 +105,7 @@ Doing so is really easy. poetry publish ``` -This will package and publish the library to PyPI, at the condition that you are a registered user +This will package and publish the library to PyPI, on the condition that you are a registered user and you have [configured your credentials]({{< relref "repositories#configuring-credentials" >}}) properly. {{% note %}} @@ -120,7 +120,7 @@ Once this is done, your library will be available to anyone. ## Publishing to a private repository -Sometimes, you may want to keep your library private but also being accessible to your team. +Sometimes, you may want to keep your library private but also be accessible to your team. In this case, you will need to use a private repository. @@ -128,7 +128,7 @@ In order to publish to a private repository, you will need to add it to your global list of repositories. See [Adding a repository]({{< relref "repositories#adding-a-repository" >}}) for more information. -Once this is done, you can actually publish to it like so: +Once this is done, you can publish your package to the repository like so: ```bash poetry publish -r my-repository diff --git a/docs/pre-commit-hooks.md b/docs/pre-commit-hooks.md index 7824e4d52be..9a0a00ba5c4 100644 --- a/docs/pre-commit-hooks.md +++ b/docs/pre-commit-hooks.md @@ -64,7 +64,7 @@ It is recommended to run the [`poetry-lock`](#poetry-lock) hook or [`poetry-chec ### Arguments The hook takes the same arguments as the poetry command. -For more information see the [export command]({{< relref "cli#export" >}}). +For more information, see the [export command]({{< relref "cli#export" >}}). The default arguments are `args: ["-f", "requirements.txt", "-o", "requirements.txt"]`, which will create/update the `requirements.txt` file in the current working directory. @@ -96,11 +96,11 @@ to install it via `pre-commit install --install-hooks -t post-checkout -t post-m ### Arguments The hook takes the same arguments as the poetry command. -For more information see the [install command]({{< relref "cli#install" >}}). +For more information, see the [install command]({{< relref "cli#install" >}}). ## Usage -For more information on how to use pre-commit please see the [official documentation](https://pre-commit.com/). +For more information on how to use pre-commit, please see the [official documentation](https://pre-commit.com/). A minimalistic `.pre-commit-config.yaml` example: diff --git a/docs/pyproject.md b/docs/pyproject.md index fc764be23cd..1d1eaf96a0f 100644 --- a/docs/pyproject.md +++ b/docs/pyproject.md @@ -96,10 +96,10 @@ More identifiers are listed at the [SPDX Open Source License Registry](https://s license = { text = "MIT" } ``` {{% note %}} -If your project is proprietary and does not use a specific licence, you can set this value as `Proprietary`. +If your project is proprietary and does not use a specific license, you can set this value as `Proprietary`. {{% /note %}} -You can also specify a license file. However, when doing this the complete license text +You can also specify a license file. However, when doing this, the complete license text will be added to the metadata and the License classifier cannot be determined automatically so that you have to add it manually. @@ -590,7 +590,7 @@ packages = [ ] ``` -If you want to restrict a package to a specific build format you can specify +If you want to restrict a package to a specific build format, you can specify it by using `format`: ```toml @@ -645,7 +645,7 @@ You can explicitly specify to Poetry that a set of globs should be ignored or in The globs specified in the exclude field identify a set of files that are not included when a package is built. `include` has priority over `exclude`. -If a VCS is being used for a package, the exclude field will be seeded with the VCS’ ignore settings (`.gitignore` for git for example). +If a VCS is being used for a package, the exclude field will be seeded with the VCS’ ignore settings (`.gitignore` for git, for example). {{% note %}} Explicitly declaring entries in `include` will negate VCS' ignore settings. @@ -806,7 +806,7 @@ poetry install -E mysql -E pgsql Any extras you don't specify will be removed. Note this behavior is different from [optional dependency groups]({{< relref "managing-dependencies#optional-groups" >}}) not -selected for install, e.g. those not specified via `install --with`. +selected for installation, e.g., those not specified via `install --with`. You can install all extras with the `--all-extras` option: @@ -913,7 +913,7 @@ See [Project plugins]({{< relref "plugins#project-plugins" >}}) for more informa to define alternative build systems to build a Python project. Poetry is compliant with PEP-517, by providing a lightweight core library, -so if you use Poetry to manage your Python project you should reference +so if you use Poetry to manage your Python project, you should reference it in the `build-system` section of the `pyproject.toml` file like so: ```toml diff --git a/docs/repositories.md b/docs/repositories.md index 80ef3ebdb6a..372abdfa215 100644 --- a/docs/repositories.md +++ b/docs/repositories.md @@ -107,7 +107,7 @@ poetry publish --build --repository foo-pub By default, if you have not configured any primary source, Poetry is configured to use the Python ecosystem's canonical package index [PyPI](https://pypi.org). -You can alter this behaviour and exclusively look up packages only from the configured +You can alter this behavior and exclusively look up packages only from the configured package sources by adding at least one primary source. {{% note %}} @@ -125,7 +125,7 @@ Package sources are a Poetry-specific feature and **not** included in [core metadata](https://packaging.python.org/en/latest/specifications/core-metadata/) produced by the poetry-core build backend. -Consequently, when a Poetry project is e.g. installed using Pip (as a normal package or in editable +Consequently, when a Poetry project is e.g., installed using Pip (as a normal package or in editable mode), package sources will be ignored and the dependencies in question downloaded from PyPI by default. @@ -366,7 +366,7 @@ implement the simple repository API as described in [PEP 503](https://peps.pytho {{% warning %}} -When using sources that distributes large wheels without providing file checksum in file URLs, +When using sources that distribute large wheels without providing file checksum in file URLs, Poetry will download each candidate wheel at least once in order to generate the checksum. This can manifest as long dependency resolution times when adding packages from this source. @@ -396,7 +396,7 @@ avoid having to download each candidate distribution, in order to determine asso is not available?* The need for this stems from the fact that Poetry's lock file is platform-agnostic. This means, in -order to resolve dependencies for a project, Poetry needs metadata for all platform specific +order to resolve dependencies for a project, Poetry needs metadata for all platform-specific distributions. And when this metadata is not readily available, downloading the distribution and inspecting it locally is the only remaining option. @@ -425,7 +425,7 @@ well. ## Publishable Repositories -Poetry treats repositories to which you publish packages as user specific and not project specific +Poetry treats repositories to which you publish packages as user-specific and not project-specific configuration unlike [package sources](#package-sources). Poetry, today, only supports the [Legacy Upload API](https://warehouse.pypa.io/api-reference/legacy.html#upload-api) when publishing your project. @@ -454,7 +454,7 @@ If you want to store your credentials for a specific repository, you can do so e poetry config http-basic.foo ``` -If you do not specify the password you will be prompted to write it. +If you do not specify the password, you will be prompted to write it. {{% note %}} @@ -515,7 +515,7 @@ where `FOO` is the name of the repository in uppercase (e.g. `PYPI`). See [Using environment variables]({{< relref "configuration#using-environment-variables" >}}) for more information on how to configure Poetry with environment variables. -If your password starts with a dash (e.g. randomly generated tokens in a CI environment), it will be parsed as a +If your password starts with a dash (e.g., randomly generated tokens in a CI environment), it will be parsed as a command line option instead of a password. You can prevent this by adding double dashes to prevent any following argument from being parsed as an option. @@ -531,7 +531,7 @@ required to set an empty password. This is supported by Poetry. poetry config http-basic.foo "" ``` -**Note:** Empty usernames are discouraged. However, Poetry will honour them if a password is configured without it. This +**Note:** Empty usernames are discouraged. However, Poetry will honor them if a password is configured without it. This is unfortunately commonplace practice, while not best practice, for private indices that use tokens. When a password is stored into the system keyring with an empty username, Poetry will use a literal `__poetry_source_empty_username__` as the username to circumvent [keyring#687](https://github.com/jaraco/keyring/pull/687). @@ -554,7 +554,7 @@ poetry config certificates.foo.client-cert /path/to/client.pem {{% note %}} The value of `certificates..cert` can be set to `false` if certificate verification is required to be skipped. This is useful for cases where a package source with self-signed certificates -are used. +is used. ```bash poetry config certificates.foo.cert false @@ -572,7 +572,7 @@ Poetry employs multiple caches for package sources in order to improve user expe requests. The first level cache is a [Cache-Control](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control) -header based cache for almost all HTTP requests. +header-based cache for almost all HTTP requests. Further, every HTTP backed package source caches metadata associated with a package once it is fetched or generated. Additionally, downloaded files (package distributions) are also cached.