CloudRepo
Create a PyPI group. There is no pattern to write: the group checks your hosted repository for each name.
Included on every plan.
pip's own documentation calls --extra-index-url unsafe for private
packages. A PyPI group puts your hosted repository and PyPI behind one index URL, so pip needs only that one.
PyPI groups are in early access.
Using the --extra-index-url option to search for packages which are not in the main repository (for example, private packages) is unsafe. This is a class of security issue known as dependency confusion: an attacker can publish a package with the same name to a public index, which may then be chosen instead of your private package.
With a PyPI group, pip reads one index URL, the group's, and gets your packages and PyPI's from it.
pip reads the group at its address with /simple/ added, and gets your packages and PyPI's from it.
Group repository in the glossaryA group takes your hosted Python repositories and PyPI proxy repositories, up to 10 in all.
PyPI groups are in early access, on every plan. npm groups are in early access too, for your hosted npm repositories. Adding the public npm registry to a group is coming soon.
Two steps. Replace your-org and python-group with your own.
In the admin portal, open Create Repository, choose Python and set Kind to Group. Add your hosted Python repository and a PyPI proxy repository to it. See Creating a Repository for the details.
pip reads your repository token from ~/.netrc, so no command or URL carries it. The Python guide shows the entry.
# Your token stays in ~/.netrc, never in the URL.
export PIP_INDEX_URL="https://your-org.mycloudrepo.io/repositories/python-group/simple/"
pip install my-package requests What JFrog and Sonatype document for the same problem, in their own words, with the page and the day we read it.
Create a PyPI group. There is no pattern to write: the group checks your hosted repository for each name.
Included on every plan.
JFrog documents an Excludes Pattern you write on a virtual repository, listing your own package names.
specify an Excludes Pattern with your organization's groupID. In this way, any attempt to access your internal artifact from a remote repository would be rejected.
Virtual Repositories, JFrog documentation, as of .
JFrog lists Curation among its optional add-ons.
JFrog pricing, archived, as of .
Sonatype documents routing rules you set on a proxy repository.
Routing Rules are used to limit access to remote proxies to the namespaces for the components needed from that repository.
Routing Rules, Sonatype documentation, as of .
Sonatype also sells Repository Firewall.
Repository Firewall offers protection from dependency confusion
Namespace Confusion Protection, Sonatype documentation, as of .
Firewall Pro starts at $4,800 a year, for repositories other than Nexus Repository. For Nexus Repository, Sonatype quotes a price.
Sonatype pricing, archived, as of .
Start a trial, create a PyPI group, and install your packages and PyPI's from one URL.
No credit card required. Cancel anytime.