Sign in to Purchase Instantly. Explore Now. Product Details About the Author. Average Review. Write a Review. Related Searches. Shocking inside stories how Zhou Yong-Kang was purged:. It is the earliest book forecasting the ruin of Zhou yongkang previous Minister of Public The Quickie. James Patterson. Mortuary Confidential. Todd Harra. Cold Fire. Dean Koontz. The Double. George Pelecanos. Michael Balkind. Fat Vampire.
Adam Rex. John McDonnell. The Man from Primrose Lane. James Renner. Lunar Park. Bret Easton Ellis. Her Mother's Secrets. Kristine Kathryn Rusch. Francine Pascal. Still Lake. Sara Brooke. The Cadillac Motel. Josh Covington. The First Affair. Emma McLaughlin. Shadows on the Sand. Gayle Roper. Final Victim.
Stephen J Cannell. Douglas Clegg. And on the Surface Die. Lou Allin. Hide Your Eyes. Alison Gaylin. The Undead Kama Sutra. Mario Acevedo. In the Night of the Heat. Blair Underwood. Darker Than Any Shadow. Tina Whittle. Beautiful Rage: The Break of Dawn. Janaya Black. Dana Marton. He Is Legend. Christopher Conlon.
You Kill Me. The Third Eye. Lois Duncan. James Roy Daley. Cory Doctorow. Burn Down the Ground. Kambri Crews. Zombie 3.
- Felicity Huffman Pleads Guilty in College Admissions Scheme!
- Calculus of Thought: Neuromorphic Logistic Regression in Cognitive Machines.
- A Continental Plate Boundary: Tectonics at South Island, New Zealand: 175 (Geophysical Monograph Series).
- The Epoch Scheme by DT Ward | NOOK Book (eBook) | Barnes & Noble®.
This in turn made it difficult for developers to publish pre-release versions of software to the Python Package Index, as even marking the package as hidden wasn't enough to keep automated tools from downloading it, and also made it harder for users to obtain the test release manually through the main PyPI web interface.
The previous interpretation also excluded post-releases from some version specifiers for no adequately justified reason. The updated interpretation is intended to make it difficult to accidentally accept a pre-release version as satisfying a dependency, while still allowing pre-release versions to be retrieved automatically when that's the only way to satisfy a dependency. The "some forward compatibility assumed" version constraint is derived from the Ruby community's "pessimistic version constraint" operator  to allow projects to take a cautious approach to forward compatibility promises, while still easily setting a minimum required version for their dependencies.
Further improvements are also planned to the handling of parallel installation of multiple versions of the same library, but these will depend on updates to the installation database definition along with improved tools for dynamic path manipulation. The trailing wildcard syntax to request prefix based version matching was added to make it possible to sensibly define compatible release clauses. Excluding date based versions caused significant problems in migrating pytz to the new metadata standards.
It also caused concerns for the OpenStack developers, as they use a date based versioning scheme and would like to be able to migrate to the new metadata standards without changing it. Version epochs are added for the same reason they are part of other versioning schemes, such as those of the Fedora and Debian Linux distributions: to allow projects to gracefully change their approach to numbering releases, without having a new release appear to have a lower version number than previous releases and without having to change the name of the project.
In particular, supporting version epochs allows a project that was previously using date based versioning to switch to semantic versioning by specifying a new version epoch.
Join Kobo & start eReading today
Direct references are added as an "escape clause" to handle messy real world situations that don't map neatly to the standard distribution model. This includes dependencies on unpublished software for internal use, as well as handling the more complex compatibility issues that may arise when wrapping third party libraries as C extensions this is of especial concern to the scientific community. Index servers are deliberately given a lot of freedom to disallow direct references, since they're intended primarily as a tool for integrators rather than publishers.
PyPI in particular is currently going through the process of eliminating dependencies on external references, as unreliable external services have the effect of slowing down installation operations, as well as reducing PyPI's own apparent reliability. Arbitrary equality is added as an "escape clause" to handle the case where someone needs to install a project which uses a non compliant version.
This operator gives a simple and effective way to still depend on them without having to "guess" at the semantics of what they mean which would be required if anything other than strict string based equality was supported. It's a fact of life that downstream integrators often need to backport upstream bug fixes to older versions. It's one of the services that gets Linux distro vendors paid, and application developers may also apply patches they need to bundled dependencies.
Historically, this practice has been invisible to cross-platform language specific distribution tools - the reported "version" in the upstream metadata is the same as for the unmodified code. This inaccuracy can then cause problems when attempting to work with a mixture of integrator provided code and unmodified upstream code, or even just attempting to identify exactly which version of the software is installed. The introduction of local version identifiers and "local version labels" into the versioning scheme, with the corresponding python.
EPOCH (chemotherapy) - Wikipedia
Furthermore, the PEP does not attempt to impose any structure on the local version labels aside from limiting the set of permitted characters and defining their ordering. This change is designed to ensure that an integrator provided version like pip 1. The plus is chosen primarily for readability of local version identifiers. The plus was chosen instead of a tilde because of the significance of the tilde in Debian's version ordering algorithm. This does not attempt to reject any version and instead tries to make something meaningful, with varying levels of success, out of whatever it is given.
It has a few simple rules but otherwise it more or less relies largely on string comparison. All possible normalization rules were weighed against whether or not they were likely to cause any ambiguity e. Finally each rule was weighed against the kinds of additional versions it allowed, how "ugly" those versions looked, how hard there were to parse both mentally and mechanically and how much additional compatibility it would bring.
The breadth of possible normalizations were kept to things that could easily be implemented as part of the parsing of the version and not pre-parsing transformations applied to the versions. This was done to limit the side effects of each transformation as simple search and replace style transforms increase the likelihood of ambiguous or "junk" versions. For an extended discussion on the various types of normalizations that were considered, please see the proof of concept for PEP within pip .
However this PEP allows its use anywhere that - is acceptable. The following changes were made to this PEP based on feedback received after the initial reference implementation was released in setuptools 8. The initial attempt at a standardised version scheme, along with the justifications for needing such a standard can be found in PEP This section provides regular expressions that can be used to test whether a version is already in that form, and if it's not, extract the various components for subsequent normalization. To test whether a version identifier is in the canonical format, you can use the following function:.
To extract the components of a version identifier, use the following regular expression as defined by the packaging project :. Skip to content. Abstract This PEP describes a scheme for identifying versions of Python software distributions, and declaring dependencies on particular versions. Version scheme Distributions are identified by a public version identifier which supports all defined version comparison operations The version scheme is used both to describe the distribution version provided by a particular distribution archive, as well as to place constraints on the version of dependencies needed in order to build or run the software.
Public version identifiers MUST be unique within a given distribution. Public version identifiers are separated into up to five segments: Epoch segment: N! Release segment: N. Note Some hard to read version identifiers are permitted by this scheme in order to better accommodate the wide range of versioning practices across existing public and private Python projects. Final releases A version identifier that consists solely of a release segment and optionally an epoch identifier is termed a "final release". The release segment consists of one or more non-negative integer values, separated by dots: N.
For example: 0. Note X. Pre-releases Some projects use an "alpha, beta, release candidate" pre-release cycle to support testing by their users prior to a final release. If used as part of a project's development cycle, these pre-releases are indicated by including a pre-release segment in the version identifier: X. YaN Alpha release X. YbN Beta release X. YrcN Release Candidate X.
Y Final release A version identifier that consists solely of a release segment and a pre-release segment is termed a "pre-release". Post-releases Some projects use post-releases to address minor errors in a final release that do not affect the distributed software for example, correcting an error in the release notes. If used as part of a project's development cycle, these post-releases are indicated by including a post-release segment in the version identifier: X. Note The use of post-releases to publish maintenance releases containing actual bug fixes is strongly discouraged.
Note Creating post-releases of pre-releases is strongly discouraged, as it makes the version identifier difficult to parse for human readers. Developmental releases Some projects make regular developmental releases, and system packagers especially for Linux distributions may wish to create early releases directly from source control which do not conflict with later project releases.
If used as part of a project's development cycle, these developmental releases are indicated by including a developmental release segment in the version identifier: X. Developmental releases are also permitted for pre-releases and post-releases: X. Version epochs If included in a version identifier, the epoch appears before all other components, separated from the release segment by an exclamation mark: E! Y Version identifier with epoch If no explicit epoch is given, the implicit epoch is 0.
Normalization In order to maintain better compatibility with existing versions there are a number of "alternative" syntaxes that MUST be taken into account when parsing versions. Case sensitivity All ascii letters should be interpreted case insensitively within a version and the normal form is lowercase. Integer Normalization All integers are interpreted via the int built in and normalize to the string form of the output.
Pre-release separators Pre-releases should allow a. Pre-release spelling Pre-releases allow the additional spellings of alpha , beta , c , pre , and preview for a , b , rc , rc , and rc respectively. Implicit pre-release number Pre releases allow omitting the numeral in which case it is implicitly assumed to be 0. Post release separators Post releases allow a. Post release spelling Post-releases allow the additional spellings of rev and r.
Implicit post release number Post releases allow omitting the numeral in which case it is implicitly assumed to be 0. Implicit post releases Post releases allow omitting the post signifier all together. Development release separators Development releases allow a. Implicit development release number Development releases allow omitting the numeral in which case it is implicitly assumed to be 0. Local version segments With a local version, in addition to the use of. Preceding v character In order to support the common version notation of v1.
Leading and Trailing Whitespace Leading and trailing whitespace must be silently ignored and removed from all normalized forms of a version. Examples of compliant version schemes The standard version scheme is designed to encompass a wide range of identification practices across public and private Python projects. Simple "major. Date based releases, using an incrementing serial within each year, skipping zero: Summary of permitted suffixes and relative ordering Note This section is intended primarily for authors of tools that automatically process distribution metadata, rather than developers of Python distributions deciding on a versioning scheme.
Version ordering across different metadata versions Metadata v1. Compatibility with other version schemes Some projects may choose to use a version scheme which requires translation in order to comply with the public version scheme defined in this PEP. Semantic versioning Semantic versioning  is a popular version identification scheme that is more prescriptive than this PEP regarding the significance of different elements of a release number.
Specific build information may also be included in local version labels. DVCS based version labels Many build tools integrate with distributed version control systems like Git and Mercurial in order to add an identifying hash to the version identifier. Identifying hash information may also be included in local version labels. Olson database versioning The pytz project inherits its versioning scheme from the corresponding Olson timezone database versioning scheme: the year followed by a lowercase character indicating the version of the database within that year.
Version specifiers A version specifier consists of a series of version clauses, separated by commas.
Version exclusion A version exclusion clause includes the version exclusion operator! Inclusive ordered comparison An inclusive ordered comparison clause includes a comparison operator and a version identifier, and will match any version where the comparison is correct based on the relative position of the candidate version and the specified version given the consistent ordering defined by the standard Version scheme. Arbitrary equality Arbitrary equality comparisons are simple string equality operations which do not take into account any of the semantic information such as zero padding or local versions.
Use of this operator is heavily discouraged and tooling MAY display a warning when it is used. Handling of pre-releases Pre-releases of any kind, including developmental releases, are implicitly excluded from all version specifiers, unless they are already present on the system, explicitly requested by the user, or if the only available version that satisfies the version specifier is a pre-release. By default, dependency resolution tools SHOULD: accept already installed pre-releases for all version specifiers accept remotely available pre-releases for version specifiers where there is no final or post release that satisfies the version specifier exclude all other pre-releases from consideration Dependency resolution tools MAY issue a warning if a pre-release is needed to satisfy a version specifier.
Dependency resolution tools SHOULD also allow users to request the following alternative behaviours: accepting pre-releases for all version specifiers excluding pre-releases for all version specifiers reporting an error or warning if a pre-release is already installed locally, or if a pre-release is the only way to satisfy a particular specifier Dependency resolution tools MAY also allow the above behaviour to be controlled on a per-distribution basis.
Direct references Some automated tools may permit the use of a direct reference as an alternative to a normal version specifier. Note This isn't quite the same as the existing VCS reference notation supported by pip. Updating the versioning specification The versioning specification may be updated with clarifications without requiring a new PEP or a change to the metadata version. This PEP however allows only a single use of each type and they must exist in a certain order. Summary of differences from PEP Moved the description of version specifiers into the versioning PEP Added the "direct reference" concept as a standard notation for direct references to resources rather than each tool needing to invent its own Added the "local version identifier" and "local version label" concepts to allow system integrators to indicate patched builds in a way that is supported by the upstream tools, as well as to allow the incorporation of build tags into the versioning of binary distributions.
Added the "compatible release" clause Added the trailing wildcard syntax for prefix based version matching and exclusion Changed the top level sort position of the. The rationale for major changes is given in the following sections. Changing the version scheme One key change in the version scheme in this PEP relative to that in PEP is to sort top level developmental releases like X.
A more opinionated description of the versioning scheme As in PEP , the primary focus is on codifying existing practices to make them more amenable to automation, rather than demanding that existing projects make non-trivial changes to their workflow. Describing version specifiers alongside the versioning scheme The main reason to even have a standardised version scheme in the first place is to make it easier to do reliable automated dependency analysis. Changing the interpretation of version specifiers The previous interpretation of version specifiers made it very easy to accidentally download a pre-release version of a dependency.
Support for date based version identifiers Excluding date based versions caused significant problems in migrating pytz to the new metadata standards.