diff options
| -rw-r--r-- | edify/library/medical/__init__.py | 2 | ||||
| -rw-r--r-- | edify/library/medical/medical.py | 12 | ||||
| -rw-r--r-- | edify/library/product/__init__.py | 4 | ||||
| -rw-r--r-- | edify/library/product/barcode.py | 5 | ||||
| -rw-r--r-- | edify/library/product/gtin.py | 5 | ||||
| -rw-r--r-- | edify/library/product/mpn.py | 5 | ||||
| -rw-r--r-- | edify/library/publishing/__init__.py | 7 | ||||
| -rw-r--r-- | edify/library/publishing/arxiv.py | 7 | ||||
| -rw-r--r-- | edify/library/publishing/doi.py | 5 | ||||
| -rw-r--r-- | edify/library/publishing/isbn.py | 5 | ||||
| -rw-r--r-- | edify/library/publishing/issn.py | 5 | ||||
| -rw-r--r-- | edify/library/publishing/pmc.py | 5 | ||||
| -rw-r--r-- | edify/library/publishing/pmid.py | 5 | ||||
| -rw-r--r-- | edify/library/transport/__init__.py | 3 | ||||
| -rw-r--r-- | edify/library/transport/aircraft.py | 5 | ||||
| -rw-r--r-- | edify/library/transport/vehicle.py | 5 |
16 files changed, 85 insertions, 0 deletions
diff --git a/edify/library/medical/__init__.py b/edify/library/medical/__init__.py new file mode 100644 index 0000000..914507f --- /dev/null +++ b/edify/library/medical/__init__.py @@ -0,0 +1,2 @@ +from edify.library.medical.medical import medical +__all__ = ["medical"] diff --git a/edify/library/medical/medical.py b/edify/library/medical/medical.py new file mode 100644 index 0000000..67840f1 --- /dev/null +++ b/edify/library/medical/medical.py @@ -0,0 +1,12 @@ +"""``medical`` — medical-coding-system code shape (SNOMED, ICD, NPI, RxNorm, LOINC).""" +from __future__ import annotations +from edify.library._support.regex import RegexBackedPattern +medical = RegexBackedPattern( + r"^(?:" + r"\d{6,18}" + r"|[A-TV-Z][0-9][A-Z0-9](?:\.[A-Z0-9]{1,4})?" + r"|\d{10}" + r"|\d{1,7}-\d" + r")$" +) +"""Callable :class:`Pattern` for medical-coding-system codes.""" diff --git a/edify/library/product/__init__.py b/edify/library/product/__init__.py new file mode 100644 index 0000000..79bcdce --- /dev/null +++ b/edify/library/product/__init__.py @@ -0,0 +1,4 @@ +from edify.library.product.barcode import barcode +from edify.library.product.gtin import gtin +from edify.library.product.mpn import mpn +__all__ = ["barcode", "gtin", "mpn"] diff --git a/edify/library/product/barcode.py b/edify/library/product/barcode.py new file mode 100644 index 0000000..9526075 --- /dev/null +++ b/edify/library/product/barcode.py @@ -0,0 +1,5 @@ +"""``barcode`` — generic barcode value shape (numeric or alphanumeric).""" +from __future__ import annotations +from edify.library._support.regex import RegexBackedPattern +barcode = RegexBackedPattern(r"^[A-Z0-9]{6,48}$") +"""Callable :class:`Pattern` for a generic barcode value shape.""" diff --git a/edify/library/product/gtin.py b/edify/library/product/gtin.py new file mode 100644 index 0000000..9551330 --- /dev/null +++ b/edify/library/product/gtin.py @@ -0,0 +1,5 @@ +"""``gtin`` — GTIN barcode number (8/12/13/14 digits, includes UPC and EAN).""" +from __future__ import annotations +from edify.library._support.regex import RegexBackedPattern +gtin = RegexBackedPattern(r"^\d{8}$|^\d{12}$|^\d{13}$|^\d{14}$") +"""Callable :class:`Pattern` for the GTIN family: 8-, 12-, 13-, or 14-digit barcode number.""" diff --git a/edify/library/product/mpn.py b/edify/library/product/mpn.py new file mode 100644 index 0000000..e6ec73a --- /dev/null +++ b/edify/library/product/mpn.py @@ -0,0 +1,5 @@ +"""``mpn`` — Manufacturer Part Number (permissive alphanumeric).""" +from __future__ import annotations +from edify.library._support.regex import RegexBackedPattern +mpn = RegexBackedPattern(r"^[A-Z0-9][A-Z0-9\-_.]{1,63}$") +"""Callable :class:`Pattern` for a permissive Manufacturer Part Number.""" diff --git a/edify/library/publishing/__init__.py b/edify/library/publishing/__init__.py new file mode 100644 index 0000000..2a72746 --- /dev/null +++ b/edify/library/publishing/__init__.py @@ -0,0 +1,7 @@ +from edify.library.publishing.arxiv import arxiv +from edify.library.publishing.doi import doi +from edify.library.publishing.isbn import isbn +from edify.library.publishing.issn import issn +from edify.library.publishing.pmc import pmc +from edify.library.publishing.pmid import pmid +__all__ = ["arxiv", "doi", "isbn", "issn", "pmc", "pmid"] diff --git a/edify/library/publishing/arxiv.py b/edify/library/publishing/arxiv.py new file mode 100644 index 0000000..53bd772 --- /dev/null +++ b/edify/library/publishing/arxiv.py @@ -0,0 +1,7 @@ +"""``arxiv`` — arXiv identifier shape (new format ``YYMM.NNNNN`` or legacy ``category/YYMMNNN``).""" +from __future__ import annotations +from edify.library._support.regex import RegexBackedPattern +arxiv = RegexBackedPattern( + r"^(?:\d{4}\.\d{4,5}(?:v\d+)?|[a-z]{2,10}(?:\.[A-Z]{2})?/\d{7}(?:v\d+)?)$" +) +"""Callable :class:`Pattern` for an arXiv identifier.""" diff --git a/edify/library/publishing/doi.py b/edify/library/publishing/doi.py new file mode 100644 index 0000000..a35f1d7 --- /dev/null +++ b/edify/library/publishing/doi.py @@ -0,0 +1,5 @@ +"""``doi`` — DOI shape.""" +from __future__ import annotations +from edify.library._support.regex import RegexBackedPattern +doi = RegexBackedPattern(r"^10\.\d{4,9}/[-._;()/:A-Za-z0-9]+$") +"""Callable :class:`Pattern` for the DOI shape.""" diff --git a/edify/library/publishing/isbn.py b/edify/library/publishing/isbn.py new file mode 100644 index 0000000..aa15470 --- /dev/null +++ b/edify/library/publishing/isbn.py @@ -0,0 +1,5 @@ +"""``isbn`` — ISBN-10 or ISBN-13 shape (with or without dashes).""" +from __future__ import annotations +from edify.library._support.regex import RegexBackedPattern +isbn = RegexBackedPattern(r"^(?:\d[- ]?){9}[\dXx]$|^(?:\d[- ]?){12}\d$") +"""Callable :class:`Pattern` for ISBN-10 or ISBN-13 shape (with or without dash/space separators).""" diff --git a/edify/library/publishing/issn.py b/edify/library/publishing/issn.py new file mode 100644 index 0000000..72b22f1 --- /dev/null +++ b/edify/library/publishing/issn.py @@ -0,0 +1,5 @@ +"""``issn`` — ISSN shape (``NNNN-NNNC``).""" +from __future__ import annotations +from edify.library._support.regex import RegexBackedPattern +issn = RegexBackedPattern(r"^\d{4}-\d{3}[\dXx]$") +"""Callable :class:`Pattern` for the ISSN shape.""" diff --git a/edify/library/publishing/pmc.py b/edify/library/publishing/pmc.py new file mode 100644 index 0000000..c8e0d30 --- /dev/null +++ b/edify/library/publishing/pmc.py @@ -0,0 +1,5 @@ +"""``pmc`` — PMC identifier shape (``PMCnnnnn...``).""" +from __future__ import annotations +from edify.library._support.regex import RegexBackedPattern +pmc = RegexBackedPattern(r"^PMC\d{1,9}$") +"""Callable :class:`Pattern` for a PubMed Central identifier.""" diff --git a/edify/library/publishing/pmid.py b/edify/library/publishing/pmid.py new file mode 100644 index 0000000..229f2f0 --- /dev/null +++ b/edify/library/publishing/pmid.py @@ -0,0 +1,5 @@ +"""``pmid`` — PubMed identifier shape (1-8 digits).""" +from __future__ import annotations +from edify.library._support.regex import RegexBackedPattern +pmid = RegexBackedPattern(r"^\d{1,8}$") +"""Callable :class:`Pattern` for a PubMed identifier (1-8 digits).""" diff --git a/edify/library/transport/__init__.py b/edify/library/transport/__init__.py new file mode 100644 index 0000000..5786e46 --- /dev/null +++ b/edify/library/transport/__init__.py @@ -0,0 +1,3 @@ +from edify.library.transport.aircraft import aircraft +from edify.library.transport.vehicle import vehicle +__all__ = ["aircraft", "vehicle"] diff --git a/edify/library/transport/aircraft.py b/edify/library/transport/aircraft.py new file mode 100644 index 0000000..93247bb --- /dev/null +++ b/edify/library/transport/aircraft.py @@ -0,0 +1,5 @@ +"""``aircraft`` — aircraft-registration shape (e.g. ``N123AB``, ``G-ABCD``).""" +from __future__ import annotations +from edify.library._support.regex import RegexBackedPattern +aircraft = RegexBackedPattern(r"^[A-Z]{1,2}-?[A-Z0-9]{1,5}$") +"""Callable :class:`Pattern` for an aircraft-registration mark.""" diff --git a/edify/library/transport/vehicle.py b/edify/library/transport/vehicle.py new file mode 100644 index 0000000..bce70bd --- /dev/null +++ b/edify/library/transport/vehicle.py @@ -0,0 +1,5 @@ +"""``vehicle`` — vehicle/vessel/container identifier shape (permissive alphanumeric).""" +from __future__ import annotations +from edify.library._support.regex import RegexBackedPattern +vehicle = RegexBackedPattern(r"^[A-Z0-9][A-Z0-9\- ]{3,17}$") +"""Callable :class:`Pattern` for a permissive transport-vehicle identifier.""" |
