Ξυ³h&)%%ρ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ(c) Colin Woodbury, 2015 - 2022BSD3"Colin Woodbury  Safe-Inferred";=?Χά%KΕversionsA synonym for the more verbose  megaparsec error type.versionsνDevelopers use a number of symbols to seperate groups of digits/letters in their version numbers. These are:&A colon (:). Often denotes an "epoch". A hyphen (-).ΕA plus (+). Stop using this outside of metadata if you are. Example:  10.2+0.93+1-1.An underscore (_). Stop using this if you are.versionsA (Complex) Mess. This is a  descriptiveΡ parser, based on examples of stupidly crafted version numbers used in the wild.ΫGroups of letters/numbers, separated by a period, can be further separated by the symbols _-+:Some 6 values have a shape that is tantalizingly close to a  . Example: 1.6.0a+2014+m872b87e73dfb-1Ο. For values like these, we can extract the semver-compatible values out with =, etc..Not guaranteed to have well-defined ordering (Ord:) behaviour, but so far internal tests show consistency. =Γ, etc., are used internally where appropriate to enhance accuracy. versions"Possible values of a section of a ο. A numeric value is extracted if it could be, alongside the original text it came from. This preserves both . and pretty-print behaviour for versions like 1.003.0. versionsA nice numeric value. versions A numeric value preceeded by an r, indicating a revision. versionsAnything else. versions.A (General) Version. Not quite as ideal as a =, but has some internal consistancy from version to version.Generally conforms to the a.b.c-p& pattern, and may optionally have an epoch and metadata2. Epochs are prefixes marked by a colon, like in 1:2.3.4. Metadata is prefixed by +;, and like SemVer must appear after the "prerelease" (the -p). Examples of Version that are not SemVer': 0.25-2, 8.u51-1, 20150826-1, 1:2.3.4versionsπA PVP version number specific to the Haskell ecosystem. Like SemVer this is a prescriptive scheme, and follows  https://pvp.haskell.org/ the PVP spec.5Legal PVP values are of the form: MAJOR(.MAJOR.MINOR) Example: 1.2.3 Extra Rules:  Each component must be a number.μOnly the first MAJOR component is actually necessary. Otherwise, there can be any number of components.  1.2.3.4.5.6.7 is legal.²Unlike SemVer there are two MAJOR components, and both indicate a breaking change. The spec otherwise designates no special meaning to components past the MINOR position.versionsΡA logical unit of a version number. Can consist of multiple letters and numbers.versionsαA single unit of a Version. May be digits or a string of characters. Groups of these are called ?s, and are the identifiers separated by periods in the source.versionsΛAn (Ideal) version number that conforms to Semantic Versioning. This is a  prescriptive0 parser, meaning it follows the SemVer standard.-like information about themselves. For instances other than # itself however, these optics may notΰ yield anything, depending on the actual value being traversed. Hence, the optics here are all  Traversal`s. Consider the    1.2.3.4.58. We can imagine wanting to increment the minor number: +» "1.2.3.4.5" & minor %~ (+ 1) "1.3.3.4.5" -But of course something like this would fail: +» "1.e.3.4.5" & minor %~ (+ 1) "1.e.3.4.5" However! +» "1.e.3.4.5" & major %~ (+ 1) "2.e.3.4.5" "versions MAJOR.minor.patch-prerel+meta#versions major.MINOR.patch-prerel+meta$versions major.minor.PATCH-prerel+meta%versions major.minor.patch-PREREL+meta&versions major.minor.patch-prerel+META'versions(A Natural Transformation into an proper .(versions:Simple Traversals compatible with both lens and microlens.)versions6Simple Lenses compatible with both lens and microlens.*versionsτA top-level Versioning type. Acts as a wrapper for the more specific types. This allows each subtype to have its own parser, and for said parsers to be composed. This is useful for specifying custom behaviour for when a certain parser fails..versionsShort-hand for detecting a ./versionsShort-hand for detecting a  .0versionsShort-hand for detecting a .Žversions Convert a  to a  .versions Convert a   to a .versionsΒSpecial logic for when semver-like values can be extracted from a (. This avoids having to "downcast" the  into a Κ before comparing, and in some cases can offer better comparison results.1versions,Traverse some Text for its inner versioning. ΰ» "1.2.3" & _Versioning . _Ideal . patch %~ (+ 1) -- or just: "1.2.3" & patch %~ (+ 1) "1.2.4" 2versions(Traverse some Text for its inner SemVer.3versions)Traverse some Text for its inner Version.4versions&Traverse some Text for its inner Mess.5versionsPossibly extract a  from a *.6versionsPossibly extract a   from a *.7versionsPossibly extract a  from a *.8versionsSmart constructor for a  made of digits.9versionsSmart constructor for a  made of letters.:versions-Possibly traverse the inner digit value of a .;versions&Possibly traverse the inner text of a .<versionsA  's inner epoch ‘.’versionsA total extraction of the “ from an  .=versions/Try to extract the "major" version number from , as if it were a .>versions/Try to extract the "minor" version number from , as if it were a .?versions/Try to extract the "patch" version number from , as if it were a .@versionsOkay, fine, say ?& couldn't find a nice value. But some θes have a "proper" patch-plus-release-candidate value in their patch position, which is parsable as a . Example: 1.6.0a+2014+m872b87e73dfb-1 We should be able to extract 0a safely.AversionsParse a piece of “ into either an (Ideal) , a (General)  , or a (Complex) .BversionsParse a *>. Assumes the version number is the last token in the string.Cversions!Parse a (Ideal) Semantic Version.DversionsInternal megaparsec parser of C.”versionsΔParse a group of digits, which can't be lead by a 0, unless it is 0.•versions Handling 0Ρ is a bit tricky. We can't allow runs of zeros in a chunk, since a version like 1.000.1 would parse as 1.0.1.–versionsSame as —:, but don't allow hyphens. Intended for the main body of  .EversionsParse a (Haskell) , as defined above.FversionsInternal megaparsec parser of E.GversionsParse a (General)  , as defined above.HversionsInternal megaparsec parser of G.IversionsParse a (Complex) , as defined above.JversionsInternal megaparsec parser of I.KversionsΑConvert any parsed Versioning type to its textual representation.Lversions Convert a $ back to its textual representation.Mversions Convert a $ back to its textual representation.Nversions Convert a  $ back to its textual representation.Oversions Convert a $ back to its textual representation.˜versions Analogous to ™ and šλ. If a given Foldable is empty, a default value is returned. Else, a function is applied to that Foldable.›versionsFlip an Ordering.Tversions2Build metadata does not affect version precedence.Uversions>Two SemVers are equal if all fields except metadata are equal.\versionsΝCustomized. As in SemVer, metadata is ignored for the purpose of comparison.bversionsComparison of Ideals is always well defined.If comparison of General&s is well-defined, then comparison of Ideal and General9 is well-defined, as there exists a perfect mapping from Ideal to General.If comparison of Complex'es is well-defined, then comparison of General and ComplexΒ is well defined for the same reason. This implies comparison of Ideal and Complex is also well-defined.Π  !%"#$&'()*-+,./0123456789:;<=>?@ABCDEFGHIJKLMNOΠ*-+,./0  =>?@ 89ACEGIBDFHJKLMNO)(!%"#$&'1234567<:;œ       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ž‘’£€%versions-5.0.4-1XvoZFeYNyOLZgzlBez7Td Data.Versions'megaparsec-9.2.2-Bh5JbmGMk2pDR4NazpOEEQText.Megaparsec.ErrorerrorBundlePretty ParsingErrorVSepVColonVHyphenVPlusVUnderMessMChunkMDigitMRevMPlainVersion_vEpoch_vChunks_vRel_vMetaPVP _pComponentsVChunkVUnitDigitsStrSemVer_svMajor_svMinor_svPatch _svPreRel_svMetaSemanticmajorminorpatchreleasemetasemantic Traversal'Lens' VersioningIdealGeneralComplexisIdeal isGeneral isComplex _Versioning_SemVer_Version_Mess_Ideal_General_Complexdigitsstr_Digits_Strepoch messMajor messMinor messPatchmessPatchChunk versioning versioning'semversemver'pvppvp'versionversion'messmess'prettyV prettySemVer prettyPVP prettyVer prettyMess $fMonoidVUnit$fSemigroupVUnit$fMonoidSemVer$fSemigroupSemVer $fOrdSemVer $fEqSemVer$fSemanticSemVer$fSemanticText $fSemanticPVP $fMonoidPVP$fSemigroupPVP$fSemanticVersion $fOrdVersion$fSemigroupVersion $fOrdMChunk$fSemanticMess $fOrdMess$fSemanticVersioning$fOrdVersioning$fEqVersioning$fShowVersioning$fGenericVersioning$fNFDataVersioning$fHashableVersioning$fEqMess $fShowMess $fGenericMess $fNFDataMess$fHashableMess$fEqVSep $fShowVSep $fGenericVSep $fNFDataVSep$fHashableVSep $fEqMChunk $fShowMChunk$fGenericMChunk$fNFDataMChunk$fHashableMChunk $fEqVersion $fShowVersion$fGenericVersion$fNFDataVersion$fHashableVersion$fEqPVP$fOrdPVP $fShowPVP $fGenericPVP $fNFDataPVP $fHashablePVP $fShowSemVer$fGenericSemVer$fNFDataSemVer$fHashableSemVer $fEqVUnit $fShowVUnit $fReadVUnit $fOrdVUnit$fGenericVUnit $fNFDataVUnit$fHashableVUnitghc-prim GHC.ClassesOrdvFromSmFromV semverAndMess GHC.TypesWord mchunkText text-1.2.5.0Data.Text.InternalTextdigitsP chunkWithsunit'sunitfoldablebase Data.Maybemaybe Data.Eithereitheropposite