edify 0.2.2__tar.gz → 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- edify-1.0.0/.gitignore +88 -0
- edify-1.0.0/AUTHORS.rst +6 -0
- edify-1.0.0/CHANGELOG.rst +133 -0
- edify-1.0.0/CONTRIBUTING.rst +87 -0
- edify-1.0.0/LICENSE +21 -0
- edify-1.0.0/PKG-INFO +196 -0
- edify-1.0.0/README.rst +152 -0
- edify-1.0.0/docs/_ext/__init__.py +0 -0
- edify-1.0.0/docs/_ext/autolink.py +136 -0
- edify-1.0.0/docs/_ext/codelinks.py +106 -0
- edify-1.0.0/docs/_ext/playground.py +343 -0
- edify-1.0.0/docs/_ext/signatures.py +58 -0
- edify-1.0.0/docs/_static/.gitkeep +0 -0
- edify-1.0.0/docs/_theme/edify/api.html +60 -0
- edify-1.0.0/docs/_theme/edify/guide.html +19 -0
- edify-1.0.0/docs/_theme/edify/home.html +101 -0
- edify-1.0.0/docs/_theme/edify/layout.html +78 -0
- edify-1.0.0/docs/_theme/edify/library.html +19 -0
- edify-1.0.0/docs/_theme/edify/page.html +19 -0
- edify-1.0.0/docs/_theme/edify/static/css/api.css +123 -0
- edify-1.0.0/docs/_theme/edify/static/css/base.css +192 -0
- edify-1.0.0/docs/_theme/edify/static/css/content.css +129 -0
- edify-1.0.0/docs/_theme/edify/static/css/home.css +84 -0
- edify-1.0.0/docs/_theme/edify/static/css/playground.css +130 -0
- edify-1.0.0/docs/_theme/edify/static/css/syntax.css +52 -0
- edify-1.0.0/docs/_theme/edify/static/js/apipill.js +17 -0
- edify-1.0.0/docs/_theme/edify/static/js/edify-api.js +1 -0
- edify-1.0.0/docs/_theme/edify/static/js/links.js +9 -0
- edify-1.0.0/docs/_theme/edify/static/js/navscroll.js +17 -0
- edify-1.0.0/docs/_theme/edify/static/js/playground.js +262 -0
- edify-1.0.0/docs/_theme/edify/static/js/pyodide-runtime.js +115 -0
- edify-1.0.0/docs/_theme/edify/static/js/theme-toggle.js +10 -0
- edify-1.0.0/docs/_theme/edify/theme.conf +4 -0
- edify-1.0.0/docs/_theme/edify/wide.html +14 -0
- edify-1.0.0/docs/api/atoms.rst +1857 -0
- edify-1.0.0/docs/api/builder/anchors.rst +9 -0
- edify-1.0.0/docs/api/builder/assertions.rst +13 -0
- edify-1.0.0/docs/api/builder/captures.rst +13 -0
- edify-1.0.0/docs/api/builder/characters.rst +20 -0
- edify-1.0.0/docs/api/builder/classes.rst +40 -0
- edify-1.0.0/docs/api/builder/composition.rst +36 -0
- edify-1.0.0/docs/api/builder/flags.rst +17 -0
- edify-1.0.0/docs/api/builder/groups.rst +13 -0
- edify-1.0.0/docs/api/builder/index.rst +68 -0
- edify-1.0.0/docs/api/builder/matching.rst +16 -0
- edify-1.0.0/docs/api/builder/output.rst +9 -0
- edify-1.0.0/docs/api/builder/quantifiers.rst +28 -0
- edify-1.0.0/docs/api/constants.rst +199 -0
- edify-1.0.0/docs/api/errors.rst +176 -0
- edify-1.0.0/docs/api/factories.rst +49 -0
- edify-1.0.0/docs/api/index.rst +79 -0
- edify-1.0.0/docs/api/integrations.rst +52 -0
- edify-1.0.0/docs/api/introspection.rst +14 -0
- edify-1.0.0/docs/api/library/address.rst +1260 -0
- edify-1.0.0/docs/api/library/api.rst +592 -0
- edify-1.0.0/docs/api/library/auth.rst +604 -0
- edify-1.0.0/docs/api/library/color.rst +304 -0
- edify-1.0.0/docs/api/library/contact.rst +682 -0
- edify-1.0.0/docs/api/library/data.rst +565 -0
- edify-1.0.0/docs/api/library/document.rst +338 -0
- edify-1.0.0/docs/api/library/financial.rst +253 -0
- edify-1.0.0/docs/api/library/geo.rst +536 -0
- edify-1.0.0/docs/api/library/grammar.rst +216 -0
- edify-1.0.0/docs/api/library/identifier.rst +825 -0
- edify-1.0.0/docs/api/library/index.rst +121 -0
- edify-1.0.0/docs/api/library/media.rst +0 -0
- edify-1.0.0/docs/api/library/medical.rst +169 -0
- edify-1.0.0/docs/api/library/numeric.rst +363 -0
- edify-1.0.0/docs/api/library/product.rst +96 -0
- edify-1.0.0/docs/api/library/publishing.rst +207 -0
- edify-1.0.0/docs/api/library/security.rst +0 -0
- edify-1.0.0/docs/api/library/software.rst +747 -0
- edify-1.0.0/docs/api/library/temporal.rst +594 -0
- edify-1.0.0/docs/api/library/text.rst +0 -0
- edify-1.0.0/docs/api/library/transport.rst +129 -0
- edify-1.0.0/docs/api/library/web.rst +546 -0
- edify-1.0.0/docs/api/results.rst +25 -0
- edify-1.0.0/docs/api/serialization.rst +35 -0
- edify-1.0.0/docs/api/testing.rst +29 -0
- edify-1.0.0/docs/api/types.rst +93 -0
- edify-1.0.0/docs/conf.py +76 -0
- edify-1.0.0/docs/deprecation-policy.rst +49 -0
- edify-1.0.0/docs/guide/atoms/datetime.rst +153 -0
- edify-1.0.0/docs/guide/atoms/encodings.rst +136 -0
- edify-1.0.0/docs/guide/atoms/finance.rst +88 -0
- edify-1.0.0/docs/guide/atoms/grouping.rst +88 -0
- edify-1.0.0/docs/guide/atoms/index.rst +349 -0
- edify-1.0.0/docs/guide/atoms/network.rst +180 -0
- edify-1.0.0/docs/guide/atoms/numbers.rst +160 -0
- edify-1.0.0/docs/guide/atoms/text.rst +196 -0
- edify-1.0.0/docs/guide/atoms/web.rst +111 -0
- edify-1.0.0/docs/guide/beyond/composing.rst +221 -0
- edify-1.0.0/docs/guide/beyond/errors.rst +193 -0
- edify-1.0.0/docs/guide/beyond/from-regex.rst +174 -0
- edify-1.0.0/docs/guide/beyond/index.rst +26 -0
- edify-1.0.0/docs/guide/beyond/integrations.rst +208 -0
- edify-1.0.0/docs/guide/beyond/matching.rst +292 -0
- edify-1.0.0/docs/guide/beyond/seeing.rst +252 -0
- edify-1.0.0/docs/guide/beyond/serialization.rst +171 -0
- edify-1.0.0/docs/guide/beyond/testing.rst +175 -0
- edify-1.0.0/docs/guide/builder/anchors.rst +193 -0
- edify-1.0.0/docs/guide/builder/captures.rst +247 -0
- edify-1.0.0/docs/guide/builder/characters.rst +266 -0
- edify-1.0.0/docs/guide/builder/flags.rst +236 -0
- edify-1.0.0/docs/guide/builder/groups.rst +223 -0
- edify-1.0.0/docs/guide/builder/index.rst +27 -0
- edify-1.0.0/docs/guide/builder/lookaround.rst +235 -0
- edify-1.0.0/docs/guide/builder/quantifiers.rst +250 -0
- edify-1.0.0/docs/guide/index.rst +79 -0
- edify-1.0.0/docs/guide/practice/debugging.rst +203 -0
- edify-1.0.0/docs/guide/practice/index.rst +21 -0
- edify-1.0.0/docs/guide/practice/performance.rst +166 -0
- edify-1.0.0/docs/guide/practice/recipes.rst +192 -0
- edify-1.0.0/docs/guide/practice/unicode.rst +229 -0
- edify-1.0.0/docs/guide/start/getting-started.rst +151 -0
- edify-1.0.0/docs/guide/start/index.rst +15 -0
- edify-1.0.0/docs/guide/start/thinking-in-edify.rst +182 -0
- edify-1.0.0/docs/index.rst +25 -0
- edify-1.0.0/docs/library/address/cidr.rst +51 -0
- edify-1.0.0/docs/library/address/domain.rst +59 -0
- edify-1.0.0/docs/library/address/hostname.rst +61 -0
- edify-1.0.0/docs/library/address/index.rst +59 -0
- edify-1.0.0/docs/library/address/ip.rst +50 -0
- edify-1.0.0/docs/library/address/ipv4.rst +57 -0
- edify-1.0.0/docs/library/address/ipv6.rst +136 -0
- edify-1.0.0/docs/library/address/path.rst +49 -0
- edify-1.0.0/docs/library/address/port.rst +59 -0
- edify-1.0.0/docs/library/address/ptr.rst +42 -0
- edify-1.0.0/docs/library/address/socket.rst +56 -0
- edify-1.0.0/docs/library/address/subdomain.rst +58 -0
- edify-1.0.0/docs/library/address/subnet.rst +50 -0
- edify-1.0.0/docs/library/address/tld.rst +56 -0
- edify-1.0.0/docs/library/address/uri.rst +58 -0
- edify-1.0.0/docs/library/address/url.rst +59 -0
- edify-1.0.0/docs/library/address/zip_code.rst +42 -0
- edify-1.0.0/docs/library/api/atom.rst +46 -0
- edify-1.0.0/docs/library/api/graphql.rst +61 -0
- edify-1.0.0/docs/library/api/hal.rst +60 -0
- edify-1.0.0/docs/library/api/index.rst +57 -0
- edify-1.0.0/docs/library/api/jsonapi.rst +61 -0
- edify-1.0.0/docs/library/api/oauth.rst +61 -0
- edify-1.0.0/docs/library/api/openapi.rst +61 -0
- edify-1.0.0/docs/library/api/openid.rst +60 -0
- edify-1.0.0/docs/library/api/rss.rst +44 -0
- edify-1.0.0/docs/library/api/saml.rst +58 -0
- edify-1.0.0/docs/library/api/soap.rst +57 -0
- edify-1.0.0/docs/library/api/swagger.rst +46 -0
- edify-1.0.0/docs/library/api/webhook.rst +48 -0
- edify-1.0.0/docs/library/auth/apikey.rst +61 -0
- edify-1.0.0/docs/library/auth/bearer.rst +45 -0
- edify-1.0.0/docs/library/auth/challenge.rst +51 -0
- edify-1.0.0/docs/library/auth/csrf.rst +58 -0
- edify-1.0.0/docs/library/auth/hmac.rst +58 -0
- edify-1.0.0/docs/library/auth/index.rst +67 -0
- edify-1.0.0/docs/library/auth/jwt.rst +61 -0
- edify-1.0.0/docs/library/auth/mfa.rst +47 -0
- edify-1.0.0/docs/library/auth/mnemonic.rst +58 -0
- edify-1.0.0/docs/library/auth/otp.rst +60 -0
- edify-1.0.0/docs/library/auth/passkey.rst +51 -0
- edify-1.0.0/docs/library/auth/password.rst +63 -0
- edify-1.0.0/docs/library/auth/pin.rst +43 -0
- edify-1.0.0/docs/library/auth/refresh.rst +56 -0
- edify-1.0.0/docs/library/auth/secret.rst +43 -0
- edify-1.0.0/docs/library/auth/session.rst +60 -0
- edify-1.0.0/docs/library/auth/signing.rst +56 -0
- edify-1.0.0/docs/library/auth/sso.rst +54 -0
- edify-1.0.0/docs/library/auth/token.rst +59 -0
- edify-1.0.0/docs/library/auth/webauthn.rst +56 -0
- edify-1.0.0/docs/library/color/color.rst +61 -0
- edify-1.0.0/docs/library/color/filter.rst +58 -0
- edify-1.0.0/docs/library/color/gradient.rst +56 -0
- edify-1.0.0/docs/library/color/index.rst +36 -0
- edify-1.0.0/docs/library/color/palette.rst +55 -0
- edify-1.0.0/docs/library/color/swatch.rst +40 -0
- edify-1.0.0/docs/library/contact/address.rst +45 -0
- edify-1.0.0/docs/library/contact/email.rst +57 -0
- edify-1.0.0/docs/library/contact/email_rfc_5322.rst +57 -0
- edify-1.0.0/docs/library/contact/fax.rst +39 -0
- edify-1.0.0/docs/library/contact/handle.rst +53 -0
- edify-1.0.0/docs/library/contact/index.rst +44 -0
- edify-1.0.0/docs/library/contact/pager.rst +36 -0
- edify-1.0.0/docs/library/contact/phone.rst +59 -0
- edify-1.0.0/docs/library/contact/username.rst +61 -0
- edify-1.0.0/docs/library/data/avro.rst +43 -0
- edify-1.0.0/docs/library/data/csv.rst +62 -0
- edify-1.0.0/docs/library/data/hdf5.rst +43 -0
- edify-1.0.0/docs/library/data/html.rst +57 -0
- edify-1.0.0/docs/library/data/index.rst +62 -0
- edify-1.0.0/docs/library/data/ini.rst +57 -0
- edify-1.0.0/docs/library/data/json.rst +66 -0
- edify-1.0.0/docs/library/data/msgpack.rst +58 -0
- edify-1.0.0/docs/library/data/orc.rst +37 -0
- edify-1.0.0/docs/library/data/parquet.rst +45 -0
- edify-1.0.0/docs/library/data/protobuf.rst +59 -0
- edify-1.0.0/docs/library/data/toml.rst +59 -0
- edify-1.0.0/docs/library/data/tsv.rst +58 -0
- edify-1.0.0/docs/library/data/xml.rst +61 -0
- edify-1.0.0/docs/library/data/yaml.rst +64 -0
- edify-1.0.0/docs/library/document/docx.rst +42 -0
- edify-1.0.0/docs/library/document/epub.rst +35 -0
- edify-1.0.0/docs/library/document/index.rst +54 -0
- edify-1.0.0/docs/library/document/mobi.rst +43 -0
- edify-1.0.0/docs/library/document/odt.rst +40 -0
- edify-1.0.0/docs/library/document/pdf.rst +44 -0
- edify-1.0.0/docs/library/document/pptx.rst +33 -0
- edify-1.0.0/docs/library/document/readme.rst +47 -0
- edify-1.0.0/docs/library/document/rtf.rst +38 -0
- edify-1.0.0/docs/library/document/svg.rst +40 -0
- edify-1.0.0/docs/library/document/tex.rst +42 -0
- edify-1.0.0/docs/library/document/xlsx.rst +36 -0
- edify-1.0.0/docs/library/financial/card.rst +42 -0
- edify-1.0.0/docs/library/financial/crypto.rst +42 -0
- edify-1.0.0/docs/library/financial/currency.rst +39 -0
- edify-1.0.0/docs/library/financial/index.rst +46 -0
- edify-1.0.0/docs/library/financial/routing.rst +38 -0
- edify-1.0.0/docs/library/financial/sortcode.rst +39 -0
- edify-1.0.0/docs/library/financial/vat.rst +41 -0
- edify-1.0.0/docs/library/financial/wallet.rst +51 -0
- edify-1.0.0/docs/library/geo/altitude.rst +40 -0
- edify-1.0.0/docs/library/geo/bearing.rst +42 -0
- edify-1.0.0/docs/library/geo/coordinate.rst +54 -0
- edify-1.0.0/docs/library/geo/geohash.rst +42 -0
- edify-1.0.0/docs/library/geo/index.rst +44 -0
- edify-1.0.0/docs/library/geo/mgrs.rst +43 -0
- edify-1.0.0/docs/library/geo/place.rst +42 -0
- edify-1.0.0/docs/library/geo/plus.rst +51 -0
- edify-1.0.0/docs/library/geo/postal.rst +44 -0
- edify-1.0.0/docs/library/grammar/abnf.rst +42 -0
- edify-1.0.0/docs/library/grammar/antlr.rst +40 -0
- edify-1.0.0/docs/library/grammar/bnf.rst +42 -0
- edify-1.0.0/docs/library/grammar/ebnf.rst +41 -0
- edify-1.0.0/docs/library/grammar/index.rst +42 -0
- edify-1.0.0/docs/library/grammar/peg.rst +41 -0
- edify-1.0.0/docs/library/grammar/pest.rst +43 -0
- edify-1.0.0/docs/library/identifier/arn.rst +43 -0
- edify-1.0.0/docs/library/identifier/asin.rst +38 -0
- edify-1.0.0/docs/library/identifier/bic.rst +43 -0
- edify-1.0.0/docs/library/identifier/cusip.rst +38 -0
- edify-1.0.0/docs/library/identifier/did.rst +42 -0
- edify-1.0.0/docs/library/identifier/ein.rst +42 -0
- edify-1.0.0/docs/library/identifier/guid.rst +48 -0
- edify-1.0.0/docs/library/identifier/iata.rst +41 -0
- edify-1.0.0/docs/library/identifier/iban.rst +44 -0
- edify-1.0.0/docs/library/identifier/icao.rst +41 -0
- edify-1.0.0/docs/library/identifier/iccid.rst +38 -0
- edify-1.0.0/docs/library/identifier/imei.rst +38 -0
- edify-1.0.0/docs/library/identifier/imo.rst +39 -0
- edify-1.0.0/docs/library/identifier/index.rst +87 -0
- edify-1.0.0/docs/library/identifier/isin.rst +41 -0
- edify-1.0.0/docs/library/identifier/itin.rst +51 -0
- edify-1.0.0/docs/library/identifier/lei.rst +40 -0
- edify-1.0.0/docs/library/identifier/mac.rst +40 -0
- edify-1.0.0/docs/library/identifier/meid.rst +37 -0
- edify-1.0.0/docs/library/identifier/mmsi.rst +39 -0
- edify-1.0.0/docs/library/identifier/orcid.rst +40 -0
- edify-1.0.0/docs/library/identifier/sedol.rst +38 -0
- edify-1.0.0/docs/library/identifier/sku.rst +41 -0
- edify-1.0.0/docs/library/identifier/ssn.rst +54 -0
- edify-1.0.0/docs/library/identifier/tin.rst +40 -0
- edify-1.0.0/docs/library/identifier/uuid.rst +53 -0
- edify-1.0.0/docs/library/identifier/vin.rst +53 -0
- edify-1.0.0/docs/library/index.rst +78 -0
- edify-1.0.0/docs/library/media/charset.rst +42 -0
- edify-1.0.0/docs/library/media/codec.rst +42 -0
- edify-1.0.0/docs/library/media/encoding.rst +55 -0
- edify-1.0.0/docs/library/media/extension.rst +40 -0
- edify-1.0.0/docs/library/media/favicon.rst +39 -0
- edify-1.0.0/docs/library/media/filename.rst +46 -0
- edify-1.0.0/docs/library/media/glob.rst +42 -0
- edify-1.0.0/docs/library/media/index.rst +49 -0
- edify-1.0.0/docs/library/media/locale.rst +55 -0
- edify-1.0.0/docs/library/media/mimetype.rst +43 -0
- edify-1.0.0/docs/library/media/regex.rst +43 -0
- edify-1.0.0/docs/library/media/shebang.rst +42 -0
- edify-1.0.0/docs/library/medical/blood.rst +41 -0
- edify-1.0.0/docs/library/medical/dicom.rst +40 -0
- edify-1.0.0/docs/library/medical/dosage.rst +52 -0
- edify-1.0.0/docs/library/medical/index.rst +37 -0
- edify-1.0.0/docs/library/medical/medical.rst +50 -0
- edify-1.0.0/docs/library/numeric/fraction.rst +53 -0
- edify-1.0.0/docs/library/numeric/hash.rst +54 -0
- edify-1.0.0/docs/library/numeric/index.rst +47 -0
- edify-1.0.0/docs/library/numeric/integer.rst +43 -0
- edify-1.0.0/docs/library/numeric/natural.rst +51 -0
- edify-1.0.0/docs/library/numeric/number.rst +57 -0
- edify-1.0.0/docs/library/numeric/ordinal.rst +57 -0
- edify-1.0.0/docs/library/numeric/percentage.rst +55 -0
- edify-1.0.0/docs/library/numeric/ratio.rst +43 -0
- edify-1.0.0/docs/library/numeric/roman.rst +56 -0
- edify-1.0.0/docs/library/numeric/scientific.rst +44 -0
- edify-1.0.0/docs/library/product/barcode.rst +39 -0
- edify-1.0.0/docs/library/product/gtin.rst +43 -0
- edify-1.0.0/docs/library/product/index.rst +31 -0
- edify-1.0.0/docs/library/product/mpn.rst +43 -0
- edify-1.0.0/docs/library/publishing/arxiv.rst +49 -0
- edify-1.0.0/docs/library/publishing/doi.rst +42 -0
- edify-1.0.0/docs/library/publishing/index.rst +35 -0
- edify-1.0.0/docs/library/publishing/isbn.rst +44 -0
- edify-1.0.0/docs/library/publishing/issn.rst +45 -0
- edify-1.0.0/docs/library/publishing/pmc.rst +37 -0
- edify-1.0.0/docs/library/publishing/pmid.rst +38 -0
- edify-1.0.0/docs/library/security/age.rst +40 -0
- edify-1.0.0/docs/library/security/certificate.rst +41 -0
- edify-1.0.0/docs/library/security/csr.rst +40 -0
- edify-1.0.0/docs/library/security/der.rst +42 -0
- edify-1.0.0/docs/library/security/index.rst +52 -0
- edify-1.0.0/docs/library/security/keyring.rst +40 -0
- edify-1.0.0/docs/library/security/nonce.rst +42 -0
- edify-1.0.0/docs/library/security/pem.rst +44 -0
- edify-1.0.0/docs/library/security/pgp.rst +41 -0
- edify-1.0.0/docs/library/security/signature.rst +42 -0
- edify-1.0.0/docs/library/security/ssh.rst +57 -0
- edify-1.0.0/docs/library/security/x509.rst +39 -0
- edify-1.0.0/docs/library/software/bump.rst +48 -0
- edify-1.0.0/docs/library/software/cargo.rst +50 -0
- edify-1.0.0/docs/library/software/checksum.rst +40 -0
- edify-1.0.0/docs/library/software/component.rst +40 -0
- edify-1.0.0/docs/library/software/digest.rst +42 -0
- edify-1.0.0/docs/library/software/docker.rst +40 -0
- edify-1.0.0/docs/library/software/git.rst +41 -0
- edify-1.0.0/docs/library/software/image.rst +38 -0
- edify-1.0.0/docs/library/software/index.rst +58 -0
- edify-1.0.0/docs/library/software/makefile.rst +42 -0
- edify-1.0.0/docs/library/software/package.rst +41 -0
- edify-1.0.0/docs/library/software/ref.rst +56 -0
- edify-1.0.0/docs/library/software/semver.rst +58 -0
- edify-1.0.0/docs/library/software/version.rst +55 -0
- edify-1.0.0/docs/library/temporal/cron.rst +55 -0
- edify-1.0.0/docs/library/temporal/date.rst +43 -0
- edify-1.0.0/docs/library/temporal/datetime.rst +50 -0
- edify-1.0.0/docs/library/temporal/duration.rst +56 -0
- edify-1.0.0/docs/library/temporal/epoch.rst +44 -0
- edify-1.0.0/docs/library/temporal/index.rst +59 -0
- edify-1.0.0/docs/library/temporal/interval.rst +50 -0
- edify-1.0.0/docs/library/temporal/iso_date.rst +55 -0
- edify-1.0.0/docs/library/temporal/offset.rst +51 -0
- edify-1.0.0/docs/library/temporal/time.rst +54 -0
- edify-1.0.0/docs/library/temporal/timestamp.rst +41 -0
- edify-1.0.0/docs/library/temporal/timezone.rst +57 -0
- edify-1.0.0/docs/library/temporal/year.rst +39 -0
- edify-1.0.0/docs/library/text/alpha.rst +45 -0
- edify-1.0.0/docs/library/text/alphanumeric.rst +45 -0
- edify-1.0.0/docs/library/text/ascii.rst +46 -0
- edify-1.0.0/docs/library/text/base.rst +57 -0
- edify-1.0.0/docs/library/text/emoji.rst +43 -0
- edify-1.0.0/docs/library/text/index.rst +54 -0
- edify-1.0.0/docs/library/text/numeric.rst +44 -0
- edify-1.0.0/docs/library/text/printable.rst +46 -0
- edify-1.0.0/docs/library/text/script.rst +53 -0
- edify-1.0.0/docs/library/text/slug.rst +57 -0
- edify-1.0.0/docs/library/text/unicode.rst +53 -0
- edify-1.0.0/docs/library/text/word.rst +55 -0
- edify-1.0.0/docs/library/transport/aircraft.rst +41 -0
- edify-1.0.0/docs/library/transport/flight.rst +43 -0
- edify-1.0.0/docs/library/transport/index.rst +33 -0
- edify-1.0.0/docs/library/transport/plate.rst +41 -0
- edify-1.0.0/docs/library/transport/vehicle.rst +40 -0
- edify-1.0.0/docs/library/web/apache.rst +51 -0
- edify-1.0.0/docs/library/web/captcha.rst +38 -0
- edify-1.0.0/docs/library/web/cookie.rst +44 -0
- edify-1.0.0/docs/library/web/csp.rst +44 -0
- edify-1.0.0/docs/library/web/htaccess.rst +50 -0
- edify-1.0.0/docs/library/web/humans.rst +39 -0
- edify-1.0.0/docs/library/web/index.rst +47 -0
- edify-1.0.0/docs/library/web/manifest.rst +41 -0
- edify-1.0.0/docs/library/web/nginx.rst +50 -0
- edify-1.0.0/docs/library/web/robots.rst +43 -0
- edify-1.0.0/docs/library/web/sitemap.rst +38 -0
- edify-1.0.0/docs/library/web/useragent.rst +45 -0
- edify-1.0.0/docs/playground.rst +17 -0
- edify-1.0.0/docs/requirements.txt +1 -0
- edify-1.0.0/docs/upgrading/0.3-to-1.0.rst +161 -0
- edify-1.0.0/docs/upgrading/index.rst +12 -0
- edify-1.0.0/edify/__init__.py +121 -0
- edify-1.0.0/edify/atoms/__init__.py +169 -0
- edify-1.0.0/edify/atoms/alnum.py +8 -0
- edify-1.0.0/edify/atoms/ascii.py +8 -0
- edify-1.0.0/edify/atoms/base32.py +10 -0
- edify-1.0.0/edify/atoms/base58.py +19 -0
- edify-1.0.0/edify/atoms/base64.py +20 -0
- edify-1.0.0/edify/atoms/base64url.py +18 -0
- edify-1.0.0/edify/atoms/bic.py +27 -0
- edify-1.0.0/edify/atoms/binnum.py +8 -0
- edify-1.0.0/edify/atoms/boolean.py +29 -0
- edify-1.0.0/edify/atoms/braces.py +8 -0
- edify-1.0.0/edify/atoms/brackets.py +8 -0
- edify-1.0.0/edify/atoms/cidr.py +9 -0
- edify-1.0.0/edify/atoms/clock.py +23 -0
- edify-1.0.0/edify/atoms/clock12.py +27 -0
- edify-1.0.0/edify/atoms/creditcard.py +8 -0
- edify-1.0.0/edify/atoms/currency.py +8 -0
- edify-1.0.0/edify/atoms/day.py +12 -0
- edify-1.0.0/edify/atoms/decimal.py +8 -0
- edify-1.0.0/edify/atoms/duration.py +47 -0
- edify-1.0.0/edify/atoms/email.py +29 -0
- edify-1.0.0/edify/atoms/epoch.py +8 -0
- edify-1.0.0/edify/atoms/extension.py +8 -0
- edify-1.0.0/edify/atoms/filename.py +8 -0
- edify-1.0.0/edify/atoms/filepath.py +30 -0
- edify-1.0.0/edify/atoms/floatnum.py +28 -0
- edify-1.0.0/edify/atoms/guid.py +25 -0
- edify-1.0.0/edify/atoms/hexcolor.py +22 -0
- edify-1.0.0/edify/atoms/hexnum.py +9 -0
- edify-1.0.0/edify/atoms/hexstring.py +9 -0
- edify-1.0.0/edify/atoms/hostname.py +9 -0
- edify-1.0.0/edify/atoms/httpmethod.py +18 -0
- edify-1.0.0/edify/atoms/httpstatus.py +8 -0
- edify-1.0.0/edify/atoms/iban.py +19 -0
- edify-1.0.0/edify/atoms/integer.py +8 -0
- edify-1.0.0/edify/atoms/ipv4.py +9 -0
- edify-1.0.0/edify/atoms/ipv6.py +21 -0
- edify-1.0.0/edify/atoms/isodate.py +8 -0
- edify-1.0.0/edify/atoms/isodatetime.py +45 -0
- edify-1.0.0/edify/atoms/label.py +32 -0
- edify-1.0.0/edify/atoms/letter.py +8 -0
- edify-1.0.0/edify/atoms/line.py +8 -0
- edify-1.0.0/edify/atoms/localpart.py +36 -0
- edify-1.0.0/edify/atoms/lower.py +8 -0
- edify-1.0.0/edify/atoms/mac.py +19 -0
- edify-1.0.0/edify/atoms/md5.py +9 -0
- edify-1.0.0/edify/atoms/mimetype.py +25 -0
- edify-1.0.0/edify/atoms/money.py +13 -0
- edify-1.0.0/edify/atoms/month.py +11 -0
- edify-1.0.0/edify/atoms/natural.py +8 -0
- edify-1.0.0/edify/atoms/nibble.py +8 -0
- edify-1.0.0/edify/atoms/objectid.py +9 -0
- edify-1.0.0/edify/atoms/octet.py +14 -0
- edify-1.0.0/edify/atoms/octnum.py +8 -0
- edify-1.0.0/edify/atoms/oid.py +8 -0
- edify-1.0.0/edify/atoms/parens.py +8 -0
- edify-1.0.0/edify/atoms/percent.py +19 -0
- edify-1.0.0/edify/atoms/port.py +16 -0
- edify-1.0.0/edify/atoms/printable.py +8 -0
- edify-1.0.0/edify/atoms/protocol.py +18 -0
- edify-1.0.0/edify/atoms/quoted.py +8 -0
- edify-1.0.0/edify/atoms/ratio.py +8 -0
- edify-1.0.0/edify/atoms/rgbcolor.py +27 -0
- edify-1.0.0/edify/atoms/scheme.py +20 -0
- edify-1.0.0/edify/atoms/scientific.py +25 -0
- edify-1.0.0/edify/atoms/semver.py +16 -0
- edify-1.0.0/edify/atoms/sha256.py +9 -0
- edify-1.0.0/edify/atoms/signed.py +8 -0
- edify-1.0.0/edify/atoms/slug.py +24 -0
- edify-1.0.0/edify/atoms/space.py +8 -0
- edify-1.0.0/edify/atoms/timezone.py +11 -0
- edify-1.0.0/edify/atoms/tld.py +8 -0
- edify-1.0.0/edify/atoms/truefalse.py +15 -0
- edify-1.0.0/edify/atoms/ulid.py +20 -0
- edify-1.0.0/edify/atoms/unsigned.py +8 -0
- edify-1.0.0/edify/atoms/upper.py +8 -0
- edify-1.0.0/edify/atoms/uri.py +23 -0
- edify-1.0.0/edify/atoms/url.py +16 -0
- edify-1.0.0/edify/atoms/username.py +19 -0
- edify-1.0.0/edify/atoms/uuid.py +27 -0
- edify-1.0.0/edify/atoms/weekday.py +23 -0
- edify-1.0.0/edify/atoms/word.py +8 -0
- edify-1.0.0/edify/atoms/year.py +8 -0
- edify-1.0.0/edify/atoms/yesno.py +19 -0
- edify-1.0.0/edify/builder/__init__.py +3 -0
- edify-1.0.0/edify/builder/core.py +85 -0
- edify-1.0.0/edify/builder/diagnose.py +132 -0
- edify-1.0.0/edify/builder/fluent.py +61 -0
- edify-1.0.0/edify/builder/merge.py +291 -0
- edify-1.0.0/edify/builder/mixins/__init__.py +0 -0
- edify-1.0.0/edify/builder/mixins/anchors.py +40 -0
- edify-1.0.0/edify/builder/mixins/assertions.py +47 -0
- edify-1.0.0/edify/builder/mixins/captures.py +118 -0
- edify-1.0.0/edify/builder/mixins/chain.py +64 -0
- edify-1.0.0/edify/builder/mixins/chars.py +178 -0
- edify-1.0.0/edify/builder/mixins/classes.py +120 -0
- edify-1.0.0/edify/builder/mixins/flags.py +52 -0
- edify-1.0.0/edify/builder/mixins/groups.py +109 -0
- edify-1.0.0/edify/builder/mixins/matcher.py +134 -0
- edify-1.0.0/edify/builder/mixins/operators.py +40 -0
- edify-1.0.0/edify/builder/mixins/quantifiers.py +235 -0
- edify-1.0.0/edify/builder/mixins/subexpression.py +110 -0
- edify-1.0.0/edify/builder/mixins/terminals.py +149 -0
- edify-1.0.0/edify/builder/mixins/testing.py +69 -0
- edify-1.0.0/edify/builder/reverse.py +264 -0
- edify-1.0.0/edify/builder/sre.py +75 -0
- edify-1.0.0/edify/builder/types/__init__.py +0 -0
- edify-1.0.0/edify/builder/types/engine.py +8 -0
- edify-1.0.0/edify/builder/types/flags.py +67 -0
- edify-1.0.0/edify/builder/types/frame.py +72 -0
- edify-1.0.0/edify/builder/types/protocol.py +50 -0
- edify-1.0.0/edify/builder/types/state.py +123 -0
- edify-1.0.0/edify/compile/__init__.py +4 -0
- edify-1.0.0/edify/compile/backend.py +93 -0
- edify-1.0.0/edify/compile/captures.py +43 -0
- edify-1.0.0/edify/compile/chars.py +47 -0
- edify-1.0.0/edify/compile/dispatch.py +48 -0
- edify-1.0.0/edify/compile/escape.py +89 -0
- edify-1.0.0/edify/compile/fuse.py +62 -0
- edify-1.0.0/edify/compile/groups.py +88 -0
- edify-1.0.0/edify/compile/leaves.py +79 -0
- edify-1.0.0/edify/compile/quantifier/__init__.py +4 -0
- edify-1.0.0/edify/compile/quantifier/apply.py +43 -0
- edify-1.0.0/edify/compile/quantifier/suffix.py +56 -0
- edify-1.0.0/edify/compile/redos.py +91 -0
- edify-1.0.0/edify/compile/root.py +25 -0
- edify-1.0.0/edify/compile/types.py +17 -0
- edify-1.0.0/edify/elements/__init__.py +3 -0
- edify-1.0.0/edify/elements/types/__init__.py +4 -0
- edify-1.0.0/edify/elements/types/base.py +16 -0
- edify-1.0.0/edify/elements/types/captures.py +64 -0
- edify-1.0.0/edify/elements/types/chars.py +101 -0
- edify-1.0.0/edify/elements/types/groups.py +98 -0
- edify-1.0.0/edify/elements/types/leaves.py +113 -0
- edify-1.0.0/edify/elements/types/quantifiers.py +152 -0
- edify-1.0.0/edify/elements/types/root.py +25 -0
- edify-1.0.0/edify/elements/types/union.py +166 -0
- edify-1.0.0/edify/elements/walk.py +42 -0
- edify-1.0.0/edify/errors/__init__.py +4 -0
- edify-1.0.0/edify/errors/anchors.py +78 -0
- edify-1.0.0/edify/errors/backend.py +63 -0
- edify-1.0.0/edify/errors/base.py +12 -0
- edify-1.0.0/edify/errors/captures.py +37 -0
- edify-1.0.0/edify/errors/comparison.py +66 -0
- edify-1.0.0/edify/errors/context.py +91 -0
- edify-1.0.0/edify/errors/formatting.py +133 -0
- edify-1.0.0/edify/errors/input.py +248 -0
- edify-1.0.0/edify/errors/integration.py +24 -0
- edify-1.0.0/edify/errors/introspect.py +91 -0
- edify-1.0.0/edify/errors/naming.py +74 -0
- edify-1.0.0/edify/errors/quantifier.py +84 -0
- edify-1.0.0/edify/errors/serialize.py +103 -0
- edify-1.0.0/edify/errors/structure.py +86 -0
- edify-1.0.0/edify/errors/syntax.py +20 -0
- edify-1.0.0/edify/errors/testing.py +57 -0
- edify-1.0.0/edify/integrations/__init__.py +0 -0
- edify-1.0.0/edify/integrations/django.py +51 -0
- edify-1.0.0/edify/integrations/fastapi.py +44 -0
- edify-1.0.0/edify/integrations/pydantic.py +44 -0
- edify-1.0.0/edify/introspect/__init__.py +5 -0
- edify-1.0.0/edify/introspect/ascii.py +448 -0
- edify-1.0.0/edify/introspect/explain.py +560 -0
- edify-1.0.0/edify/introspect/graphviz.py +279 -0
- edify-1.0.0/edify/introspect/types.py +48 -0
- edify-1.0.0/edify/introspect/verbose.py +369 -0
- edify-1.0.0/edify/introspect/visualize.py +45 -0
- edify-1.0.0/edify/library/__init__.py +463 -0
- edify-1.0.0/edify/library/_support/__init__.py +0 -0
- edify-1.0.0/edify/library/address/__init__.py +33 -0
- edify-1.0.0/edify/library/address/cidr.py +55 -0
- edify-1.0.0/edify/library/address/domain.py +32 -0
- edify-1.0.0/edify/library/address/hostname.py +42 -0
- edify-1.0.0/edify/library/address/ip.py +220 -0
- edify-1.0.0/edify/library/address/path.py +61 -0
- edify-1.0.0/edify/library/address/port.py +16 -0
- edify-1.0.0/edify/library/address/ptr.py +39 -0
- edify-1.0.0/edify/library/address/socket.py +63 -0
- edify-1.0.0/edify/library/address/subdomain.py +31 -0
- edify-1.0.0/edify/library/address/subnet.py +36 -0
- edify-1.0.0/edify/library/address/tld.py +17 -0
- edify-1.0.0/edify/library/address/uri.py +27 -0
- edify-1.0.0/edify/library/address/url.py +84 -0
- edify-1.0.0/edify/library/address/zip.py +30 -0
- edify-1.0.0/edify/library/api/__init__.py +27 -0
- edify-1.0.0/edify/library/api/atom.py +27 -0
- edify-1.0.0/edify/library/api/graphql.py +63 -0
- edify-1.0.0/edify/library/api/hal.py +34 -0
- edify-1.0.0/edify/library/api/jsonapi.py +35 -0
- edify-1.0.0/edify/library/api/oauth.py +32 -0
- edify-1.0.0/edify/library/api/openapi.py +66 -0
- edify-1.0.0/edify/library/api/openid.py +40 -0
- edify-1.0.0/edify/library/api/rss.py +28 -0
- edify-1.0.0/edify/library/api/saml.py +44 -0
- edify-1.0.0/edify/library/api/soap.py +32 -0
- edify-1.0.0/edify/library/api/swagger.py +53 -0
- edify-1.0.0/edify/library/api/webhook.py +43 -0
- edify-1.0.0/edify/library/auth/__init__.py +41 -0
- edify-1.0.0/edify/library/auth/apikey.py +19 -0
- edify-1.0.0/edify/library/auth/bearer.py +20 -0
- edify-1.0.0/edify/library/auth/challenge.py +21 -0
- edify-1.0.0/edify/library/auth/csrf.py +19 -0
- edify-1.0.0/edify/library/auth/hmac.py +18 -0
- edify-1.0.0/edify/library/auth/jwt.py +37 -0
- edify-1.0.0/edify/library/auth/mfa.py +8 -0
- edify-1.0.0/edify/library/auth/mnemonic.py +22 -0
- edify-1.0.0/edify/library/auth/otp.py +20 -0
- edify-1.0.0/edify/library/auth/passkey.py +21 -0
- edify-1.0.0/edify/library/auth/password.py +97 -0
- edify-1.0.0/edify/library/auth/pin.py +8 -0
- edify-1.0.0/edify/library/auth/refresh.py +21 -0
- edify-1.0.0/edify/library/auth/secret.py +19 -0
- edify-1.0.0/edify/library/auth/session.py +19 -0
- edify-1.0.0/edify/library/auth/signing.py +21 -0
- edify-1.0.0/edify/library/auth/sso.py +22 -0
- edify-1.0.0/edify/library/auth/token.py +19 -0
- edify-1.0.0/edify/library/auth/webauthn.py +19 -0
- edify-1.0.0/edify/library/color/__init__.py +7 -0
- edify-1.0.0/edify/library/color/any.py +128 -0
- edify-1.0.0/edify/library/color/filter.py +28 -0
- edify-1.0.0/edify/library/color/gradient.py +26 -0
- edify-1.0.0/edify/library/color/palette.py +46 -0
- edify-1.0.0/edify/library/color/swatch.py +25 -0
- edify-1.0.0/edify/library/contact/__init__.py +18 -0
- edify-1.0.0/edify/library/contact/address.py +26 -0
- edify-1.0.0/edify/library/contact/email.py +223 -0
- edify-1.0.0/edify/library/contact/fax.py +52 -0
- edify-1.0.0/edify/library/contact/handle.py +20 -0
- edify-1.0.0/edify/library/contact/pager.py +8 -0
- edify-1.0.0/edify/library/contact/phone.py +61 -0
- edify-1.0.0/edify/library/contact/username.py +27 -0
- edify-1.0.0/edify/library/data/__init__.py +31 -0
- edify-1.0.0/edify/library/data/avro.py +12 -0
- edify-1.0.0/edify/library/data/csv.py +33 -0
- edify-1.0.0/edify/library/data/hdf5.py +18 -0
- edify-1.0.0/edify/library/data/html.py +31 -0
- edify-1.0.0/edify/library/data/ini.py +42 -0
- edify-1.0.0/edify/library/data/json.py +54 -0
- edify-1.0.0/edify/library/data/msgpack.py +26 -0
- edify-1.0.0/edify/library/data/orc.py +8 -0
- edify-1.0.0/edify/library/data/parquet.py +10 -0
- edify-1.0.0/edify/library/data/protobuf.py +53 -0
- edify-1.0.0/edify/library/data/toml.py +54 -0
- edify-1.0.0/edify/library/data/tsv.py +27 -0
- edify-1.0.0/edify/library/data/xml.py +39 -0
- edify-1.0.0/edify/library/data/yaml.py +47 -0
- edify-1.0.0/edify/library/document/__init__.py +25 -0
- edify-1.0.0/edify/library/document/docx.py +21 -0
- edify-1.0.0/edify/library/document/epub.py +21 -0
- edify-1.0.0/edify/library/document/mobi.py +20 -0
- edify-1.0.0/edify/library/document/odt.py +21 -0
- edify-1.0.0/edify/library/document/pdf.py +19 -0
- edify-1.0.0/edify/library/document/pptx.py +21 -0
- edify-1.0.0/edify/library/document/readme.py +28 -0
- edify-1.0.0/edify/library/document/rtf.py +18 -0
- edify-1.0.0/edify/library/document/svg.py +30 -0
- edify-1.0.0/edify/library/document/tex.py +27 -0
- edify-1.0.0/edify/library/document/xlsx.py +21 -0
- edify-1.0.0/edify/library/financial/__init__.py +9 -0
- edify-1.0.0/edify/library/financial/card.py +28 -0
- edify-1.0.0/edify/library/financial/crypto.py +19 -0
- edify-1.0.0/edify/library/financial/currency.py +10 -0
- edify-1.0.0/edify/library/financial/routing.py +8 -0
- edify-1.0.0/edify/library/financial/sortcode.py +23 -0
- edify-1.0.0/edify/library/financial/vat.py +8 -0
- edify-1.0.0/edify/library/financial/wallet.py +94 -0
- edify-1.0.0/edify/library/geo/__init__.py +10 -0
- edify-1.0.0/edify/library/geo/altitude.py +26 -0
- edify-1.0.0/edify/library/geo/bearing.py +33 -0
- edify-1.0.0/edify/library/geo/coordinate.py +64 -0
- edify-1.0.0/edify/library/geo/geohash.py +17 -0
- edify-1.0.0/edify/library/geo/mgrs.py +33 -0
- edify-1.0.0/edify/library/geo/place.py +23 -0
- edify-1.0.0/edify/library/geo/plus.py +28 -0
- edify-1.0.0/edify/library/geo/postal.py +237 -0
- edify-1.0.0/edify/library/grammar/__init__.py +8 -0
- edify-1.0.0/edify/library/grammar/abnf.py +29 -0
- edify-1.0.0/edify/library/grammar/antlr.py +27 -0
- edify-1.0.0/edify/library/grammar/bnf.py +25 -0
- edify-1.0.0/edify/library/grammar/ebnf.py +26 -0
- edify-1.0.0/edify/library/grammar/peg.py +25 -0
- edify-1.0.0/edify/library/grammar/pest.py +30 -0
- edify-1.0.0/edify/library/identifier/__init__.py +55 -0
- edify-1.0.0/edify/library/identifier/arn.py +40 -0
- edify-1.0.0/edify/library/identifier/asin.py +17 -0
- edify-1.0.0/edify/library/identifier/bic.py +30 -0
- edify-1.0.0/edify/library/identifier/cusip.py +17 -0
- edify-1.0.0/edify/library/identifier/did.py +23 -0
- edify-1.0.0/edify/library/identifier/ein.py +8 -0
- edify-1.0.0/edify/library/identifier/guid.py +62 -0
- edify-1.0.0/edify/library/identifier/iata.py +10 -0
- edify-1.0.0/edify/library/identifier/iban.py +25 -0
- edify-1.0.0/edify/library/identifier/icao.py +10 -0
- edify-1.0.0/edify/library/identifier/iccid.py +8 -0
- edify-1.0.0/edify/library/identifier/imei.py +8 -0
- edify-1.0.0/edify/library/identifier/imo.py +10 -0
- edify-1.0.0/edify/library/identifier/isin.py +24 -0
- edify-1.0.0/edify/library/identifier/itin.py +33 -0
- edify-1.0.0/edify/library/identifier/lei.py +17 -0
- edify-1.0.0/edify/library/identifier/mac.py +41 -0
- edify-1.0.0/edify/library/identifier/meid.py +17 -0
- edify-1.0.0/edify/library/identifier/mmsi.py +8 -0
- edify-1.0.0/edify/library/identifier/orcid.py +30 -0
- edify-1.0.0/edify/library/identifier/sedol.py +25 -0
- edify-1.0.0/edify/library/identifier/sku.py +22 -0
- edify-1.0.0/edify/library/identifier/ssn.py +51 -0
- edify-1.0.0/edify/library/identifier/tin.py +13 -0
- edify-1.0.0/edify/library/identifier/uuid.py +53 -0
- edify-1.0.0/edify/library/identifier/vin.py +22 -0
- edify-1.0.0/edify/library/media/__init__.py +25 -0
- edify-1.0.0/edify/library/media/charset.py +23 -0
- edify-1.0.0/edify/library/media/codec.py +22 -0
- edify-1.0.0/edify/library/media/encoding.py +39 -0
- edify-1.0.0/edify/library/media/extension.py +8 -0
- edify-1.0.0/edify/library/media/favicon.py +43 -0
- edify-1.0.0/edify/library/media/filename.py +39 -0
- edify-1.0.0/edify/library/media/glob.py +22 -0
- edify-1.0.0/edify/library/media/locale.py +37 -0
- edify-1.0.0/edify/library/media/mimetype.py +38 -0
- edify-1.0.0/edify/library/media/regex.py +22 -0
- edify-1.0.0/edify/library/media/shebang.py +42 -0
- edify-1.0.0/edify/library/medical/__init__.py +6 -0
- edify-1.0.0/edify/library/medical/any.py +35 -0
- edify-1.0.0/edify/library/medical/blood.py +21 -0
- edify-1.0.0/edify/library/medical/dicom.py +20 -0
- edify-1.0.0/edify/library/medical/dosage.py +51 -0
- edify-1.0.0/edify/library/numeric/__init__.py +23 -0
- edify-1.0.0/edify/library/numeric/fraction.py +28 -0
- edify-1.0.0/edify/library/numeric/hash.py +20 -0
- edify-1.0.0/edify/library/numeric/integer.py +10 -0
- edify-1.0.0/edify/library/numeric/natural.py +8 -0
- edify-1.0.0/edify/library/numeric/number.py +85 -0
- edify-1.0.0/edify/library/numeric/ordinal.py +22 -0
- edify-1.0.0/edify/library/numeric/percentage.py +27 -0
- edify-1.0.0/edify/library/numeric/ratio.py +10 -0
- edify-1.0.0/edify/library/numeric/roman.py +39 -0
- edify-1.0.0/edify/library/numeric/scientific.py +27 -0
- edify-1.0.0/edify/library/product/__init__.py +5 -0
- edify-1.0.0/edify/library/product/barcode.py +17 -0
- edify-1.0.0/edify/library/product/gtin.py +20 -0
- edify-1.0.0/edify/library/product/mpn.py +24 -0
- edify-1.0.0/edify/library/publishing/__init__.py +8 -0
- edify-1.0.0/edify/library/publishing/arxiv.py +43 -0
- edify-1.0.0/edify/library/publishing/doi.py +30 -0
- edify-1.0.0/edify/library/publishing/isbn.py +37 -0
- edify-1.0.0/edify/library/publishing/issn.py +22 -0
- edify-1.0.0/edify/library/publishing/pmc.py +8 -0
- edify-1.0.0/edify/library/publishing/pmid.py +8 -0
- edify-1.0.0/edify/library/security/__init__.py +25 -0
- edify-1.0.0/edify/library/security/age.py +24 -0
- edify-1.0.0/edify/library/security/certificate.py +29 -0
- edify-1.0.0/edify/library/security/csr.py +29 -0
- edify-1.0.0/edify/library/security/der.py +26 -0
- edify-1.0.0/edify/library/security/keyring.py +31 -0
- edify-1.0.0/edify/library/security/nonce.py +23 -0
- edify-1.0.0/edify/library/security/pem.py +30 -0
- edify-1.0.0/edify/library/security/pgp.py +31 -0
- edify-1.0.0/edify/library/security/signature.py +23 -0
- edify-1.0.0/edify/library/security/ssh.py +46 -0
- edify-1.0.0/edify/library/security/x509.py +33 -0
- edify-1.0.0/edify/library/software/__init__.py +29 -0
- edify-1.0.0/edify/library/software/bump.py +22 -0
- edify-1.0.0/edify/library/software/cargo.py +45 -0
- edify-1.0.0/edify/library/software/checksum.py +18 -0
- edify-1.0.0/edify/library/software/component.py +60 -0
- edify-1.0.0/edify/library/software/digest.py +28 -0
- edify-1.0.0/edify/library/software/docker.py +91 -0
- edify-1.0.0/edify/library/software/git.py +17 -0
- edify-1.0.0/edify/library/software/image.py +91 -0
- edify-1.0.0/edify/library/software/makefile.py +44 -0
- edify-1.0.0/edify/library/software/package.py +39 -0
- edify-1.0.0/edify/library/software/ref.py +52 -0
- edify-1.0.0/edify/library/software/semver.py +91 -0
- edify-1.0.0/edify/library/software/version.py +34 -0
- edify-1.0.0/edify/library/temporal/__init__.py +27 -0
- edify-1.0.0/edify/library/temporal/cron.py +48 -0
- edify-1.0.0/edify/library/temporal/date.py +36 -0
- edify-1.0.0/edify/library/temporal/datetime.py +81 -0
- edify-1.0.0/edify/library/temporal/duration.py +53 -0
- edify-1.0.0/edify/library/temporal/epoch.py +10 -0
- edify-1.0.0/edify/library/temporal/interval.py +101 -0
- edify-1.0.0/edify/library/temporal/iso.py +32 -0
- edify-1.0.0/edify/library/temporal/offset.py +25 -0
- edify-1.0.0/edify/library/temporal/time.py +54 -0
- edify-1.0.0/edify/library/temporal/timestamp.py +10 -0
- edify-1.0.0/edify/library/temporal/timezone.py +40 -0
- edify-1.0.0/edify/library/temporal/year.py +8 -0
- edify-1.0.0/edify/library/text/__init__.py +25 -0
- edify-1.0.0/edify/library/text/alpha.py +8 -0
- edify-1.0.0/edify/library/text/alphanumeric.py +8 -0
- edify-1.0.0/edify/library/text/ascii.py +10 -0
- edify-1.0.0/edify/library/text/base.py +56 -0
- edify-1.0.0/edify/library/text/emoji.py +17 -0
- edify-1.0.0/edify/library/text/numeric.py +8 -0
- edify-1.0.0/edify/library/text/printable.py +24 -0
- edify-1.0.0/edify/library/text/script.py +24 -0
- edify-1.0.0/edify/library/text/slug.py +28 -0
- edify-1.0.0/edify/library/text/unicode.py +37 -0
- edify-1.0.0/edify/library/text/word.py +10 -0
- edify-1.0.0/edify/library/transport/__init__.py +6 -0
- edify-1.0.0/edify/library/transport/aircraft.py +21 -0
- edify-1.0.0/edify/library/transport/flight.py +18 -0
- edify-1.0.0/edify/library/transport/plate.py +24 -0
- edify-1.0.0/edify/library/transport/vehicle.py +23 -0
- edify-1.0.0/edify/library/web/__init__.py +25 -0
- edify-1.0.0/edify/library/web/apache.py +57 -0
- edify-1.0.0/edify/library/web/captcha.py +19 -0
- edify-1.0.0/edify/library/web/cookie.py +28 -0
- edify-1.0.0/edify/library/web/csp.py +43 -0
- edify-1.0.0/edify/library/web/htaccess.py +63 -0
- edify-1.0.0/edify/library/web/humans.py +49 -0
- edify-1.0.0/edify/library/web/manifest.py +38 -0
- edify-1.0.0/edify/library/web/nginx.py +57 -0
- edify-1.0.0/edify/library/web/robots.py +41 -0
- edify-1.0.0/edify/library/web/sitemap.py +31 -0
- edify-1.0.0/edify/library/web/useragent.py +29 -0
- edify-1.0.0/edify/pattern/__init__.py +99 -0
- edify-1.0.0/edify/pattern/anchors.py +14 -0
- edify-1.0.0/edify/pattern/boundaries.py +8 -0
- edify-1.0.0/edify/pattern/classes.py +31 -0
- edify-1.0.0/edify/pattern/composition.py +81 -0
- edify-1.0.0/edify/pattern/factories/__init__.py +67 -0
- edify-1.0.0/edify/pattern/factories/assertions.py +64 -0
- edify-1.0.0/edify/pattern/factories/groups.py +107 -0
- edify-1.0.0/edify/pattern/factories/quantifiers.py +183 -0
- edify-1.0.0/edify/pattern/factories/values.py +82 -0
- edify-1.0.0/edify/pattern/factories/wrap.py +38 -0
- edify-1.0.0/edify/py.typed +0 -0
- edify-1.0.0/edify/result/__init__.py +4 -0
- edify-1.0.0/edify/result/match.py +134 -0
- edify-1.0.0/edify/result/regex.py +252 -0
- edify-1.0.0/edify/serialize/__init__.py +14 -0
- edify-1.0.0/edify/serialize/dump.py +73 -0
- edify-1.0.0/edify/serialize/kinds.py +133 -0
- edify-1.0.0/edify/serialize/load.py +147 -0
- edify-1.0.0/edify/serialize/types.py +9 -0
- edify-1.0.0/edify/serialize/version.py +16 -0
- edify-1.0.0/edify/testing/__init__.py +7 -0
- edify-1.0.0/edify/testing/snapshots.py +91 -0
- edify-1.0.0/edify/validate/__init__.py +3 -0
- edify-1.0.0/edify/validate/names.py +25 -0
- edify-1.0.0/pyproject.toml +181 -0
- edify-1.0.0/tests/atoms/alnum.test.py +26 -0
- edify-1.0.0/tests/atoms/ascii.test.py +26 -0
- edify-1.0.0/tests/atoms/base32.test.py +26 -0
- edify-1.0.0/tests/atoms/base58.test.py +26 -0
- edify-1.0.0/tests/atoms/base64.test.py +26 -0
- edify-1.0.0/tests/atoms/base64url.test.py +26 -0
- edify-1.0.0/tests/atoms/bic.test.py +26 -0
- edify-1.0.0/tests/atoms/binnum.test.py +26 -0
- edify-1.0.0/tests/atoms/boolean.test.py +26 -0
- edify-1.0.0/tests/atoms/braces.test.py +26 -0
- edify-1.0.0/tests/atoms/brackets.test.py +26 -0
- edify-1.0.0/tests/atoms/cidr.test.py +26 -0
- edify-1.0.0/tests/atoms/clock.test.py +26 -0
- edify-1.0.0/tests/atoms/clock12.test.py +26 -0
- edify-1.0.0/tests/atoms/creditcard.test.py +26 -0
- edify-1.0.0/tests/atoms/currency.test.py +26 -0
- edify-1.0.0/tests/atoms/day.test.py +26 -0
- edify-1.0.0/tests/atoms/decimal.test.py +26 -0
- edify-1.0.0/tests/atoms/duration.test.py +26 -0
- edify-1.0.0/tests/atoms/email.test.py +26 -0
- edify-1.0.0/tests/atoms/epoch.test.py +26 -0
- edify-1.0.0/tests/atoms/extension.test.py +26 -0
- edify-1.0.0/tests/atoms/filename.test.py +26 -0
- edify-1.0.0/tests/atoms/filepath.test.py +26 -0
- edify-1.0.0/tests/atoms/floatnum.test.py +26 -0
- edify-1.0.0/tests/atoms/guid.test.py +26 -0
- edify-1.0.0/tests/atoms/hexcolor.test.py +26 -0
- edify-1.0.0/tests/atoms/hexnum.test.py +26 -0
- edify-1.0.0/tests/atoms/hexstring.test.py +26 -0
- edify-1.0.0/tests/atoms/hostname.test.py +26 -0
- edify-1.0.0/tests/atoms/httpmethod.test.py +26 -0
- edify-1.0.0/tests/atoms/httpstatus.test.py +26 -0
- edify-1.0.0/tests/atoms/iban.test.py +26 -0
- edify-1.0.0/tests/atoms/integer.test.py +26 -0
- edify-1.0.0/tests/atoms/ipv4.test.py +26 -0
- edify-1.0.0/tests/atoms/ipv6.test.py +26 -0
- edify-1.0.0/tests/atoms/isodate.test.py +26 -0
- edify-1.0.0/tests/atoms/isodatetime.test.py +26 -0
- edify-1.0.0/tests/atoms/label.test.py +26 -0
- edify-1.0.0/tests/atoms/letter.test.py +26 -0
- edify-1.0.0/tests/atoms/line.test.py +26 -0
- edify-1.0.0/tests/atoms/localpart.test.py +26 -0
- edify-1.0.0/tests/atoms/lower.test.py +26 -0
- edify-1.0.0/tests/atoms/mac.test.py +26 -0
- edify-1.0.0/tests/atoms/md5.test.py +26 -0
- edify-1.0.0/tests/atoms/mimetype.test.py +26 -0
- edify-1.0.0/tests/atoms/money.test.py +26 -0
- edify-1.0.0/tests/atoms/month.test.py +26 -0
- edify-1.0.0/tests/atoms/natural.test.py +26 -0
- edify-1.0.0/tests/atoms/nibble.test.py +26 -0
- edify-1.0.0/tests/atoms/objectid.test.py +26 -0
- edify-1.0.0/tests/atoms/octet.test.py +26 -0
- edify-1.0.0/tests/atoms/octnum.test.py +26 -0
- edify-1.0.0/tests/atoms/oid.test.py +26 -0
- edify-1.0.0/tests/atoms/parens.test.py +26 -0
- edify-1.0.0/tests/atoms/percent.test.py +26 -0
- edify-1.0.0/tests/atoms/port.test.py +26 -0
- edify-1.0.0/tests/atoms/printable.test.py +26 -0
- edify-1.0.0/tests/atoms/protocol.test.py +26 -0
- edify-1.0.0/tests/atoms/quoted.test.py +26 -0
- edify-1.0.0/tests/atoms/ratio.test.py +26 -0
- edify-1.0.0/tests/atoms/rgbcolor.test.py +26 -0
- edify-1.0.0/tests/atoms/scheme.test.py +26 -0
- edify-1.0.0/tests/atoms/scientific.test.py +26 -0
- edify-1.0.0/tests/atoms/semver.test.py +26 -0
- edify-1.0.0/tests/atoms/sha256.test.py +26 -0
- edify-1.0.0/tests/atoms/signed.test.py +26 -0
- edify-1.0.0/tests/atoms/slug.test.py +26 -0
- edify-1.0.0/tests/atoms/space.test.py +26 -0
- edify-1.0.0/tests/atoms/timezone.test.py +26 -0
- edify-1.0.0/tests/atoms/tld.test.py +26 -0
- edify-1.0.0/tests/atoms/truefalse.test.py +26 -0
- edify-1.0.0/tests/atoms/ulid.test.py +26 -0
- edify-1.0.0/tests/atoms/unsigned.test.py +26 -0
- edify-1.0.0/tests/atoms/upper.test.py +26 -0
- edify-1.0.0/tests/atoms/uri.test.py +26 -0
- edify-1.0.0/tests/atoms/url.test.py +26 -0
- edify-1.0.0/tests/atoms/username.test.py +26 -0
- edify-1.0.0/tests/atoms/uuid.test.py +26 -0
- edify-1.0.0/tests/atoms/weekday.test.py +26 -0
- edify-1.0.0/tests/atoms/word.test.py +26 -0
- edify-1.0.0/tests/atoms/year.test.py +26 -0
- edify-1.0.0/tests/atoms/yesno.test.py +26 -0
- edify-1.0.0/tests/bench/__init__.py +0 -0
- edify-1.0.0/tests/bench/cases.py +76 -0
- edify-1.0.0/tests/bench/compile.py +20 -0
- edify-1.0.0/tests/bench/match.py +25 -0
- edify-1.0.0/tests/builder/alternation.test.py +13 -0
- edify-1.0.0/tests/builder/builder.test.py +579 -0
- edify-1.0.0/tests/builder/cache.test.py +120 -0
- edify-1.0.0/tests/builder/conflict.test.py +20 -0
- edify-1.0.0/tests/builder/diagnose.test.py +76 -0
- edify-1.0.0/tests/builder/engine.test.py +55 -0
- edify-1.0.0/tests/builder/equality.test.py +143 -0
- edify-1.0.0/tests/builder/flags.test.py +129 -0
- edify-1.0.0/tests/builder/fork.test.py +47 -0
- edify-1.0.0/tests/builder/inline.test.py +56 -0
- edify-1.0.0/tests/builder/labels.test.py +101 -0
- edify-1.0.0/tests/builder/lookbehind.test.py +57 -0
- edify-1.0.0/tests/builder/matcher.test.py +115 -0
- edify-1.0.0/tests/builder/merge.test.py +123 -0
- edify-1.0.0/tests/builder/operators.test.py +34 -0
- edify-1.0.0/tests/builder/ordering.test.py +27 -0
- edify-1.0.0/tests/builder/passthrough.test.py +27 -0
- edify-1.0.0/tests/builder/properties.test.py +247 -0
- edify-1.0.0/tests/builder/ranges.test.py +55 -0
- edify-1.0.0/tests/builder/repr.test.py +31 -0
- edify-1.0.0/tests/builder/reverse.test.py +113 -0
- edify-1.0.0/tests/builder/testing.test.py +71 -0
- edify-1.0.0/tests/builder/timeout.test.py +85 -0
- edify-1.0.0/tests/builder/use.test.py +30 -0
- edify-1.0.0/tests/builder/validation.test.py +126 -0
- edify-1.0.0/tests/builder/varargs.test.py +66 -0
- edify-1.0.0/tests/compile/escape.test.py +115 -0
- edify-1.0.0/tests/compile/redos.test.py +88 -0
- edify-1.0.0/tests/conftest.py +49 -0
- edify-1.0.0/tests/discipline/anchors.test.py +66 -0
- edify-1.0.0/tests/discipline/coverage.test.py +47 -0
- edify-1.0.0/tests/discipline/deprecations.test.py +76 -0
- edify-1.0.0/tests/discipline/matcher.test.py +44 -0
- edify-1.0.0/tests/discipline/orphans.test.py +131 -0
- edify-1.0.0/tests/discipline/pragmas.test.py +49 -0
- edify-1.0.0/tests/discipline/suppressions.test.py +35 -0
- edify-1.0.0/tests/docs/playground.test.py +115 -0
- edify-1.0.0/tests/docs/snapshots.test.py +172 -0
- edify-1.0.0/tests/errors/context.test.py +31 -0
- edify-1.0.0/tests/errors/formatting.test.py +135 -0
- edify-1.0.0/tests/errors/frames.test.py +66 -0
- edify-1.0.0/tests/errors/generic.test.py +228 -0
- edify-1.0.0/tests/errors/quantifier.test.py +90 -0
- edify-1.0.0/tests/fixtures/fixtures.test.py +132 -0
- edify-1.0.0/tests/integrations/django.test.py +38 -0
- edify-1.0.0/tests/integrations/fastapi.test.py +43 -0
- edify-1.0.0/tests/integrations/pydantic.test.py +46 -0
- edify-1.0.0/tests/introspect/ascii.test.py +472 -0
- edify-1.0.0/tests/introspect/explain.test.py +756 -0
- edify-1.0.0/tests/introspect/graphviz.test.py +366 -0
- edify-1.0.0/tests/introspect/verbose.test.py +457 -0
- edify-1.0.0/tests/introspect/visualize.test.py +92 -0
- edify-1.0.0/tests/library/algebra.test.py +77 -0
- edify-1.0.0/tests/library/corpora/abnf.toml +11 -0
- edify-1.0.0/tests/library/corpora/age.toml +12 -0
- edify-1.0.0/tests/library/corpora/antlr.toml +9 -0
- edify-1.0.0/tests/library/corpora/apache.toml +11 -0
- edify-1.0.0/tests/library/corpora/ascii.toml +13 -0
- edify-1.0.0/tests/library/corpora/atom.toml +10 -0
- edify-1.0.0/tests/library/corpora/avro.toml +11 -0
- edify-1.0.0/tests/library/corpora/bnf.toml +11 -0
- edify-1.0.0/tests/library/corpora/captcha.toml +11 -0
- edify-1.0.0/tests/library/corpora/certificate.toml +10 -0
- edify-1.0.0/tests/library/corpora/csr.toml +10 -0
- edify-1.0.0/tests/library/corpora/csv.toml +16 -0
- edify-1.0.0/tests/library/corpora/date.toml +22 -0
- edify-1.0.0/tests/library/corpora/der.toml +10 -0
- edify-1.0.0/tests/library/corpora/docx.toml +10 -0
- edify-1.0.0/tests/library/corpora/ebnf.toml +11 -0
- edify-1.0.0/tests/library/corpora/email.toml +25 -0
- edify-1.0.0/tests/library/corpora/email_rfc_5322.toml +20 -0
- edify-1.0.0/tests/library/corpora/encoding.toml +17 -0
- edify-1.0.0/tests/library/corpora/epub.toml +10 -0
- edify-1.0.0/tests/library/corpora/graphql.toml +16 -0
- edify-1.0.0/tests/library/corpora/guid.toml +16 -0
- edify-1.0.0/tests/library/corpora/hal.toml +11 -0
- edify-1.0.0/tests/library/corpora/hdf5.toml +10 -0
- edify-1.0.0/tests/library/corpora/hostname.toml +15 -0
- edify-1.0.0/tests/library/corpora/htaccess.toml +11 -0
- edify-1.0.0/tests/library/corpora/html.toml +16 -0
- edify-1.0.0/tests/library/corpora/humans.toml +12 -0
- edify-1.0.0/tests/library/corpora/ini.toml +15 -0
- edify-1.0.0/tests/library/corpora/ipv4.toml +27 -0
- edify-1.0.0/tests/library/corpora/ipv6.toml +24 -0
- edify-1.0.0/tests/library/corpora/isbn.toml +13 -0
- edify-1.0.0/tests/library/corpora/iso_date.toml +21 -0
- edify-1.0.0/tests/library/corpora/json.toml +29 -0
- edify-1.0.0/tests/library/corpora/jsonapi.toml +12 -0
- edify-1.0.0/tests/library/corpora/keyring.toml +10 -0
- edify-1.0.0/tests/library/corpora/mac.toml +21 -0
- edify-1.0.0/tests/library/corpora/manifest.toml +10 -0
- edify-1.0.0/tests/library/corpora/mobi.toml +10 -0
- edify-1.0.0/tests/library/corpora/msgpack.toml +12 -0
- edify-1.0.0/tests/library/corpora/nginx.toml +12 -0
- edify-1.0.0/tests/library/corpora/oauth.toml +14 -0
- edify-1.0.0/tests/library/corpora/odt.toml +10 -0
- edify-1.0.0/tests/library/corpora/openapi.toml +12 -0
- edify-1.0.0/tests/library/corpora/openid.toml +12 -0
- edify-1.0.0/tests/library/corpora/orc.toml +11 -0
- edify-1.0.0/tests/library/corpora/parquet.toml +11 -0
- edify-1.0.0/tests/library/corpora/password.toml +21 -0
- edify-1.0.0/tests/library/corpora/pdf.toml +13 -0
- edify-1.0.0/tests/library/corpora/peg.toml +11 -0
- edify-1.0.0/tests/library/corpora/pem.toml +12 -0
- edify-1.0.0/tests/library/corpora/pest.toml +12 -0
- edify-1.0.0/tests/library/corpora/pgp.toml +11 -0
- edify-1.0.0/tests/library/corpora/phone.toml +36 -0
- edify-1.0.0/tests/library/corpora/port.toml +17 -0
- edify-1.0.0/tests/library/corpora/postal.toml +35 -0
- edify-1.0.0/tests/library/corpora/pptx.toml +10 -0
- edify-1.0.0/tests/library/corpora/printable.toml +14 -0
- edify-1.0.0/tests/library/corpora/protobuf.toml +15 -0
- edify-1.0.0/tests/library/corpora/readme.toml +16 -0
- edify-1.0.0/tests/library/corpora/robots.toml +12 -0
- edify-1.0.0/tests/library/corpora/rss.toml +11 -0
- edify-1.0.0/tests/library/corpora/rtf.toml +10 -0
- edify-1.0.0/tests/library/corpora/saml.toml +10 -0
- edify-1.0.0/tests/library/corpora/semver.toml +18 -0
- edify-1.0.0/tests/library/corpora/sitemap.toml +10 -0
- edify-1.0.0/tests/library/corpora/slug.toml +17 -0
- edify-1.0.0/tests/library/corpora/soap.toml +10 -0
- edify-1.0.0/tests/library/corpora/ssh.toml +14 -0
- edify-1.0.0/tests/library/corpora/ssn.toml +23 -0
- edify-1.0.0/tests/library/corpora/svg.toml +13 -0
- edify-1.0.0/tests/library/corpora/swagger.toml +12 -0
- edify-1.0.0/tests/library/corpora/tex.toml +10 -0
- edify-1.0.0/tests/library/corpora/toml.toml +15 -0
- edify-1.0.0/tests/library/corpora/tsv.toml +13 -0
- edify-1.0.0/tests/library/corpora/unicode.toml +13 -0
- edify-1.0.0/tests/library/corpora/url.toml +23 -0
- edify-1.0.0/tests/library/corpora/uuid.toml +22 -0
- edify-1.0.0/tests/library/corpora/vin.toml +11 -0
- edify-1.0.0/tests/library/corpora/webhook.toml +12 -0
- edify-1.0.0/tests/library/corpora/x509.toml +9 -0
- edify-1.0.0/tests/library/corpora/xlsx.toml +10 -0
- edify-1.0.0/tests/library/corpora/xml.toml +17 -0
- edify-1.0.0/tests/library/corpora/yaml.toml +18 -0
- edify-1.0.0/tests/library/corpora/zip_code.toml +21 -0
- edify-1.0.0/tests/library/guid.test.py +11 -0
- edify-1.0.0/tests/library/hardening.test.py +60 -0
- edify-1.0.0/tests/library/invariants.test.py +47 -0
- edify-1.0.0/tests/library/ip.test.py +13 -0
- edify-1.0.0/tests/library/mac.test.py +11 -0
- edify-1.0.0/tests/library/media/regex.test.py +9 -0
- edify-1.0.0/tests/library/password.test.py +15 -0
- edify-1.0.0/tests/library/phone.test.py +13 -0
- edify-1.0.0/tests/library/postal.test.py +9 -0
- edify-1.0.0/tests/library/snapshots.test.py +41 -0
- edify-1.0.0/tests/library/ssn.test.py +11 -0
- edify-1.0.0/tests/library/url.test.py +13 -0
- edify-1.0.0/tests/license.test.py +16 -0
- edify-1.0.0/tests/package.test.py +17 -0
- edify-1.0.0/tests/pattern/anchors.test.py +27 -0
- edify-1.0.0/tests/pattern/boundaries.test.py +27 -0
- edify-1.0.0/tests/pattern/call.test.py +32 -0
- edify-1.0.0/tests/pattern/classes.test.py +88 -0
- edify-1.0.0/tests/pattern/composition.test.py +33 -0
- edify-1.0.0/tests/pattern/factories/assertions.test.py +30 -0
- edify-1.0.0/tests/pattern/factories/groups.test.py +71 -0
- edify-1.0.0/tests/pattern/factories/quantifiers.test.py +108 -0
- edify-1.0.0/tests/pattern/factories/values.test.py +61 -0
- edify-1.0.0/tests/pattern/operators.test.py +54 -0
- edify-1.0.0/tests/property/emitted.test.py +51 -0
- edify-1.0.0/tests/property/parsing.test.py +78 -0
- edify-1.0.0/tests/property/quantifiers.test.py +59 -0
- edify-1.0.0/tests/property/roundtrip.test.py +68 -0
- edify-1.0.0/tests/result/match.test.py +206 -0
- edify-1.0.0/tests/result/regex.test.py +126 -0
- edify-1.0.0/tests/serialize/errors.test.py +73 -0
- edify-1.0.0/tests/serialize/roundtrip.test.py +244 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0010.regex +2 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0041.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0056.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0091.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0106.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0121.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0149.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0185.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0227.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0252.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0266.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0286.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0308.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0332.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0358.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0372.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0401.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0423.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0454.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0468.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0482.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0496.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0530.regex +2 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0545.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0559.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0578.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0592.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0606.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0631.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0645.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0676.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0690.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0710.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0724.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0738.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0773.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0787.regex +2 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0801.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0815.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0829.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0843.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0873.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0887.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0908.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0922.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0936.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0967.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/0983.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1008.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1034.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1058.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1089.regex +2 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1104.regex +2 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1119.regex +2 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1134.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1148.regex +2 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1163.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1189.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1228.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1257.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1290.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1308.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1361.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1375.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1389.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1440.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1457.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1474.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1503.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1523.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1537.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1551.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1587.regex +2 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1615.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1639.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1653.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1684.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1723.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1756.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1770.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1795.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1823.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1837.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/atoms/1851.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/builder/index/0015.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/constants/0009.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/errors/0010.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/address/0022.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/address/0084.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/address/0122.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/address/0178.regex +2 -0
- edify-1.0.0/tests/snapshots/docs/api/library/address/0386.regex +2 -0
- edify-1.0.0/tests/snapshots/docs/api/library/address/0594.regex +2 -0
- edify-1.0.0/tests/snapshots/docs/api/library/address/0794.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/address/0861.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/address/0886.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/library/address/0931.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/api/library/address/1003.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/address/1041.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/address/1083.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/address/1109.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/address/1155.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/address/1242.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/api/0022.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/api/0056.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/api/0126.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/api/0167.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/api/0209.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/api/0248.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/api/0321.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/api/0368.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/api/0403.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/api/0454.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/api/0493.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/api/0553.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/auth/0021.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/auth/0048.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/auth/0077.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/auth/0104.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/auth/0131.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/auth/0158.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/auth/0201.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/auth/0218.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/auth/0247.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/auth/0274.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/auth/0320.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/auth/0405.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/auth/0422.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/auth/0449.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/auth/0476.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/auth/0504.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/auth/0533.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/auth/0560.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/auth/0587.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/color/0021.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/color/0157.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/color/0193.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/color/0227.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/color/0281.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/contact/0022.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/contact/0066.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/contact/0290.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/contact/0502.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/contact/0562.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/contact/0590.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/contact/0626.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/contact/0676.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/data/0022.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/data/0041.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/data/0081.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/data/0106.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/data/0144.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/data/0193.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/data/0254.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/data/0286.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/data/0302.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/data/0322.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/data/0381.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/data/0442.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/data/0476.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/data/0522.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/document/0022.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/document/0050.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/document/0078.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/document/0105.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/document/0132.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/document/0160.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/document/0188.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/document/0222.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/document/0249.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/document/0285.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/document/0321.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/financial/0022.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/financial/0057.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/financial/0083.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/financial/0099.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/financial/0115.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/financial/0146.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/financial/0163.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/geo/0021.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/geo/0055.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/geo/0096.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/geo/0168.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/geo/0193.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/geo/0234.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/geo/0265.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/geo/0301.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/grammar/0022.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/grammar/0057.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/grammar/0093.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/grammar/0125.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/grammar/0158.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/grammar/0190.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0022.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0068.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0095.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0130.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0156.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0185.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0212.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0271.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0288.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0320.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0336.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0352.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0369.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0386.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0417.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0456.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0493.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0529.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0554.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0572.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0608.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0641.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0680.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0727.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0755.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/identifier/0807.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/index/0008.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/media/0021.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/media/0052.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/media/0083.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/media/0128.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/media/0144.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/media/0195.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/media/0242.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/media/0272.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/media/0317.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/media/0364.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/media/0392.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/medical/0021.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/medical/0050.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/medical/0080.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/medical/0136.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/numeric/0022.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/numeric/0057.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/numeric/0083.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/numeric/0101.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/numeric/0119.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/numeric/0209.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/numeric/0240.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/numeric/0273.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/numeric/0291.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/numeric/0338.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/product/0021.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/product/0046.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/product/0074.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/publishing/0021.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/publishing/0072.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/publishing/0110.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/publishing/0155.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/publishing/0185.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/publishing/0201.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/security/0022.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/security/0053.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/security/0089.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/security/0125.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/security/0158.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/security/0195.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/security/0228.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/security/0264.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/security/0301.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/security/0333.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/security/0386.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/software/0021.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/software/0051.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/software/0104.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/software/0130.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/software/0198.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/software/0234.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/software/0333.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/software/0358.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/software/0457.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/software/0509.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/software/0556.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/software/0616.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/software/0715.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/temporal/0022.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/temporal/0090.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/temporal/0121.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/temporal/0208.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/temporal/0268.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/temporal/0285.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/temporal/0403.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/temporal/0432.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/temporal/0464.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/temporal/0525.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/temporal/0543.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/temporal/0588.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/text/0021.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/text/0037.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/text/0054.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/text/0071.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/text/0133.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/text/0158.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/text/0175.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/text/0207.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/text/0237.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/text/0272.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/text/0316.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/transport/0021.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/transport/0050.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/transport/0076.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/transport/0108.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/web/0022.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/web/0086.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/web/0111.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/web/0147.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/web/0199.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/web/0269.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/web/0326.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/web/0370.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/web/0434.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/web/0482.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/api/library/web/0519.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/atoms/finance/0080.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/atoms/grouping/0079.regex +2 -0
- edify-1.0.0/tests/snapshots/docs/guide/atoms/text/0075.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/composing/0015.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/composing/0034.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/composing/0055.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/composing/0067.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/composing/0081.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/composing/0107.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/composing/0119.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/composing/0139.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/composing/0154.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/composing/0183.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/composing/0199.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/errors/0011.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/errors/0066.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/errors/0114.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/errors/0173.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/from-regex/0010.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/from-regex/0022.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/from-regex/0033.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/from-regex/0068.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/from-regex/0086.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/from-regex/0121.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/from-regex/0141.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/integrations/0022.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/integrations/0075.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/integrations/0097.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/integrations/0124.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/integrations/0137.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/integrations/0157.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/matching/0013.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/matching/0033.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/matching/0064.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/matching/0100.regex +2 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/matching/0136.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/matching/0148.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/matching/0163.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/matching/0175.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/matching/0192.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/matching/0213.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/seeing/0012.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/seeing/0033.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/seeing/0053.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/seeing/0092.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/seeing/0109.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/seeing/0134.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/seeing/0152.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/seeing/0199.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/seeing/0215.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/serialization/0020.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/serialization/0068.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/serialization/0092.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/serialization/0131.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/serialization/0156.regex +2 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/testing/0017.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/testing/0092.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/beyond/testing/0142.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/anchors/0017.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/anchors/0027.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/anchors/0064.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/anchors/0071.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/anchors/0101.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/anchors/0113.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/anchors/0138.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/captures/0014.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/captures/0024.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/captures/0054.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/captures/0063.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/captures/0090.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/captures/0122.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/captures/0148.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/captures/0177.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/captures/0194.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/characters/0013.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/characters/0027.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/characters/0046.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/characters/0062.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/characters/0088.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/characters/0099.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/characters/0111.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/characters/0124.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/characters/0142.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/characters/0244.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/flags/0014.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/flags/0053.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/flags/0079.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/flags/0098.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/flags/0136.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/flags/0153.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/flags/0169.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/flags/0194.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/groups/0014.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/groups/0024.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/groups/0054.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/groups/0064.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/groups/0075.regex +2 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/groups/0098.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/groups/0117.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/groups/0160.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/groups/0175.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/lookaround/0017.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/lookaround/0030.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/lookaround/0058.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/lookaround/0068.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/lookaround/0093.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/lookaround/0126.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/lookaround/0180.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/lookaround/0198.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/quantifiers/0012.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/quantifiers/0036.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/quantifiers/0052.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/quantifiers/0063.regex +2 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/quantifiers/0098.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/quantifiers/0124.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/quantifiers/0141.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/quantifiers/0159.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/builder/quantifiers/0182.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/practice/debugging/0016.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/practice/debugging/0044.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/practice/debugging/0121.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/practice/debugging/0152.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/practice/debugging/0189.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/practice/performance/0022.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/practice/performance/0104.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/practice/performance/0114.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/practice/performance/0133.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/practice/recipes/0016.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/practice/recipes/0062.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/practice/recipes/0088.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/practice/recipes/0125.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/practice/recipes/0153.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/practice/unicode/0018.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/practice/unicode/0032.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/practice/unicode/0063.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/practice/unicode/0078.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/practice/unicode/0105.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/practice/unicode/0142.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/practice/unicode/0167.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/practice/unicode/0189.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/start/getting-started/0037.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/start/getting-started/0067.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/start/getting-started/0083.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/start/getting-started/0108.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/start/getting-started/0118.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/guide/start/thinking-in-edify/0015.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/start/thinking-in-edify/0028.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/start/thinking-in-edify/0055.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/start/thinking-in-edify/0078.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/start/thinking-in-edify/0103.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/start/thinking-in-edify/0129.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/start/thinking-in-edify/0140.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/start/thinking-in-edify/0155.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/guide/start/thinking-in-edify/0164.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/address/index/0010.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/api/index/0009.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/auth/index/0011.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/color/index/0009.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/contact/index/0009.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/data/index/0009.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/document/index/0009.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/financial/index/0013.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/geo/index/0009.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/grammar/index/0009.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/identifier/index/0014.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/index/0008.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/media/index/0009.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/medical/index/0012.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/numeric/index/0009.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/product/index/0008.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/publishing/index/0008.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/security/index/0013.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/software/index/0009.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/temporal/index/0013.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/text/index/0010.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/transport/index/0008.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/library/web/index/0009.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/upgrading/0.3-to-1.0/0037.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/upgrading/0.3-to-1.0/0055.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/upgrading/0.3-to-1.0/0089.regex +1 -0
- edify-1.0.0/tests/snapshots/docs/upgrading/0.3-to-1.0/0102.regex +0 -0
- edify-1.0.0/tests/snapshots/docs/upgrading/0.3-to-1.0/0138.regex +0 -0
- edify-1.0.0/tests/snapshots/fixtures/alternation_with_overlapping_prefixes_redos.regex +1 -0
- edify-1.0.0/tests/snapshots/fixtures/combined_lookaround.regex +1 -0
- edify-1.0.0/tests/snapshots/fixtures/deeply_nested_alternation.regex +1 -0
- edify-1.0.0/tests/snapshots/fixtures/email_shape_pattern.regex +1 -0
- edify-1.0.0/tests/snapshots/fixtures/hex_color_pattern.regex +1 -0
- edify-1.0.0/tests/snapshots/fixtures/named_backreference_pair.regex +1 -0
- edify-1.0.0/tests/snapshots/fixtures/nested_unbounded_quantifier_redos.regex +1 -0
- edify-1.0.0/tests/snapshots/fixtures/pattern_composition_via_use.regex +1 -0
- edify-1.0.0/tests/snapshots/library/abnf.regex +1 -0
- edify-1.0.0/tests/snapshots/library/address.regex +1 -0
- edify-1.0.0/tests/snapshots/library/age.regex +1 -0
- edify-1.0.0/tests/snapshots/library/aircraft.regex +1 -0
- edify-1.0.0/tests/snapshots/library/alpha.regex +1 -0
- edify-1.0.0/tests/snapshots/library/alphanumeric.regex +1 -0
- edify-1.0.0/tests/snapshots/library/altitude.regex +1 -0
- edify-1.0.0/tests/snapshots/library/antlr.regex +1 -0
- edify-1.0.0/tests/snapshots/library/apache.regex +1 -0
- edify-1.0.0/tests/snapshots/library/apikey.regex +1 -0
- edify-1.0.0/tests/snapshots/library/arn.regex +1 -0
- edify-1.0.0/tests/snapshots/library/arxiv.regex +1 -0
- edify-1.0.0/tests/snapshots/library/ascii.regex +1 -0
- edify-1.0.0/tests/snapshots/library/asin.regex +1 -0
- edify-1.0.0/tests/snapshots/library/atom.regex +1 -0
- edify-1.0.0/tests/snapshots/library/avro.regex +1 -0
- edify-1.0.0/tests/snapshots/library/barcode.regex +1 -0
- edify-1.0.0/tests/snapshots/library/base.regex +1 -0
- edify-1.0.0/tests/snapshots/library/bearer.regex +1 -0
- edify-1.0.0/tests/snapshots/library/bearing.regex +1 -0
- edify-1.0.0/tests/snapshots/library/bic.regex +1 -0
- edify-1.0.0/tests/snapshots/library/blood.regex +1 -0
- edify-1.0.0/tests/snapshots/library/bnf.regex +2 -0
- edify-1.0.0/tests/snapshots/library/bump.regex +1 -0
- edify-1.0.0/tests/snapshots/library/captcha.regex +1 -0
- edify-1.0.0/tests/snapshots/library/card.regex +1 -0
- edify-1.0.0/tests/snapshots/library/cargo.regex +1 -0
- edify-1.0.0/tests/snapshots/library/certificate.regex +1 -0
- edify-1.0.0/tests/snapshots/library/challenge.regex +1 -0
- edify-1.0.0/tests/snapshots/library/charset.regex +1 -0
- edify-1.0.0/tests/snapshots/library/checksum.regex +1 -0
- edify-1.0.0/tests/snapshots/library/cidr.regex +1 -0
- edify-1.0.0/tests/snapshots/library/codec.regex +1 -0
- edify-1.0.0/tests/snapshots/library/color.regex +1 -0
- edify-1.0.0/tests/snapshots/library/component.regex +1 -0
- edify-1.0.0/tests/snapshots/library/cookie.regex +1 -0
- edify-1.0.0/tests/snapshots/library/coordinate.regex +1 -0
- edify-1.0.0/tests/snapshots/library/cron.regex +1 -0
- edify-1.0.0/tests/snapshots/library/crypto.regex +1 -0
- edify-1.0.0/tests/snapshots/library/csp.regex +1 -0
- edify-1.0.0/tests/snapshots/library/csr.regex +1 -0
- edify-1.0.0/tests/snapshots/library/csrf.regex +1 -0
- edify-1.0.0/tests/snapshots/library/csv.regex +7 -0
- edify-1.0.0/tests/snapshots/library/currency.regex +1 -0
- edify-1.0.0/tests/snapshots/library/cusip.regex +1 -0
- edify-1.0.0/tests/snapshots/library/date.regex +1 -0
- edify-1.0.0/tests/snapshots/library/datetime.regex +1 -0
- edify-1.0.0/tests/snapshots/library/der.regex +0 -0
- edify-1.0.0/tests/snapshots/library/dicom.regex +1 -0
- edify-1.0.0/tests/snapshots/library/did.regex +1 -0
- edify-1.0.0/tests/snapshots/library/digest.regex +1 -0
- edify-1.0.0/tests/snapshots/library/docker.regex +1 -0
- edify-1.0.0/tests/snapshots/library/docx.regex +1 -0
- edify-1.0.0/tests/snapshots/library/doi.regex +1 -0
- edify-1.0.0/tests/snapshots/library/domain.regex +1 -0
- edify-1.0.0/tests/snapshots/library/dosage.regex +1 -0
- edify-1.0.0/tests/snapshots/library/duration.regex +1 -0
- edify-1.0.0/tests/snapshots/library/ebnf.regex +1 -0
- edify-1.0.0/tests/snapshots/library/ein.regex +1 -0
- edify-1.0.0/tests/snapshots/library/email.regex +1 -0
- edify-1.0.0/tests/snapshots/library/email_rfc_5322.regex +1 -0
- edify-1.0.0/tests/snapshots/library/emoji.regex +1 -0
- edify-1.0.0/tests/snapshots/library/encoding.regex +1 -0
- edify-1.0.0/tests/snapshots/library/epoch.regex +1 -0
- edify-1.0.0/tests/snapshots/library/epub.regex +1 -0
- edify-1.0.0/tests/snapshots/library/extension.regex +1 -0
- edify-1.0.0/tests/snapshots/library/favicon.regex +0 -0
- edify-1.0.0/tests/snapshots/library/fax.regex +1 -0
- edify-1.0.0/tests/snapshots/library/filename.regex +0 -0
- edify-1.0.0/tests/snapshots/library/filter.regex +1 -0
- edify-1.0.0/tests/snapshots/library/flight.regex +1 -0
- edify-1.0.0/tests/snapshots/library/fraction.regex +1 -0
- edify-1.0.0/tests/snapshots/library/geohash.regex +1 -0
- edify-1.0.0/tests/snapshots/library/git.regex +1 -0
- edify-1.0.0/tests/snapshots/library/glob.regex +0 -0
- edify-1.0.0/tests/snapshots/library/gradient.regex +1 -0
- edify-1.0.0/tests/snapshots/library/graphql.regex +1 -0
- edify-1.0.0/tests/snapshots/library/gtin.regex +1 -0
- edify-1.0.0/tests/snapshots/library/guid.regex +1 -0
- edify-1.0.0/tests/snapshots/library/hal.regex +1 -0
- edify-1.0.0/tests/snapshots/library/handle.regex +1 -0
- edify-1.0.0/tests/snapshots/library/hash.regex +1 -0
- edify-1.0.0/tests/snapshots/library/hdf5.regex +3 -0
- edify-1.0.0/tests/snapshots/library/hmac.regex +1 -0
- edify-1.0.0/tests/snapshots/library/hostname.regex +1 -0
- edify-1.0.0/tests/snapshots/library/htaccess.regex +1 -0
- edify-1.0.0/tests/snapshots/library/html.regex +1 -0
- edify-1.0.0/tests/snapshots/library/humans.regex +1 -0
- edify-1.0.0/tests/snapshots/library/iata.regex +1 -0
- edify-1.0.0/tests/snapshots/library/iban.regex +1 -0
- edify-1.0.0/tests/snapshots/library/icao.regex +1 -0
- edify-1.0.0/tests/snapshots/library/iccid.regex +1 -0
- edify-1.0.0/tests/snapshots/library/image.regex +1 -0
- edify-1.0.0/tests/snapshots/library/imei.regex +1 -0
- edify-1.0.0/tests/snapshots/library/imo.regex +1 -0
- edify-1.0.0/tests/snapshots/library/ini.regex +2 -0
- edify-1.0.0/tests/snapshots/library/integer.regex +1 -0
- edify-1.0.0/tests/snapshots/library/interval.regex +1 -0
- edify-1.0.0/tests/snapshots/library/ip.regex +1 -0
- edify-1.0.0/tests/snapshots/library/ipv4.regex +1 -0
- edify-1.0.0/tests/snapshots/library/ipv6.regex +1 -0
- edify-1.0.0/tests/snapshots/library/isbn.regex +1 -0
- edify-1.0.0/tests/snapshots/library/isin.regex +1 -0
- edify-1.0.0/tests/snapshots/library/iso_date.regex +1 -0
- edify-1.0.0/tests/snapshots/library/issn.regex +1 -0
- edify-1.0.0/tests/snapshots/library/itin.regex +1 -0
- edify-1.0.0/tests/snapshots/library/json.regex +1 -0
- edify-1.0.0/tests/snapshots/library/jsonapi.regex +1 -0
- edify-1.0.0/tests/snapshots/library/jwt.regex +1 -0
- edify-1.0.0/tests/snapshots/library/keyring.regex +1 -0
- edify-1.0.0/tests/snapshots/library/lei.regex +1 -0
- edify-1.0.0/tests/snapshots/library/locale.regex +1 -0
- edify-1.0.0/tests/snapshots/library/mac.regex +1 -0
- edify-1.0.0/tests/snapshots/library/makefile.regex +1 -0
- edify-1.0.0/tests/snapshots/library/manifest.regex +1 -0
- edify-1.0.0/tests/snapshots/library/medical.regex +1 -0
- edify-1.0.0/tests/snapshots/library/meid.regex +1 -0
- edify-1.0.0/tests/snapshots/library/mfa.regex +1 -0
- edify-1.0.0/tests/snapshots/library/mgrs.regex +1 -0
- edify-1.0.0/tests/snapshots/library/mimetype.regex +1 -0
- edify-1.0.0/tests/snapshots/library/mmsi.regex +1 -0
- edify-1.0.0/tests/snapshots/library/mnemonic.regex +1 -0
- edify-1.0.0/tests/snapshots/library/mobi.regex +1 -0
- edify-1.0.0/tests/snapshots/library/mpn.regex +1 -0
- edify-1.0.0/tests/snapshots/library/msgpack.regex +1 -0
- edify-1.0.0/tests/snapshots/library/natural.regex +1 -0
- edify-1.0.0/tests/snapshots/library/nginx.regex +1 -0
- edify-1.0.0/tests/snapshots/library/nonce.regex +1 -0
- edify-1.0.0/tests/snapshots/library/number.regex +1 -0
- edify-1.0.0/tests/snapshots/library/numeric.regex +1 -0
- edify-1.0.0/tests/snapshots/library/oauth.regex +1 -0
- edify-1.0.0/tests/snapshots/library/odt.regex +1 -0
- edify-1.0.0/tests/snapshots/library/offset.regex +1 -0
- edify-1.0.0/tests/snapshots/library/openapi.regex +1 -0
- edify-1.0.0/tests/snapshots/library/openid.regex +1 -0
- edify-1.0.0/tests/snapshots/library/orc.regex +1 -0
- edify-1.0.0/tests/snapshots/library/orcid.regex +1 -0
- edify-1.0.0/tests/snapshots/library/ordinal.regex +1 -0
- edify-1.0.0/tests/snapshots/library/otp.regex +1 -0
- edify-1.0.0/tests/snapshots/library/package.regex +1 -0
- edify-1.0.0/tests/snapshots/library/pager.regex +1 -0
- edify-1.0.0/tests/snapshots/library/palette.regex +1 -0
- edify-1.0.0/tests/snapshots/library/parquet.regex +1 -0
- edify-1.0.0/tests/snapshots/library/passkey.regex +1 -0
- edify-1.0.0/tests/snapshots/library/password.regex +1 -0
- edify-1.0.0/tests/snapshots/library/path.regex +0 -0
- edify-1.0.0/tests/snapshots/library/pdf.regex +1 -0
- edify-1.0.0/tests/snapshots/library/peg.regex +1 -0
- edify-1.0.0/tests/snapshots/library/pem.regex +1 -0
- edify-1.0.0/tests/snapshots/library/percentage.regex +1 -0
- edify-1.0.0/tests/snapshots/library/pest.regex +1 -0
- edify-1.0.0/tests/snapshots/library/pgp.regex +1 -0
- edify-1.0.0/tests/snapshots/library/phone.regex +1 -0
- edify-1.0.0/tests/snapshots/library/pin.regex +1 -0
- edify-1.0.0/tests/snapshots/library/place.regex +1 -0
- edify-1.0.0/tests/snapshots/library/plate.regex +1 -0
- edify-1.0.0/tests/snapshots/library/plus.regex +1 -0
- edify-1.0.0/tests/snapshots/library/pmc.regex +1 -0
- edify-1.0.0/tests/snapshots/library/pmid.regex +1 -0
- edify-1.0.0/tests/snapshots/library/port.regex +1 -0
- edify-1.0.0/tests/snapshots/library/postal.regex +1 -0
- edify-1.0.0/tests/snapshots/library/pptx.regex +1 -0
- edify-1.0.0/tests/snapshots/library/printable.regex +0 -0
- edify-1.0.0/tests/snapshots/library/protobuf.regex +1 -0
- edify-1.0.0/tests/snapshots/library/ptr.regex +1 -0
- edify-1.0.0/tests/snapshots/library/ratio.regex +1 -0
- edify-1.0.0/tests/snapshots/library/readme.regex +1 -0
- edify-1.0.0/tests/snapshots/library/ref.regex +1 -0
- edify-1.0.0/tests/snapshots/library/refresh.regex +1 -0
- edify-1.0.0/tests/snapshots/library/regex.regex +1 -0
- edify-1.0.0/tests/snapshots/library/robots.regex +1 -0
- edify-1.0.0/tests/snapshots/library/roman.regex +1 -0
- edify-1.0.0/tests/snapshots/library/routing.regex +1 -0
- edify-1.0.0/tests/snapshots/library/rss.regex +1 -0
- edify-1.0.0/tests/snapshots/library/rtf.regex +1 -0
- edify-1.0.0/tests/snapshots/library/saml.regex +1 -0
- edify-1.0.0/tests/snapshots/library/scientific.regex +1 -0
- edify-1.0.0/tests/snapshots/library/script.regex +1 -0
- edify-1.0.0/tests/snapshots/library/secret.regex +1 -0
- edify-1.0.0/tests/snapshots/library/sedol.regex +1 -0
- edify-1.0.0/tests/snapshots/library/semver.regex +1 -0
- edify-1.0.0/tests/snapshots/library/session.regex +1 -0
- edify-1.0.0/tests/snapshots/library/shebang.regex +1 -0
- edify-1.0.0/tests/snapshots/library/signature.regex +1 -0
- edify-1.0.0/tests/snapshots/library/signing.regex +1 -0
- edify-1.0.0/tests/snapshots/library/sitemap.regex +1 -0
- edify-1.0.0/tests/snapshots/library/sku.regex +1 -0
- edify-1.0.0/tests/snapshots/library/slug.regex +1 -0
- edify-1.0.0/tests/snapshots/library/soap.regex +1 -0
- edify-1.0.0/tests/snapshots/library/socket.regex +1 -0
- edify-1.0.0/tests/snapshots/library/sortcode.regex +1 -0
- edify-1.0.0/tests/snapshots/library/ssh.regex +1 -0
- edify-1.0.0/tests/snapshots/library/ssn.regex +1 -0
- edify-1.0.0/tests/snapshots/library/sso.regex +1 -0
- edify-1.0.0/tests/snapshots/library/subdomain.regex +1 -0
- edify-1.0.0/tests/snapshots/library/subnet.regex +1 -0
- edify-1.0.0/tests/snapshots/library/svg.regex +1 -0
- edify-1.0.0/tests/snapshots/library/swagger.regex +1 -0
- edify-1.0.0/tests/snapshots/library/swatch.regex +1 -0
- edify-1.0.0/tests/snapshots/library/tex.regex +1 -0
- edify-1.0.0/tests/snapshots/library/time.regex +1 -0
- edify-1.0.0/tests/snapshots/library/timestamp.regex +1 -0
- edify-1.0.0/tests/snapshots/library/timezone.regex +1 -0
- edify-1.0.0/tests/snapshots/library/tin.regex +1 -0
- edify-1.0.0/tests/snapshots/library/tld.regex +1 -0
- edify-1.0.0/tests/snapshots/library/token.regex +1 -0
- edify-1.0.0/tests/snapshots/library/toml.regex +2 -0
- edify-1.0.0/tests/snapshots/library/tsv.regex +7 -0
- edify-1.0.0/tests/snapshots/library/unicode.regex +0 -0
- edify-1.0.0/tests/snapshots/library/uri.regex +1 -0
- edify-1.0.0/tests/snapshots/library/url.regex +1 -0
- edify-1.0.0/tests/snapshots/library/useragent.regex +1 -0
- edify-1.0.0/tests/snapshots/library/username.regex +1 -0
- edify-1.0.0/tests/snapshots/library/uuid.regex +1 -0
- edify-1.0.0/tests/snapshots/library/vat.regex +1 -0
- edify-1.0.0/tests/snapshots/library/vehicle.regex +1 -0
- edify-1.0.0/tests/snapshots/library/version.regex +1 -0
- edify-1.0.0/tests/snapshots/library/vin.regex +1 -0
- edify-1.0.0/tests/snapshots/library/wallet.regex +1 -0
- edify-1.0.0/tests/snapshots/library/webauthn.regex +1 -0
- edify-1.0.0/tests/snapshots/library/webhook.regex +1 -0
- edify-1.0.0/tests/snapshots/library/word.regex +1 -0
- edify-1.0.0/tests/snapshots/library/x509.regex +1 -0
- edify-1.0.0/tests/snapshots/library/xlsx.regex +1 -0
- edify-1.0.0/tests/snapshots/library/xml.regex +1 -0
- edify-1.0.0/tests/snapshots/library/yaml.regex +1 -0
- edify-1.0.0/tests/snapshots/library/year.regex +1 -0
- edify-1.0.0/tests/snapshots/library/zip_code.regex +1 -0
- edify-1.0.0/tests/testing/snapshots.test.py +105 -0
- edify-1.0.0/tests/tools/changes.test.py +110 -0
- edify-1.0.0/tests/tools/surface.test.py +83 -0
- edify-0.2.2/.bumpversion.cfg +0 -25
- edify-0.2.2/.cookiecutterrc +0 -74
- edify-0.2.2/.coveragerc +0 -16
- edify-0.2.2/.editorconfig +0 -20
- edify-0.2.2/.github/workflows/github-actions.yml +0 -167
- edify-0.2.2/.pre-commit-config.yaml +0 -24
- edify-0.2.2/.readthedocs.yml +0 -10
- edify-0.2.2/AUTHORS.rst +0 -5
- edify-0.2.2/CHANGELOG.rst +0 -44
- edify-0.2.2/CONTRIBUTING.rst +0 -91
- edify-0.2.2/LICENSE +0 -201
- edify-0.2.2/MANIFEST.in +0 -24
- edify-0.2.2/PKG-INFO +0 -346
- edify-0.2.2/README.rst +0 -269
- edify-0.2.2/ci/bootstrap.py +0 -93
- edify-0.2.2/ci/requirements.txt +0 -5
- edify-0.2.2/ci/templates/.appveyor.yml +0 -46
- edify-0.2.2/ci/templates/.github/workflows/github-actions.yml +0 -65
- edify-0.2.2/docs/authors.rst +0 -1
- edify-0.2.2/docs/built-in/index.rst +0 -1022
- edify-0.2.2/docs/conf.py +0 -47
- edify-0.2.2/docs/index.rst +0 -20
- edify-0.2.2/docs/readme.rst +0 -1
- edify-0.2.2/docs/regex-builder/builder/index.rst +0 -937
- edify-0.2.2/docs/regex-builder/flags/index.rst +0 -96
- edify-0.2.2/docs/regex-builder/index.rst +0 -9
- edify-0.2.2/docs/requirements.txt +0 -2
- edify-0.2.2/docs/spelling_wordlist.txt +0 -11
- edify-0.2.2/images/cover.png +0 -0
- edify-0.2.2/images/logo_1500px.png +0 -0
- edify-0.2.2/images/logo_500px.png +0 -0
- edify-0.2.2/images/logo_no_text_1500px.png +0 -0
- edify-0.2.2/images/logo_no_text_500px.png +0 -0
- edify-0.2.2/images/logo_no_text_black_1500px.png +0 -0
- edify-0.2.2/images/logo_no_text_black_500px.png +0 -0
- edify-0.2.2/images/logo_no_text_t_1500px.png +0 -0
- edify-0.2.2/images/logo_no_text_t_black_1500px.png +0 -0
- edify-0.2.2/images/logo_t_1500px.png +0 -0
- edify-0.2.2/images/logo_t_500px.png +0 -0
- edify-0.2.2/images/logo_t_black_1500px.png +0 -0
- edify-0.2.2/images/logo_t_black_500px.png +0 -0
- edify-0.2.2/images/logo_wob_1500px.png +0 -0
- edify-0.2.2/images/logo_wob_500px.png +0 -0
- edify-0.2.2/pyproject.toml +0 -10
- edify-0.2.2/pytest.ini +0 -28
- edify-0.2.2/setup.cfg +0 -16
- edify-0.2.2/setup.py +0 -79
- edify-0.2.2/src/edify/__init__.py +0 -4
- edify-0.2.2/src/edify/builder/builder.py +0 -532
- edify-0.2.2/src/edify/builder/errors.py +0 -73
- edify-0.2.2/src/edify/builder/helpers/core.py +0 -79
- edify-0.2.2/src/edify/builder/helpers/quantifiers.py +0 -11
- edify-0.2.2/src/edify/builder/helpers/regex_vars.py +0 -1
- edify-0.2.2/src/edify/builder/helpers/t.py +0 -49
- edify-0.2.2/src/edify/library/__init__.py +0 -17
- edify-0.2.2/src/edify/library/date.py +0 -34
- edify-0.2.2/src/edify/library/guid.py +0 -15
- edify-0.2.2/src/edify/library/ip.py +0 -34
- edify-0.2.2/src/edify/library/mac.py +0 -17
- edify-0.2.2/src/edify/library/mail.py +0 -34
- edify-0.2.2/src/edify/library/password.py +0 -40
- edify-0.2.2/src/edify/library/phone.py +0 -19
- edify-0.2.2/src/edify/library/ssn.py +0 -17
- edify-0.2.2/src/edify/library/support/zip.py +0 -253
- edify-0.2.2/src/edify/library/url.py +0 -39
- edify-0.2.2/src/edify/library/uuid.py +0 -14
- edify-0.2.2/src/edify/library/zip.py +0 -29
- edify-0.2.2/src/edify.egg-info/PKG-INFO +0 -346
- edify-0.2.2/src/edify.egg-info/SOURCES.txt +0 -89
- edify-0.2.2/src/edify.egg-info/dependency_links.txt +0 -1
- edify-0.2.2/src/edify.egg-info/not-zip-safe +0 -1
- edify-0.2.2/src/edify.egg-info/top_level.txt +0 -1
- edify-0.2.2/tests/ssn_test.py +0 -12
- edify-0.2.2/tests/test_builder.py +0 -518
- edify-0.2.2/tests/test_date.py +0 -57
- edify-0.2.2/tests/test_email.py +0 -89
- edify-0.2.2/tests/test_guid.py +0 -11
- edify-0.2.2/tests/test_ip.py +0 -35
- edify-0.2.2/tests/test_mac.py +0 -12
- edify-0.2.2/tests/test_password.py +0 -10
- edify-0.2.2/tests/test_phone.py +0 -26
- edify-0.2.2/tests/test_url.py +0 -63
- edify-0.2.2/tests/test_zip.py +0 -34
- edify-0.2.2/tests.local.sh +0 -40
- edify-0.2.2/tox.ini +0 -85
- /edify-0.2.2/images/logo_no_text_t_black_500px.png → /edify-1.0.0/docs/_theme/edify/static/img/logo-dark-on-light.png +0 -0
- /edify-0.2.2/images/logo_no_text_t_500px.png → /edify-1.0.0/docs/_theme/edify/static/img/logo-light-on-dark.png +0 -0
- {edify-0.2.2 → edify-1.0.0}/docs/changelog.rst +0 -0
- {edify-0.2.2 → edify-1.0.0}/docs/contributing.rst +0 -0
- /edify-0.2.2/tests/test_uuid.py → /edify-1.0.0/tests/library/uuid.test.py +0 -0
edify-1.0.0/.gitignore
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
*.py[cod]
|
|
2
|
+
__pycache__
|
|
3
|
+
|
|
4
|
+
# C extensions
|
|
5
|
+
*.so
|
|
6
|
+
|
|
7
|
+
# Packages
|
|
8
|
+
*.egg
|
|
9
|
+
*.egg-info
|
|
10
|
+
dist
|
|
11
|
+
build
|
|
12
|
+
edify/version.py
|
|
13
|
+
eggs
|
|
14
|
+
.eggs
|
|
15
|
+
parts
|
|
16
|
+
bin
|
|
17
|
+
var
|
|
18
|
+
sdist
|
|
19
|
+
wheelhouse
|
|
20
|
+
develop-eggs
|
|
21
|
+
.installed.cfg
|
|
22
|
+
lib
|
|
23
|
+
lib64
|
|
24
|
+
*venv*/
|
|
25
|
+
pyvenv*/
|
|
26
|
+
pip-wheel-metadata/
|
|
27
|
+
|
|
28
|
+
# Installer logs
|
|
29
|
+
pip-log.txt
|
|
30
|
+
|
|
31
|
+
# Unit test / coverage reports
|
|
32
|
+
.coverage
|
|
33
|
+
.tox
|
|
34
|
+
.coverage.*
|
|
35
|
+
.pytest_cache/
|
|
36
|
+
.ruff_cache/
|
|
37
|
+
nosetests.xml
|
|
38
|
+
coverage.xml
|
|
39
|
+
htmlcov
|
|
40
|
+
|
|
41
|
+
# Translations
|
|
42
|
+
*.mo
|
|
43
|
+
|
|
44
|
+
# Buildout
|
|
45
|
+
.mr.developer.cfg
|
|
46
|
+
|
|
47
|
+
# IDE project files
|
|
48
|
+
.project
|
|
49
|
+
.pydevproject
|
|
50
|
+
.idea
|
|
51
|
+
.vscode
|
|
52
|
+
*.iml
|
|
53
|
+
*.komodoproject
|
|
54
|
+
|
|
55
|
+
# Complexity
|
|
56
|
+
output/*.html
|
|
57
|
+
output/*/index.html
|
|
58
|
+
|
|
59
|
+
# Sphinx
|
|
60
|
+
docs/_build
|
|
61
|
+
|
|
62
|
+
.DS_Store
|
|
63
|
+
*~
|
|
64
|
+
.*.sw[po]
|
|
65
|
+
.build
|
|
66
|
+
.ve
|
|
67
|
+
.env
|
|
68
|
+
.cache
|
|
69
|
+
.pytest
|
|
70
|
+
.benchmarks
|
|
71
|
+
.bootstrap
|
|
72
|
+
.appveyor.token
|
|
73
|
+
*.bak
|
|
74
|
+
|
|
75
|
+
# Mypy Cache
|
|
76
|
+
.mypy_cache/
|
|
77
|
+
|
|
78
|
+
# Codecov Binary
|
|
79
|
+
codecov
|
|
80
|
+
|
|
81
|
+
# Design Docs
|
|
82
|
+
design_docs
|
|
83
|
+
|
|
84
|
+
# Docs playground wheel (built at docs-build time)
|
|
85
|
+
docs/_static/edify-*.whl
|
|
86
|
+
|
|
87
|
+
# Playwright test artifacts
|
|
88
|
+
.playwright*
|
edify-1.0.0/AUTHORS.rst
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
|
|
2
|
+
Changelog
|
|
3
|
+
=========
|
|
4
|
+
1.0.0 (2026-08-04)
|
|
5
|
+
------------------
|
|
6
|
+
|
|
7
|
+
The first stable release. Edify grows from a builder into a full toolkit: a
|
|
8
|
+
library of ready-to-call validators, introspection, serialization, framework
|
|
9
|
+
integrations, and a closed match API — with the builder itself hardened and its
|
|
10
|
+
rough edges filed off, and a documentation site you can run code inside. The
|
|
11
|
+
changes worth knowing before you upgrade are below;
|
|
12
|
+
the :doc:`0.3 → 1.0 guide <upgrading/0.3-to-1.0>` walks each one with
|
|
13
|
+
before/after code.
|
|
14
|
+
|
|
15
|
+
Added
|
|
16
|
+
~~~~~
|
|
17
|
+
|
|
18
|
+
* A library of 228 ready-to-call validators — email, URL, semver, IBAN, phone, postal, and hundreds more — each a callable :class:`~edify.Pattern` organised into topical categories. See :ref:`validators-callable`.
|
|
19
|
+
* Five closed match verbs on every builder — ``test``, ``match``, ``search``, ``findall``, and ``sub`` — returning edify result wrappers. See :ref:`closed-match-verbs`.
|
|
20
|
+
* :meth:`~edify.RegexBuilder.to_regex` accepts inline flags and an ``engine`` argument, compiling against an alternate backend when one is installed. See :ref:`engine-kwarg`.
|
|
21
|
+
* Builders compare by emitted pattern: two chains that describe the same regex are equal. See :ref:`builder-equality`.
|
|
22
|
+
* Introspection: render any pattern as a plain-English explanation, an ASCII or graph diagram, or an annotated ``re.VERBOSE`` form.
|
|
23
|
+
* Serialization: round-trip a pattern through a dict or JSON.
|
|
24
|
+
* Framework integrations shipped as opt-in extras — ``edify[pydantic]``, ``edify[fastapi]``, and ``edify[django]``.
|
|
25
|
+
|
|
26
|
+
Breaking
|
|
27
|
+
~~~~~~~~
|
|
28
|
+
|
|
29
|
+
* Python 3.11 or newer is required (:pr:`64`). See :ref:`python-floor`.
|
|
30
|
+
* Relicensed from Apache-2.0 to the `MIT License <https://github.com/luciferreeves/edify/blob/main/LICENSE>`_. No API change. See :ref:`license-mit`.
|
|
31
|
+
* Invalid patterns raise an annotated error at the call site instead of emitting a subtly wrong regex. See :ref:`silent-failure-raises`.
|
|
32
|
+
* Terminal methods return a :class:`~edify.result.Regex` wrapper rather than a bare :class:`re.Pattern`. See :ref:`regex-wrapper-return`.
|
|
33
|
+
* :meth:`~edify.RegexBuilder.to_regex_string` returns the emitted source exactly as written into the pattern. See :ref:`to-regex-string-output`.
|
|
34
|
+
* Named back-references resolve by name and named groups read off ``.captures``. See :ref:`named-backref-return`.
|
|
35
|
+
* Character-class escaping is minimal and correct: only the metacharacters that need escaping inside a class are escaped. See :ref:`char-class-escape`.
|
|
36
|
+
* The validator library is organised into categories, and a handful of import paths moved with it. See :ref:`library-reorg` and :ref:`moved-import-paths`.
|
|
37
|
+
|
|
38
|
+
Documentation
|
|
39
|
+
~~~~~~~~~~~~~
|
|
40
|
+
|
|
41
|
+
* A rebuilt documentation site: a topic-first guide that works through the builder from anchors to lookaround, a page for every one of the 228 validators, and a complete API reference covering the public surface — every method, property, constant, atom, error, and type.
|
|
42
|
+
* An in-browser playground. Examples throughout the guide and the library are live: edit the chain and the emitted regex and match results update as you type, with edify itself running in your browser. The :doc:`playground <playground>` page is the same widget at full size.
|
|
43
|
+
* Every Python example in the documentation is executed by the test suite and snapshotted against the regex it emits, so a documented pattern cannot drift from what the code produces.
|
|
44
|
+
* Method names, constants, and atoms are cross-linked to their reference entries throughout the prose and inside the code samples.
|
|
45
|
+
|
|
46
|
+
Tooling and CI
|
|
47
|
+
~~~~~~~~~~~~~~
|
|
48
|
+
|
|
49
|
+
* Dropped the macOS and Windows runners from the CI matrix; Linux-only from here on. Edify is a pure-Python wheel with no platform-specific code, so the multi-OS jobs were buying ~zero signal and produced false negatives (:pr:`60`).
|
|
50
|
+
* Bumped the minimum ``virtualenv`` floor for the CI bootstrap to ``>=21.4.2`` (:pr:`56`, :pr:`58`).
|
|
51
|
+
|
|
52
|
+
0.3.0 (2026-04-29)
|
|
53
|
+
------------------
|
|
54
|
+
|
|
55
|
+
A maintenance release: Edify is dragged out of 2022 and back into modern shape. No new patterns or builder API. The minimum supported Python rises to 3.8.
|
|
56
|
+
|
|
57
|
+
Breaking
|
|
58
|
+
~~~~~~~~
|
|
59
|
+
|
|
60
|
+
* Dropped support for Python 3.7. Edify now requires Python 3.8 or newer (:pr:`32`).
|
|
61
|
+
|
|
62
|
+
Added
|
|
63
|
+
~~~~~
|
|
64
|
+
|
|
65
|
+
* Support for Python 3.12, 3.13, and 3.14, with the matrix and Read the Docs build configuration updated to match (:pr:`31`).
|
|
66
|
+
|
|
67
|
+
Tooling and CI
|
|
68
|
+
~~~~~~~~~~~~~~
|
|
69
|
+
|
|
70
|
+
* Bumped GitHub Actions to current major versions: ``actions/checkout@v5``, ``actions/setup-python@v5``, ``github/codeql-action@v3``. All workflow jobs now run on the Node 20 runtime instead of the deprecated Node 16. ``pypa/gh-action-pypi-publish`` SHA refreshed to ``v1.14.0`` (:pr:`35`).
|
|
71
|
+
* PyPy CI matrix moved off the EOL ``pypy-3.8`` line to the maintained ``pypy-3.10`` and ``pypy-3.11`` (:pr:`37`).
|
|
72
|
+
* ``.pre-commit-config.yaml`` modernised: every hook pinned to an immutable tag instead of a floating branch ref, dead repo URLs corrected (``gitlab.com/pycqa/flake8`` → ``github.com/PyCQA/flake8``, ``timothycrosley/isort`` → ``PyCQA/isort``), and ``psf/black`` swapped for the upstream-recommended ``psf/black-pre-commit-mirror`` (:pr:`33`).
|
|
73
|
+
|
|
74
|
+
Dependencies
|
|
75
|
+
~~~~~~~~~~~~
|
|
76
|
+
|
|
77
|
+
* Bumped minimum versions: ``setuptools >=75.0``, ``pip >=26.0.1``, ``virtualenv >=21.3.0``, ``six >=1.17.0``, ``sphinx >=7.4.7`` (:pr:`25`, :pr:`26`, :pr:`27`, :pr:`28`, :pr:`29`).
|
|
78
|
+
|
|
79
|
+
Repository infrastructure
|
|
80
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
81
|
+
|
|
82
|
+
* Added ``.github/CODEOWNERS`` and ``natsuoto`` to ``AUTHORS.rst`` for the new agent-driven contribution flow (:pr:`39`).
|
|
83
|
+
* Locked ``main``: 1 approving code-owner review required, 31 status-check contexts required (the full matrix), linear history enforced, no force pushes or deletions, applies to administrators.
|
|
84
|
+
* Repo-level ``allow_auto_merge`` enabled — PRs auto-merge once review and CI gates pass.
|
|
85
|
+
|
|
86
|
+
Housekeeping
|
|
87
|
+
~~~~~~~~~~~~
|
|
88
|
+
|
|
89
|
+
* Dropped a dead ``py37``/``pypy37`` exclusion from the cookiecutter Jinja template and refreshed the docs copyright year (:pr:`43`).
|
|
90
|
+
* Updated author website URL in ``AUTHORS.rst`` and ``.cookiecutterrc`` (:pr:`41`).
|
|
91
|
+
* Removed all cookiecutter regeneration scaffolding — ``.cookiecutterrc``, ``ci/bootstrap.py``, and ``ci/templates/`` (containing dead AppVeyor config and a workflow template that lagged the live one) — along with the ``[testenv:bootstrap]`` env, related ``MANIFEST.in`` / ``setup.cfg`` / ``.pre-commit-config.yaml`` exclusions, and the dead Python 3.7 branch in ``tests.local.sh``. The local-test script's per-version ``if/elif`` chain is now a single programmatic ``tox -e py$VERSION`` lookup, which adapts automatically when Python versions are added or removed from the matrix (:pr:`47`).
|
|
92
|
+
|
|
93
|
+
0.2.2 (2022-12-22)
|
|
94
|
+
------------------
|
|
95
|
+
* Added Support for Python 3.11
|
|
96
|
+
* Added more RegexBuilder Examples
|
|
97
|
+
* Fixed Documentation Typos
|
|
98
|
+
|
|
99
|
+
0.2.1 (2022-11-27)
|
|
100
|
+
------------------
|
|
101
|
+
|
|
102
|
+
* This is a Quick Fix Release to fix the incomplete release of 0.2.0. The release was intended to drop support for 3.6, but the metadata was not updated to reflect this. This release fixes that. v0.2.0 remains available on PyPI, but is incompatible with Python 3.6. Using it with other versions of Python is not a problem. Other than the metadata, the two releases are identical.
|
|
103
|
+
|
|
104
|
+
0.2.0 (2022-11-27)
|
|
105
|
+
------------------
|
|
106
|
+
This is a minor release with a few new built-in validators along with some small changes and bug fixes.
|
|
107
|
+
|
|
108
|
+
Validators added:
|
|
109
|
+
~~~~~~~~~~~~~~~~~
|
|
110
|
+
* URL Validator
|
|
111
|
+
* UUID Validator
|
|
112
|
+
* GUID Validator
|
|
113
|
+
* SSN Validator
|
|
114
|
+
* Mac Address (IEEE 802) Validator
|
|
115
|
+
* Zip Code Validator
|
|
116
|
+
* Password Validator
|
|
117
|
+
|
|
118
|
+
Documentation:
|
|
119
|
+
~~~~~~~~~~~~~~
|
|
120
|
+
|
|
121
|
+
* Added documentation for new validators
|
|
122
|
+
* Add warning for trade-offs in email regex validation
|
|
123
|
+
|
|
124
|
+
Bug Fixes:
|
|
125
|
+
~~~~~~~~~~
|
|
126
|
+
|
|
127
|
+
* Fixed Phone pattern failing for service numbers and 4 digit numbers (See `#16 <https://github.com/luciferreeves/edify/issues/16>`_ for more information)
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
0.1.0 (2022-09-10)
|
|
131
|
+
------------------
|
|
132
|
+
|
|
133
|
+
* First release on PyPI.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
============
|
|
2
|
+
Contributing
|
|
3
|
+
============
|
|
4
|
+
|
|
5
|
+
Thanks for helping improve Edify. This guide gets you from a fresh clone to a
|
|
6
|
+
green pull request.
|
|
7
|
+
|
|
8
|
+
Setup
|
|
9
|
+
=====
|
|
10
|
+
|
|
11
|
+
Edify uses `uv <https://docs.astral.sh/uv/>`_ for everything. Install it, then
|
|
12
|
+
sync the full development environment:
|
|
13
|
+
|
|
14
|
+
.. code-block:: bash
|
|
15
|
+
|
|
16
|
+
git clone https://github.com/luciferreeves/edify
|
|
17
|
+
cd edify
|
|
18
|
+
uv sync --all-groups
|
|
19
|
+
|
|
20
|
+
That creates ``.venv`` with the library, its optional extras, and every
|
|
21
|
+
development tool. Prefix commands with ``uv run`` to use it.
|
|
22
|
+
|
|
23
|
+
The gate
|
|
24
|
+
========
|
|
25
|
+
|
|
26
|
+
Every change must pass the same checks CI runs. Run them locally before you push:
|
|
27
|
+
|
|
28
|
+
.. code-block:: bash
|
|
29
|
+
|
|
30
|
+
uv run ruff check . # lint
|
|
31
|
+
uv run ruff format --check . # formatting
|
|
32
|
+
uv run mypy edify tools # type-check the library and tooling
|
|
33
|
+
uv run pyright # strict type-check (library, tests, tools)
|
|
34
|
+
uv run pytest # tests — 100% coverage is required
|
|
35
|
+
|
|
36
|
+
All of these must be clean. Coverage is enforced at 100%: a line that isn't
|
|
37
|
+
exercised by a test through the public API fails the build.
|
|
38
|
+
|
|
39
|
+
House style
|
|
40
|
+
===========
|
|
41
|
+
|
|
42
|
+
- **No suppressions.** No ``# noqa``, ``# type: ignore``, or ``# pragma`` — if a
|
|
43
|
+
check complains, restructure the code so it doesn't.
|
|
44
|
+
- **Single-purpose files with single-word names.** ``edify/builder/anchors.py``,
|
|
45
|
+
not ``edify/builder/anchor_helpers.py``.
|
|
46
|
+
- **Tests mirror the source tree** under ``tests/`` and are named ``*.test.py``
|
|
47
|
+
(for example ``tests/builder/anchors.test.py``).
|
|
48
|
+
- **Tests exercise the public API.** Reach behavior through the documented
|
|
49
|
+
surface, never by importing private helpers — that's what keeps coverage
|
|
50
|
+
honest.
|
|
51
|
+
|
|
52
|
+
Public surface and changelog
|
|
53
|
+
============================
|
|
54
|
+
|
|
55
|
+
The exported API is captured in ``tools/surface/.public``. If your change adds,
|
|
56
|
+
removes, or alters a public name, regenerate the snapshot and record the change:
|
|
57
|
+
|
|
58
|
+
.. code-block:: bash
|
|
59
|
+
|
|
60
|
+
uv run python tools/surface/surface.py --write
|
|
61
|
+
|
|
62
|
+
For a **breaking** change, also add a fragment under ``changes/`` describing the
|
|
63
|
+
migration (see ``changes/README.rst`` for the format). A CI gate fails any pull
|
|
64
|
+
request whose public surface moves without one.
|
|
65
|
+
|
|
66
|
+
Docs
|
|
67
|
+
====
|
|
68
|
+
|
|
69
|
+
The documentation is a custom Sphinx site in ``docs/``. Build the playground
|
|
70
|
+
wheel and serve the site with live reload:
|
|
71
|
+
|
|
72
|
+
.. code-block:: bash
|
|
73
|
+
|
|
74
|
+
uv run python tools/docs/build.py
|
|
75
|
+
uv run --with sphinx-autobuild sphinx-autobuild docs docs/_build/html
|
|
76
|
+
|
|
77
|
+
Commits and pull requests
|
|
78
|
+
=========================
|
|
79
|
+
|
|
80
|
+
- **Commits** use a single-line, imperative, `conventional-commit
|
|
81
|
+
<https://www.conventionalcommits.org>`_ subject — ``feat(builder): ...``,
|
|
82
|
+
``fix(compile): ...``, ``docs: ...``. Keep rationale for the pull-request
|
|
83
|
+
description, not the commit body.
|
|
84
|
+
- **Pull requests** describe *what changed and why*. Reference the issues they
|
|
85
|
+
close with ``Closes #123`` so they land together.
|
|
86
|
+
|
|
87
|
+
That's it — open the pull request and the checks will tell you if anything's off.
|
edify-1.0.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2022-2026 Bobby
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
edify-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: edify
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Regular Expressions Made Simple
|
|
5
|
+
Project-URL: Documentation, https://edify.readthedocs.io/
|
|
6
|
+
Project-URL: Changelog, https://edify.readthedocs.io/en/latest/changelog.html
|
|
7
|
+
Project-URL: Issue Tracker, https://github.com/luciferreeves/edify/issues
|
|
8
|
+
Author-email: Bobby <me@shi.foo>, natsuoto <natsuoto@thatcomputerscientist.com>
|
|
9
|
+
License-Expression: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
14
|
+
Classifier: Operating System :: POSIX
|
|
15
|
+
Classifier: Operating System :: Unix
|
|
16
|
+
Classifier: Programming Language :: Python
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
23
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
24
|
+
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
25
|
+
Classifier: Topic :: Utilities
|
|
26
|
+
Requires-Python: >=3.11
|
|
27
|
+
Provides-Extra: all
|
|
28
|
+
Requires-Dist: django>=4.2; extra == 'all'
|
|
29
|
+
Requires-Dist: fastapi>=0.100; extra == 'all'
|
|
30
|
+
Requires-Dist: graphviz>=0.20; extra == 'all'
|
|
31
|
+
Requires-Dist: pydantic>=2.0; extra == 'all'
|
|
32
|
+
Requires-Dist: regex>=2024.11.6; extra == 'all'
|
|
33
|
+
Provides-Extra: django
|
|
34
|
+
Requires-Dist: django>=4.2; extra == 'django'
|
|
35
|
+
Provides-Extra: fastapi
|
|
36
|
+
Requires-Dist: fastapi>=0.100; extra == 'fastapi'
|
|
37
|
+
Provides-Extra: graphviz
|
|
38
|
+
Requires-Dist: graphviz>=0.20; extra == 'graphviz'
|
|
39
|
+
Provides-Extra: pydantic
|
|
40
|
+
Requires-Dist: pydantic>=2.0; extra == 'pydantic'
|
|
41
|
+
Provides-Extra: regex
|
|
42
|
+
Requires-Dist: regex>=2024.11.6; extra == 'regex'
|
|
43
|
+
Description-Content-Type: text/x-rst
|
|
44
|
+
|
|
45
|
+
=====
|
|
46
|
+
Edify
|
|
47
|
+
=====
|
|
48
|
+
|
|
49
|
+
.. image:: https://raw.githubusercontent.com/luciferreeves/edify/main/images/cover.png
|
|
50
|
+
:alt: Edify — simple regular expressions
|
|
51
|
+
|
|
52
|
+
|
|
|
53
|
+
|
|
54
|
+
**Edify builds regular expressions you can actually read.** It's a fluent,
|
|
55
|
+
immutable regex builder for Python: you describe a pattern step by step in plain
|
|
56
|
+
English, and Edify hands you a compiled regex — one your teammates can review in
|
|
57
|
+
a pull request instead of squinting at.
|
|
58
|
+
|
|
59
|
+
Why Edify
|
|
60
|
+
=========
|
|
61
|
+
|
|
62
|
+
A regular expression is easy to write and hard to read. Six months later nobody
|
|
63
|
+
remembers what ``^(?:0x)?([0-9a-fA-F]{4})$`` was meant to accept, and the person
|
|
64
|
+
reviewing the change that touches it has no way to be sure either. The syntax
|
|
65
|
+
gives you nowhere to put a name, a comment, or a seam.
|
|
66
|
+
|
|
67
|
+
Edify moves the pattern into ordinary Python, where all three fit:
|
|
68
|
+
|
|
69
|
+
- Methods say what they do. ``.one_or_more().digit()`` needs no decoding.
|
|
70
|
+
- The quantity comes before the thing it counts, the way you say it aloud —
|
|
71
|
+
``.exactly(4).digit()`` is *exactly four digits*.
|
|
72
|
+
- Every call returns a new builder, so a pattern you share can be extended in
|
|
73
|
+
two directions without either one disturbing the other.
|
|
74
|
+
- A mistake raises an error that points at the call that caused it and names the
|
|
75
|
+
fix, rather than emitting a regex that is subtly wrong.
|
|
76
|
+
|
|
77
|
+
A first pattern
|
|
78
|
+
===============
|
|
79
|
+
|
|
80
|
+
.. code-block:: python
|
|
81
|
+
|
|
82
|
+
from edify import RegexBuilder
|
|
83
|
+
|
|
84
|
+
# A 16-bit hex literal like "0xC0DE" — with the four hex digits captured.
|
|
85
|
+
hex_literal = (
|
|
86
|
+
RegexBuilder()
|
|
87
|
+
.start_of_input()
|
|
88
|
+
.optional().string("0x")
|
|
89
|
+
.capture()
|
|
90
|
+
.exactly(4).any_of().range("0", "9").range("a", "f").range("A", "F").end()
|
|
91
|
+
.end()
|
|
92
|
+
.end_of_input()
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
hex_literal.to_regex_string() # '^(?:0x)?([0-9a-fA-F]{4})$'
|
|
96
|
+
hex_literal.test("0xC0DE") # True
|
|
97
|
+
hex_literal.test("0xZZZZ") # False
|
|
98
|
+
|
|
99
|
+
Read the chain top to bottom and it tells you what it accepts.
|
|
100
|
+
|
|
101
|
+
Patterns you don't have to write
|
|
102
|
+
================================
|
|
103
|
+
|
|
104
|
+
Edify ships 228 ready-made validators. Each is a callable pattern, so checking a
|
|
105
|
+
value is a function call:
|
|
106
|
+
|
|
107
|
+
.. code-block:: python
|
|
108
|
+
|
|
109
|
+
from edify.library import email, ipv4, semver
|
|
110
|
+
|
|
111
|
+
email("a@b.com") # True
|
|
112
|
+
semver("1.4.0") # True
|
|
113
|
+
ipv4("10.0.0.1") # True
|
|
114
|
+
ipv4("999.1.1.1") # False — the octet range is enforced
|
|
115
|
+
|
|
116
|
+
They are assembled from 83 named fragments you can build with too, so a pattern
|
|
117
|
+
of your own inherits the same range checks rather than approximating them:
|
|
118
|
+
|
|
119
|
+
.. code-block:: python
|
|
120
|
+
|
|
121
|
+
from edify import Pattern, atoms
|
|
122
|
+
|
|
123
|
+
endpoint = (
|
|
124
|
+
Pattern().start_of_input()
|
|
125
|
+
.named_capture("host").use(atoms.ipv4).end()
|
|
126
|
+
.char(":")
|
|
127
|
+
.named_capture("port").use(atoms.port).end()
|
|
128
|
+
.end_of_input()
|
|
129
|
+
)
|
|
130
|
+
|
|
131
|
+
endpoint.to_regex().match("10.0.0.1:8080").groupdict()
|
|
132
|
+
# {'host': '10.0.0.1', 'port': '8080'}
|
|
133
|
+
endpoint("10.0.0.1:99999") # False — 99999 is not a port
|
|
134
|
+
|
|
135
|
+
Ask a pattern what it means
|
|
136
|
+
===========================
|
|
137
|
+
|
|
138
|
+
Because Edify keeps the structure rather than a string, it can describe a
|
|
139
|
+
pattern back to you — in prose, as a diagram, or as an annotated verbose regex:
|
|
140
|
+
|
|
141
|
+
.. code-block:: python
|
|
142
|
+
|
|
143
|
+
from edify import RegexBuilder
|
|
144
|
+
|
|
145
|
+
year = RegexBuilder().start_of_input().exactly(4).digit().end_of_input()
|
|
146
|
+
print(year.to_regex().explain())
|
|
147
|
+
|
|
148
|
+
# - The text must start with exactly 4 digits (0-9).
|
|
149
|
+
#
|
|
150
|
+
# Text this pattern accepts:
|
|
151
|
+
# 1234
|
|
152
|
+
|
|
153
|
+
That same structure is what lets Edify warn you at build time about a pattern
|
|
154
|
+
shaped for catastrophic backtracking, and round-trip a pattern through JSON.
|
|
155
|
+
|
|
156
|
+
Install
|
|
157
|
+
=======
|
|
158
|
+
|
|
159
|
+
Edify requires **Python 3.11+**:
|
|
160
|
+
|
|
161
|
+
.. code-block:: bash
|
|
162
|
+
|
|
163
|
+
pip install edify
|
|
164
|
+
|
|
165
|
+
Optional extras add the alternate regex engine and the framework integrations:
|
|
166
|
+
``edify[regex]``, ``edify[pydantic]``, ``edify[fastapi]``, ``edify[django]``, or
|
|
167
|
+
``edify[all]``.
|
|
168
|
+
|
|
169
|
+
Also in the box
|
|
170
|
+
===============
|
|
171
|
+
|
|
172
|
+
- **Introspection** — a plain-English explanation, an ASCII or rendered diagram,
|
|
173
|
+
or an annotated ``re.VERBOSE`` form of any pattern.
|
|
174
|
+
- **Serialization** — round-trip a pattern through a dict or JSON and keep a
|
|
175
|
+
first-class pattern on the other side, not a flattened string.
|
|
176
|
+
- **Integrations** — pydantic, FastAPI, and Django validators from a pattern.
|
|
177
|
+
- **Testing helpers** — assert a pattern's contract beside its definition, and
|
|
178
|
+
snapshot what it emits.
|
|
179
|
+
- **Reverse parsing** — turn an existing regex string back into a chain and read
|
|
180
|
+
what it does.
|
|
181
|
+
|
|
182
|
+
Documentation
|
|
183
|
+
=============
|
|
184
|
+
|
|
185
|
+
`edify.readthedocs.io <https://edify.readthedocs.io>`_ has the guide, a page for
|
|
186
|
+
every validator, and the full API reference. Examples throughout the site are
|
|
187
|
+
live — edit the chain and the emitted regex and match results update as you
|
|
188
|
+
type, with Edify running in your browser.
|
|
189
|
+
|
|
190
|
+
License and contributing
|
|
191
|
+
========================
|
|
192
|
+
|
|
193
|
+
Edify is released under the `MIT License
|
|
194
|
+
<https://github.com/luciferreeves/edify/blob/main/LICENSE>`_. Contributions are
|
|
195
|
+
welcome — see `CONTRIBUTING.rst
|
|
196
|
+
<https://github.com/luciferreeves/edify/blob/main/CONTRIBUTING.rst>`_ to get set up.
|
edify-1.0.0/README.rst
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
=====
|
|
2
|
+
Edify
|
|
3
|
+
=====
|
|
4
|
+
|
|
5
|
+
.. image:: https://raw.githubusercontent.com/luciferreeves/edify/main/images/cover.png
|
|
6
|
+
:alt: Edify — simple regular expressions
|
|
7
|
+
|
|
8
|
+
|
|
|
9
|
+
|
|
10
|
+
**Edify builds regular expressions you can actually read.** It's a fluent,
|
|
11
|
+
immutable regex builder for Python: you describe a pattern step by step in plain
|
|
12
|
+
English, and Edify hands you a compiled regex — one your teammates can review in
|
|
13
|
+
a pull request instead of squinting at.
|
|
14
|
+
|
|
15
|
+
Why Edify
|
|
16
|
+
=========
|
|
17
|
+
|
|
18
|
+
A regular expression is easy to write and hard to read. Six months later nobody
|
|
19
|
+
remembers what ``^(?:0x)?([0-9a-fA-F]{4})$`` was meant to accept, and the person
|
|
20
|
+
reviewing the change that touches it has no way to be sure either. The syntax
|
|
21
|
+
gives you nowhere to put a name, a comment, or a seam.
|
|
22
|
+
|
|
23
|
+
Edify moves the pattern into ordinary Python, where all three fit:
|
|
24
|
+
|
|
25
|
+
- Methods say what they do. ``.one_or_more().digit()`` needs no decoding.
|
|
26
|
+
- The quantity comes before the thing it counts, the way you say it aloud —
|
|
27
|
+
``.exactly(4).digit()`` is *exactly four digits*.
|
|
28
|
+
- Every call returns a new builder, so a pattern you share can be extended in
|
|
29
|
+
two directions without either one disturbing the other.
|
|
30
|
+
- A mistake raises an error that points at the call that caused it and names the
|
|
31
|
+
fix, rather than emitting a regex that is subtly wrong.
|
|
32
|
+
|
|
33
|
+
A first pattern
|
|
34
|
+
===============
|
|
35
|
+
|
|
36
|
+
.. code-block:: python
|
|
37
|
+
|
|
38
|
+
from edify import RegexBuilder
|
|
39
|
+
|
|
40
|
+
# A 16-bit hex literal like "0xC0DE" — with the four hex digits captured.
|
|
41
|
+
hex_literal = (
|
|
42
|
+
RegexBuilder()
|
|
43
|
+
.start_of_input()
|
|
44
|
+
.optional().string("0x")
|
|
45
|
+
.capture()
|
|
46
|
+
.exactly(4).any_of().range("0", "9").range("a", "f").range("A", "F").end()
|
|
47
|
+
.end()
|
|
48
|
+
.end_of_input()
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
hex_literal.to_regex_string() # '^(?:0x)?([0-9a-fA-F]{4})$'
|
|
52
|
+
hex_literal.test("0xC0DE") # True
|
|
53
|
+
hex_literal.test("0xZZZZ") # False
|
|
54
|
+
|
|
55
|
+
Read the chain top to bottom and it tells you what it accepts.
|
|
56
|
+
|
|
57
|
+
Patterns you don't have to write
|
|
58
|
+
================================
|
|
59
|
+
|
|
60
|
+
Edify ships 228 ready-made validators. Each is a callable pattern, so checking a
|
|
61
|
+
value is a function call:
|
|
62
|
+
|
|
63
|
+
.. code-block:: python
|
|
64
|
+
|
|
65
|
+
from edify.library import email, ipv4, semver
|
|
66
|
+
|
|
67
|
+
email("a@b.com") # True
|
|
68
|
+
semver("1.4.0") # True
|
|
69
|
+
ipv4("10.0.0.1") # True
|
|
70
|
+
ipv4("999.1.1.1") # False — the octet range is enforced
|
|
71
|
+
|
|
72
|
+
They are assembled from 83 named fragments you can build with too, so a pattern
|
|
73
|
+
of your own inherits the same range checks rather than approximating them:
|
|
74
|
+
|
|
75
|
+
.. code-block:: python
|
|
76
|
+
|
|
77
|
+
from edify import Pattern, atoms
|
|
78
|
+
|
|
79
|
+
endpoint = (
|
|
80
|
+
Pattern().start_of_input()
|
|
81
|
+
.named_capture("host").use(atoms.ipv4).end()
|
|
82
|
+
.char(":")
|
|
83
|
+
.named_capture("port").use(atoms.port).end()
|
|
84
|
+
.end_of_input()
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
endpoint.to_regex().match("10.0.0.1:8080").groupdict()
|
|
88
|
+
# {'host': '10.0.0.1', 'port': '8080'}
|
|
89
|
+
endpoint("10.0.0.1:99999") # False — 99999 is not a port
|
|
90
|
+
|
|
91
|
+
Ask a pattern what it means
|
|
92
|
+
===========================
|
|
93
|
+
|
|
94
|
+
Because Edify keeps the structure rather than a string, it can describe a
|
|
95
|
+
pattern back to you — in prose, as a diagram, or as an annotated verbose regex:
|
|
96
|
+
|
|
97
|
+
.. code-block:: python
|
|
98
|
+
|
|
99
|
+
from edify import RegexBuilder
|
|
100
|
+
|
|
101
|
+
year = RegexBuilder().start_of_input().exactly(4).digit().end_of_input()
|
|
102
|
+
print(year.to_regex().explain())
|
|
103
|
+
|
|
104
|
+
# - The text must start with exactly 4 digits (0-9).
|
|
105
|
+
#
|
|
106
|
+
# Text this pattern accepts:
|
|
107
|
+
# 1234
|
|
108
|
+
|
|
109
|
+
That same structure is what lets Edify warn you at build time about a pattern
|
|
110
|
+
shaped for catastrophic backtracking, and round-trip a pattern through JSON.
|
|
111
|
+
|
|
112
|
+
Install
|
|
113
|
+
=======
|
|
114
|
+
|
|
115
|
+
Edify requires **Python 3.11+**:
|
|
116
|
+
|
|
117
|
+
.. code-block:: bash
|
|
118
|
+
|
|
119
|
+
pip install edify
|
|
120
|
+
|
|
121
|
+
Optional extras add the alternate regex engine and the framework integrations:
|
|
122
|
+
``edify[regex]``, ``edify[pydantic]``, ``edify[fastapi]``, ``edify[django]``, or
|
|
123
|
+
``edify[all]``.
|
|
124
|
+
|
|
125
|
+
Also in the box
|
|
126
|
+
===============
|
|
127
|
+
|
|
128
|
+
- **Introspection** — a plain-English explanation, an ASCII or rendered diagram,
|
|
129
|
+
or an annotated ``re.VERBOSE`` form of any pattern.
|
|
130
|
+
- **Serialization** — round-trip a pattern through a dict or JSON and keep a
|
|
131
|
+
first-class pattern on the other side, not a flattened string.
|
|
132
|
+
- **Integrations** — pydantic, FastAPI, and Django validators from a pattern.
|
|
133
|
+
- **Testing helpers** — assert a pattern's contract beside its definition, and
|
|
134
|
+
snapshot what it emits.
|
|
135
|
+
- **Reverse parsing** — turn an existing regex string back into a chain and read
|
|
136
|
+
what it does.
|
|
137
|
+
|
|
138
|
+
Documentation
|
|
139
|
+
=============
|
|
140
|
+
|
|
141
|
+
`edify.readthedocs.io <https://edify.readthedocs.io>`_ has the guide, a page for
|
|
142
|
+
every validator, and the full API reference. Examples throughout the site are
|
|
143
|
+
live — edit the chain and the emitted regex and match results update as you
|
|
144
|
+
type, with Edify running in your browser.
|
|
145
|
+
|
|
146
|
+
License and contributing
|
|
147
|
+
========================
|
|
148
|
+
|
|
149
|
+
Edify is released under the `MIT License
|
|
150
|
+
<https://github.com/luciferreeves/edify/blob/main/LICENSE>`_. Contributions are
|
|
151
|
+
welcome — see `CONTRIBUTING.rst
|
|
152
|
+
<https://github.com/luciferreeves/edify/blob/main/CONTRIBUTING.rst>`_ to get set up.
|
|
File without changes
|