-
Notifications
You must be signed in to change notification settings - Fork 41
[CEP 26] Identifying Packages and Channels in the conda Ecosystem #116
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 9 commits
Commits
Show all changes
68 commits
Select commit
Hold shift + click to select a range
5672f6e
Standardize names in the conda ecosystem
jaimergp b91b868
Add versions and categorise a bit better
jaimergp 64584b5
Descope versions, fix build strings
jaimergp 563d9f4
Update cep-9999.md
jaimergp 8d85088
Amend package names
jaimergp 3df5157
do not recommend whitespace in labels
jaimergp 732cf77
add backwards compatibility section
jaimergp ff68855
Merge branch 'main' into naming
beckermr e1c043f
Apply suggestions from code review
jaimergp 90c4867
Add length limits
jaimergp 1b9f46b
label -> channel
jaimergp 809aa05
Define what a channel is
jaimergp cb227fc
Restrict subdirs to alphanumeric and single dash separators
jaimergp bcd3e31
Update cep-9999.md
beckermr b2d733a
Allow plus symbols in build strings
jaimergp 3a09b36
Merge branch 'naming' of github.com:jaimergp/ceps into naming
jaimergp 10c9265
Further restrict subdirs
jaimergp 358b48f
rename
jaimergp dd0a28d
Rework channel names as base URLs
jaimergp 8f2221b
Merge branch 'main' of github.com:conda/ceps into naming
jaimergp 1185921
pre-commit
jaimergp 5e3c86c
add lang to fences
jaimergp 567ff85
add stats from anaconda.org
jaimergp 4b3a39e
pre-commit
jaimergp e81f84f
add discussion link
jaimergp b07d334
Reword abstract
jaimergp 42c33dd
Refer to RFC2119
jaimergp c2b25a6
Change table of contents a bit
jaimergp 88d58dc
Add distribution strings
jaimergp 501bfc1
clarify dist str != match spec
jaimergp ba6b09f
clarify scheme omission
jaimergp e9e6c06
Update cep-XXXX.md
jaimergp e79f5bf
pre-commit
jaimergp 73c8607
Update cep-XXXX.md
beckermr a59522f
update path component regex
jaimergp a6c119a
Merge branch 'main' into naming
beckermr c473235
refine lengths
jaimergp 5291902
add extensions
jaimergp d93720b
Merge branch 'main' into naming
beckermr a54e326
Reformat CEP document for readability
beckermr 3961b88
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] 9686874
Add additional references to comments in CEP
beckermr 21a8e3a
style: correct spacing
beckermr 8b6e3c3
update date
jaimergp 913279e
Update cep-XXXX.md
beckermr f2d5480
add cheng to authors
jaimergp 1a70702
add exception for file:// channels
jaimergp 3793b1d
reword channel names
jaimergp 14aae11
Merge branch 'naming' of github.com:jaimergp/ceps into naming
jaimergp 3f7c94f
Update cep-XXXX.md
beckermr 80a1225
bye \s
jaimergp 162c57c
Merge branch 'naming' of github.com:jaimergp/ceps into naming
jaimergp 4737ce9
Apply suggestions from code review
jaimergp de486d2
Swap dist str and filenames
jaimergp de7a36f
wrap paragraphs
jaimergp 15bcd90
Apply suggestions from code review
beckermr e9afe15
Reword channel name use in absence of scheme and authority
jaimergp 7eb2fbc
update date
jaimergp 74f7156
Update cep-XXXX.md
jaimergp 897a9a2
clarify subdir
jaimergp bcf6112
add restriction about channel names and label names wrt subdirs
jaimergp 7ae6b5b
Recommend against subdir ambiguity
jaimergp 858fb6f
Merge branch 'main' into naming
beckermr a9d809d
Update cep-XXXX.md
beckermr edfbe6e
Fix line breaks in channel base URL section
beckermr 9f824e7
add note about __anaconda_core_depends deprecation
jaimergp f629100
Merge branch 'main' of github.com:conda/ceps into naming
jaimergp 0794754
Mint as CEP 26
jaimergp File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,80 @@ | ||
| # CEP ???? - Names in conda packages and channels | ||
|
|
||
| <table> | ||
| <tr><td> Title </td><td> CEP ???? - Names in conda packages and channels </td> | ||
| <tr><td> Status </td><td> Draft </td></tr> | ||
| <tr><td> Author(s) </td><td> Jaime Rodríguez-Guerra <jaime.rogue@gmail.com> <br /> Matthew R. Becker <becker.mr@gmail.com></td></tr> | ||
| <tr><td> Created </td><td> Mar 11, 2025</td></tr> | ||
| <tr><td> Updated </td><td> Mar 11, 2025</td></tr> | ||
| <tr><td> Discussion </td><td> N/A </td></tr> | ||
| <tr><td> Implementation </td><td> N/A </td></tr> | ||
| </table> | ||
|
|
||
| ## Abstract | ||
|
|
||
| This CEP aims to standardize names and other strings used throughout the conda ecosystem. | ||
|
|
||
| ## Specification | ||
|
|
||
| ### Artifacts | ||
|
|
||
| The conda ecosystem distinguishes between two types of packages: | ||
|
|
||
| - Distributable package names: represented by a concrete, downloadable, extractable conda artifact. | ||
| - Virtual package names: not backed by any physical artifact. They only exist on the client side. | ||
|
|
||
| ### Package names | ||
|
|
||
| A distributable package name MUST only consist of lowercase ASCII letters, numbers, hyphens, periods and underscores. It MUST start with a letter, a number, or a single underscore. It MUST NOT include two consecutive separators (hyphen, period, underscore). | ||
|
|
||
| Virtual package names MUST only consist of lowercase ASCII letters, numbers, hyphens, periods and underscores. They MUST NOT use two consecutive separators, with one exception: they MUST start with two underscores. | ||
|
|
||
| This means that distributable package names MUST match the following case-insensitive regex: `^(([a-z0-9])|([a-z0-9_](?!_)))[._-]?([a-z0-9]+(\.|-|_|$))*$`. | ||
|
|
||
| Virtual package names MUST follow this other regex: `^__[a-z0-9][._-]?([a-z0-9]+(\.|-|_|$))*$`. | ||
|
|
||
| ### Version strings | ||
|
|
||
| Version strings MUST only consist of digits, periods, lowercase ASCII letters, underscores, plus | ||
| signs and exclamation marks. Additional rules apply but are out of scope in this CEP and will be | ||
| discussed separately. | ||
|
|
||
| ### Build strings | ||
|
|
||
| Builds strings MUST only consist of ASCII letters, numbers, periods, and underscores. They MUST match this regex `^[a-zA-Z0-9_\.]+$`. | ||
|
beckermr marked this conversation as resolved.
Outdated
|
||
|
|
||
| ### Filenames | ||
|
|
||
| Regular conda artifacts MUST be named following this scheme: | ||
|
|
||
| ``` | ||
| <package name>-<version string>-<build string>.<extension> | ||
| ``` | ||
|
|
||
| Virtual conda packages SHOULD NOT need filename standardization. | ||
|
beckermr marked this conversation as resolved.
Outdated
|
||
|
|
||
| ### Channels | ||
|
|
||
| #### Channel names | ||
|
|
||
| Channel names MUST only consist of lowercase ASCII letters, numbers, hyphens, periods and underscores. They MUST start and end with a letter or a digit. In other words, they MUST match this regex: `^[a-z0-9]+((-|_|.)[a-z0-9]+)*$`. | ||
|
jaimergp marked this conversation as resolved.
Outdated
|
||
|
|
||
| #### Label names | ||
|
|
||
| Channel label names MUST only consist of ASCII letters, digits, underscores, hyphens, forward slashes, periods, colons and whitespace. They MUST start with a letter. They MUST match this regex: `^[a-zA-Z][0-9a-zA-Z_\-\.\/:\s]*`. Even if allowed, label names SHOULD NOT contain any whitespace. | ||
|
|
||
| The label `NOLABEL` is reserved and MUST only be used for conda packages which have no other labels. In other words, in the space of labels, the empty set is represented by the label `NOLABEL`. | ||
|
beckermr marked this conversation as resolved.
Outdated
|
||
|
|
||
| #### Subdir names | ||
|
|
||
| Platform or subdir names MUST only consist of lowercase ASCII letters, numbers, hyphens, underscores and periods. They MUST start and end with a letter or a number. They MUST match this regex: `^[a-z0-9]+((-|_|.)[a-z0-9]+)*$`. | ||
|
|
||
| ## Backwards compatibility | ||
|
|
||
| The conda channel, subdir, label, and package name regexes are backwards compatible with the current `conda` implementation (25.3) and all existing packages on the `defaults` and `conda-forge` channels, except the `__anaconda_core_depends` package on the `defaults` channel. | ||
|
|
||
| The regex for labels above was pulled from an anaconda.org error message describing the set of valid labels. Finally, anaconda.org usernames/channel names are case insensitive and cannot begin with an underscore. | ||
|
|
||
| ## Copyright | ||
|
|
||
| All CEPs are explicitly [CC0 1.0 Universal](https://creativecommons.org/publicdomain/zero/1.0/). | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.