aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--edify/atoms/__init__.py36
-rw-r--r--edify/atoms/clock.py (renamed from edify/atoms/time_24h.py)4
-rw-r--r--edify/atoms/date_iso8601.py10
-rw-r--r--edify/atoms/hex_nibble.py8
-rw-r--r--edify/atoms/hexcolor.py (renamed from edify/atoms/hex_color.py)14
-rw-r--r--edify/atoms/hostname.py4
-rw-r--r--edify/atoms/isodate.py8
-rw-r--r--edify/atoms/label.py (renamed from edify/atoms/domain_label.py)4
-rw-r--r--edify/atoms/localpart.py (renamed from edify/atoms/email_local.py)4
-rw-r--r--edify/atoms/nibble.py8
-rw-r--r--edify/atoms/octet.py (renamed from edify/atoms/ipv4_octet.py)4
-rw-r--r--edify/atoms/port.py (renamed from edify/atoms/port_number.py)4
-rw-r--r--edify/atoms/uuid.py (renamed from edify/atoms/uuid_v4.py)16
-rw-r--r--edify/library/address/ip.py12
-rw-r--r--edify/library/address/ptr.py4
-rw-r--r--edify/library/address/socket.py6
-rw-r--r--tests/atoms/clock.test.py (renamed from tests/atoms/time_24h.test.py)8
-rw-r--r--tests/atoms/hexcolor.test.py (renamed from tests/atoms/hex_color.test.py)8
-rw-r--r--tests/atoms/isodate.test.py (renamed from tests/atoms/date_iso8601.test.py)8
-rw-r--r--tests/atoms/label.test.py (renamed from tests/atoms/domain_label.test.py)8
-rw-r--r--tests/atoms/localpart.test.py (renamed from tests/atoms/email_local.test.py)8
-rw-r--r--tests/atoms/nibble.test.py (renamed from tests/atoms/hex_nibble.test.py)8
-rw-r--r--tests/atoms/octet.test.py (renamed from tests/atoms/ipv4_octet.test.py)8
-rw-r--r--tests/atoms/port.test.py (renamed from tests/atoms/port_number.test.py)8
-rw-r--r--tests/atoms/uuid.test.py (renamed from tests/atoms/uuid_v4.test.py)8
25 files changed, 106 insertions, 112 deletions
diff --git a/edify/atoms/__init__.py b/edify/atoms/__init__.py
index b30189c..17e1c67 100644
--- a/edify/atoms/__init__.py
+++ b/edify/atoms/__init__.py
@@ -5,32 +5,32 @@ Each atom is an unanchored fragment meant to be spliced into a builder via
directly from ``edify.atoms``.
"""
-from edify.atoms.date_iso8601 import date_iso8601
-from edify.atoms.domain_label import domain_label
-from edify.atoms.email_local import email_local
-from edify.atoms.hex_color import hex_color
-from edify.atoms.hex_nibble import hex_nibble
+from edify.atoms.clock import clock
+from edify.atoms.hexcolor import hexcolor
from edify.atoms.hostname import hostname
-from edify.atoms.ipv4_octet import ipv4_octet
-from edify.atoms.port_number import port_number
+from edify.atoms.isodate import isodate
+from edify.atoms.label import label
+from edify.atoms.localpart import localpart
+from edify.atoms.nibble import nibble
+from edify.atoms.octet import octet
+from edify.atoms.port import port
from edify.atoms.semver import semver
from edify.atoms.slug import slug
-from edify.atoms.time_24h import time_24h
from edify.atoms.username import username
-from edify.atoms.uuid_v4 import uuid_v4
+from edify.atoms.uuid import uuid
__all__ = [
- "date_iso8601",
- "domain_label",
- "email_local",
- "hex_color",
- "hex_nibble",
+ "clock",
+ "hexcolor",
"hostname",
- "ipv4_octet",
- "port_number",
+ "isodate",
+ "label",
+ "localpart",
+ "nibble",
+ "octet",
+ "port",
"semver",
"slug",
- "time_24h",
"username",
- "uuid_v4",
+ "uuid",
]
diff --git a/edify/atoms/time_24h.py b/edify/atoms/clock.py
index a9302bb..9ad64d3 100644
--- a/edify/atoms/time_24h.py
+++ b/edify/atoms/clock.py
@@ -1,10 +1,10 @@
-"""``time_24h`` — 24-hour ``HH:MM[:SS]`` clock time."""
+"""``clock`` — 24-hour ``HH:MM[:SS]`` clock time."""
from __future__ import annotations
from edify import Pattern
-time_24h = (
+clock = (
Pattern()
.any_of()
.subexpression(Pattern().char("2").range("0", "3"))
diff --git a/edify/atoms/date_iso8601.py b/edify/atoms/date_iso8601.py
deleted file mode 100644
index 6ca34da..0000000
--- a/edify/atoms/date_iso8601.py
+++ /dev/null
@@ -1,10 +0,0 @@
-"""``date_iso8601`` — ISO 8601 calendar date ``YYYY-MM-DD``."""
-
-from __future__ import annotations
-
-from edify import Pattern
-
-date_iso8601 = (
- Pattern().exactly(4).digit().char("-").exactly(2).digit().char("-").exactly(2).digit()
-)
-"""Composable :class:`Pattern` fragment for an ISO 8601 ``YYYY-MM-DD`` date."""
diff --git a/edify/atoms/hex_nibble.py b/edify/atoms/hex_nibble.py
deleted file mode 100644
index 3c0dc02..0000000
--- a/edify/atoms/hex_nibble.py
+++ /dev/null
@@ -1,8 +0,0 @@
-"""``hex_nibble`` — one hexadecimal nibble ``[0-9a-fA-F]``."""
-
-from __future__ import annotations
-
-from edify import Pattern
-
-hex_nibble = Pattern().any_of().range("0", "9").range("a", "f").range("A", "F").end()
-"""Composable :class:`Pattern` fragment for one mixed-case hex nibble."""
diff --git a/edify/atoms/hex_color.py b/edify/atoms/hexcolor.py
index df1f7ac..cdb162b 100644
--- a/edify/atoms/hex_color.py
+++ b/edify/atoms/hexcolor.py
@@ -1,22 +1,22 @@
-"""``hex_color`` — CSS hex-colour shape (``#RGB``, ``#RGBA``, ``#RRGGBB``, ``#RRGGBBAA``)."""
+"""``hexcolor`` — CSS hex-colour shape (``#RGB``, ``#RGBA``, ``#RRGGBB``, ``#RRGGBBAA``)."""
from __future__ import annotations
from edify import Pattern
-from edify.atoms.hex_nibble import hex_nibble
+from edify.atoms.nibble import nibble
-hex_color = (
+hexcolor = (
Pattern()
.char("#")
.any_of()
.exactly(8)
- .use(hex_nibble)
+ .use(nibble)
.exactly(6)
- .use(hex_nibble)
+ .use(nibble)
.exactly(4)
- .use(hex_nibble)
+ .use(nibble)
.exactly(3)
- .use(hex_nibble)
+ .use(nibble)
.end()
)
"""Composable :class:`Pattern` fragment for a CSS hex colour."""
diff --git a/edify/atoms/hostname.py b/edify/atoms/hostname.py
index ad04036..14feb0f 100644
--- a/edify/atoms/hostname.py
+++ b/edify/atoms/hostname.py
@@ -3,7 +3,7 @@
from __future__ import annotations
from edify import Pattern
-from edify.atoms.domain_label import domain_label
+from edify.atoms.label import label
-hostname = Pattern().use(domain_label).zero_or_more().group().char(".").use(domain_label).end()
+hostname = Pattern().use(label).zero_or_more().group().char(".").use(label).end()
"""Composable :class:`Pattern` fragment for an RFC 1123 hostname."""
diff --git a/edify/atoms/isodate.py b/edify/atoms/isodate.py
new file mode 100644
index 0000000..7408bba
--- /dev/null
+++ b/edify/atoms/isodate.py
@@ -0,0 +1,8 @@
+"""``isodate`` — ISO 8601 calendar date ``YYYY-MM-DD``."""
+
+from __future__ import annotations
+
+from edify import Pattern
+
+isodate = Pattern().exactly(4).digit().char("-").exactly(2).digit().char("-").exactly(2).digit()
+"""Composable :class:`Pattern` fragment for an ISO 8601 ``YYYY-MM-DD`` date."""
diff --git a/edify/atoms/domain_label.py b/edify/atoms/label.py
index cb13f7c..bad0ae4 100644
--- a/edify/atoms/domain_label.py
+++ b/edify/atoms/label.py
@@ -1,10 +1,10 @@
-"""``domain_label`` — one RFC 1123 DNS label."""
+"""``label`` — one RFC 1123 DNS label."""
from __future__ import annotations
from edify import Pattern
-domain_label = (
+label = (
Pattern()
.any_of()
.range("a", "z")
diff --git a/edify/atoms/email_local.py b/edify/atoms/localpart.py
index 9b95e89..92f9682 100644
--- a/edify/atoms/email_local.py
+++ b/edify/atoms/localpart.py
@@ -1,10 +1,10 @@
-"""``email_local`` — RFC 5322 email local-part shape (permissive)."""
+"""``localpart`` — RFC 5322 email local-part shape (permissive)."""
from __future__ import annotations
from edify import Pattern
-email_local = (
+localpart = (
Pattern()
.between(1, 64)
.any_of()
diff --git a/edify/atoms/nibble.py b/edify/atoms/nibble.py
new file mode 100644
index 0000000..7e7cd9e
--- /dev/null
+++ b/edify/atoms/nibble.py
@@ -0,0 +1,8 @@
+"""``nibble`` — one hexadecimal nibble ``[0-9a-fA-F]``."""
+
+from __future__ import annotations
+
+from edify import Pattern
+
+nibble = Pattern().any_of().range("0", "9").range("a", "f").range("A", "F").end()
+"""Composable :class:`Pattern` fragment for one mixed-case hex nibble."""
diff --git a/edify/atoms/ipv4_octet.py b/edify/atoms/octet.py
index 8ccc1bc..5911b47 100644
--- a/edify/atoms/ipv4_octet.py
+++ b/edify/atoms/octet.py
@@ -1,10 +1,10 @@
-"""``ipv4_octet`` — one IPv4 octet in the range ``0``-``255``."""
+"""``octet`` — one IPv4 octet in the range ``0``-``255``."""
from __future__ import annotations
from edify import Pattern, any_of
-ipv4_octet = any_of(
+octet = any_of(
Pattern().string("25").range("0", "5"),
Pattern().char("2").range("0", "4").digit(),
Pattern().char("1").digit().digit(),
diff --git a/edify/atoms/port_number.py b/edify/atoms/port.py
index 36a4214..1a52024 100644
--- a/edify/atoms/port_number.py
+++ b/edify/atoms/port.py
@@ -1,10 +1,10 @@
-"""``port_number`` — one TCP/UDP port in the range ``0``-``65535``."""
+"""``port`` — one TCP/UDP port in the range ``0``-``65535``."""
from __future__ import annotations
from edify import Pattern, any_of
-port_number = any_of(
+port = any_of(
Pattern().string("6553").range("0", "5"),
Pattern().string("655").range("0", "2").digit(),
Pattern().string("65").range("0", "4").digit().digit(),
diff --git a/edify/atoms/uuid_v4.py b/edify/atoms/uuid.py
index ea99660..cb5fe4f 100644
--- a/edify/atoms/uuid_v4.py
+++ b/edify/atoms/uuid.py
@@ -1,27 +1,27 @@
-"""``uuid_v4`` — version-4 UUID shape."""
+"""``uuid`` — version-4 UUID shape."""
from __future__ import annotations
from edify import Pattern
-from edify.atoms.hex_nibble import hex_nibble
+from edify.atoms.nibble import nibble
-uuid_v4 = (
+uuid = (
Pattern()
.exactly(8)
- .use(hex_nibble)
+ .use(nibble)
.char("-")
.exactly(4)
- .use(hex_nibble)
+ .use(nibble)
.char("-")
.char("4")
.exactly(3)
- .use(hex_nibble)
+ .use(nibble)
.char("-")
.any_of_chars("89ab")
.exactly(3)
- .use(hex_nibble)
+ .use(nibble)
.char("-")
.exactly(12)
- .use(hex_nibble)
+ .use(nibble)
)
"""Composable :class:`Pattern` fragment for a version-4 UUID."""
diff --git a/edify/library/address/ip.py b/edify/library/address/ip.py
index 3665fd7..85945d7 100644
--- a/edify/library/address/ip.py
+++ b/edify/library/address/ip.py
@@ -3,17 +3,15 @@
from __future__ import annotations
from edify import Pattern, any_of
-from edify.atoms.hex_nibble import hex_nibble
-from edify.atoms.ipv4_octet import ipv4_octet
+from edify.atoms.nibble import nibble
+from edify.atoms.octet import octet
def _hex_group() -> Pattern:
- return Pattern().between(1, 4).subexpression(hex_nibble)
+ return Pattern().between(1, 4).subexpression(nibble)
-_ipv4 = (
- Pattern().subexpression(ipv4_octet).exactly(3).group().char(".").subexpression(ipv4_octet).end()
-)
+_ipv4 = Pattern().subexpression(octet).exactly(3).group().char(".").subexpression(octet).end()
def _b1() -> Pattern:
@@ -97,7 +95,7 @@ def _b_link_local() -> Pattern:
.group()
.char(":")
.between(0, 4)
- .subexpression(hex_nibble)
+ .subexpression(nibble)
.end()
.char("%")
.one_or_more()
diff --git a/edify/library/address/ptr.py b/edify/library/address/ptr.py
index 17b4b68..87382f1 100644
--- a/edify/library/address/ptr.py
+++ b/edify/library/address/ptr.py
@@ -3,7 +3,7 @@
from __future__ import annotations
from edify import Pattern, any_of
-from edify.atoms.hex_nibble import hex_nibble
+from edify.atoms.nibble import nibble
_ipv4_ptr = (
Pattern()
@@ -23,7 +23,7 @@ _ipv6_ptr = (
Pattern()
.exactly(32)
.group()
- .subexpression(hex_nibble)
+ .subexpression(nibble)
.char(".")
.end()
.string("ip6")
diff --git a/edify/library/address/socket.py b/edify/library/address/socket.py
index d65dedb..7231448 100644
--- a/edify/library/address/socket.py
+++ b/edify/library/address/socket.py
@@ -3,11 +3,9 @@
from __future__ import annotations
from edify import Pattern, any_of
-from edify.atoms.ipv4_octet import ipv4_octet
+from edify.atoms.octet import octet
-_ipv4 = (
- Pattern().subexpression(ipv4_octet).exactly(3).group().char(".").subexpression(ipv4_octet).end()
-)
+_ipv4 = Pattern().subexpression(octet).exactly(3).group().char(".").subexpression(octet).end()
_ipv6_bracket = (
Pattern()
.char("[")
diff --git a/tests/atoms/time_24h.test.py b/tests/atoms/clock.test.py
index a3865eb..2abe10a 100644
--- a/tests/atoms/time_24h.test.py
+++ b/tests/atoms/clock.test.py
@@ -1,9 +1,9 @@
from edify import Pattern
-from edify.atoms import time_24h
+from edify.atoms import clock
def _anchored():
- return Pattern().start_of_input().use(time_24h).end_of_input()
+ return Pattern().start_of_input().use(clock).end_of_input()
def test_accepts_sample_from_shape():
@@ -15,12 +15,12 @@ def test_rejects_off_shape_input():
def test_atom_composes_inside_a_larger_pattern():
- embedded = Pattern().start_of_input().string("v=").use(time_24h).end_of_input()
+ embedded = Pattern().start_of_input().string("v=").use(clock).end_of_input()
assert embedded("v=" + "23:59")
assert not embedded("23:59")
def test_atom_regex_string_is_non_empty():
- fragment = time_24h.to_regex_string()
+ fragment = clock.to_regex_string()
assert fragment
assert isinstance(fragment, str)
diff --git a/tests/atoms/hex_color.test.py b/tests/atoms/hexcolor.test.py
index 9e5b270..6dbd865 100644
--- a/tests/atoms/hex_color.test.py
+++ b/tests/atoms/hexcolor.test.py
@@ -1,9 +1,9 @@
from edify import Pattern
-from edify.atoms import hex_color
+from edify.atoms import hexcolor
def _anchored():
- return Pattern().start_of_input().use(hex_color).end_of_input()
+ return Pattern().start_of_input().use(hexcolor).end_of_input()
def test_accepts_sample_from_shape():
@@ -15,12 +15,12 @@ def test_rejects_off_shape_input():
def test_atom_composes_inside_a_larger_pattern():
- embedded = Pattern().start_of_input().string("v=").use(hex_color).end_of_input()
+ embedded = Pattern().start_of_input().string("v=").use(hexcolor).end_of_input()
assert embedded("v=" + "#abc")
assert not embedded("#abc")
def test_atom_regex_string_is_non_empty():
- fragment = hex_color.to_regex_string()
+ fragment = hexcolor.to_regex_string()
assert fragment
assert isinstance(fragment, str)
diff --git a/tests/atoms/date_iso8601.test.py b/tests/atoms/isodate.test.py
index 71b0af6..aefb79a 100644
--- a/tests/atoms/date_iso8601.test.py
+++ b/tests/atoms/isodate.test.py
@@ -1,9 +1,9 @@
from edify import Pattern
-from edify.atoms import date_iso8601
+from edify.atoms import isodate
def _anchored():
- return Pattern().start_of_input().use(date_iso8601).end_of_input()
+ return Pattern().start_of_input().use(isodate).end_of_input()
def test_accepts_sample_from_shape():
@@ -15,12 +15,12 @@ def test_rejects_off_shape_input():
def test_atom_composes_inside_a_larger_pattern():
- embedded = Pattern().start_of_input().string("v=").use(date_iso8601).end_of_input()
+ embedded = Pattern().start_of_input().string("v=").use(isodate).end_of_input()
assert embedded("v=" + "2024-01-15")
assert not embedded("2024-01-15")
def test_atom_regex_string_is_non_empty():
- fragment = date_iso8601.to_regex_string()
+ fragment = isodate.to_regex_string()
assert fragment
assert isinstance(fragment, str)
diff --git a/tests/atoms/domain_label.test.py b/tests/atoms/label.test.py
index 58d02c1..ba16b34 100644
--- a/tests/atoms/domain_label.test.py
+++ b/tests/atoms/label.test.py
@@ -1,9 +1,9 @@
from edify import Pattern
-from edify.atoms import domain_label
+from edify.atoms import label
def _anchored():
- return Pattern().start_of_input().use(domain_label).end_of_input()
+ return Pattern().start_of_input().use(label).end_of_input()
def test_accepts_sample_from_shape():
@@ -15,12 +15,12 @@ def test_rejects_off_shape_input():
def test_atom_composes_inside_a_larger_pattern():
- embedded = Pattern().start_of_input().string("v=").use(domain_label).end_of_input()
+ embedded = Pattern().start_of_input().string("v=").use(label).end_of_input()
assert embedded("v=" + "example")
assert not embedded("example")
def test_atom_regex_string_is_non_empty():
- fragment = domain_label.to_regex_string()
+ fragment = label.to_regex_string()
assert fragment
assert isinstance(fragment, str)
diff --git a/tests/atoms/email_local.test.py b/tests/atoms/localpart.test.py
index 440f2ba..51003ca 100644
--- a/tests/atoms/email_local.test.py
+++ b/tests/atoms/localpart.test.py
@@ -1,9 +1,9 @@
from edify import Pattern
-from edify.atoms import email_local
+from edify.atoms import localpart
def _anchored():
- return Pattern().start_of_input().use(email_local).end_of_input()
+ return Pattern().start_of_input().use(localpart).end_of_input()
def test_accepts_sample_from_shape():
@@ -15,12 +15,12 @@ def test_rejects_off_shape_input():
def test_atom_composes_inside_a_larger_pattern():
- embedded = Pattern().start_of_input().string("v=").use(email_local).end_of_input()
+ embedded = Pattern().start_of_input().string("v=").use(localpart).end_of_input()
assert embedded("v=" + "user.name")
assert not embedded("user.name")
def test_atom_regex_string_is_non_empty():
- fragment = email_local.to_regex_string()
+ fragment = localpart.to_regex_string()
assert fragment
assert isinstance(fragment, str)
diff --git a/tests/atoms/hex_nibble.test.py b/tests/atoms/nibble.test.py
index 578a7a1..94f39c8 100644
--- a/tests/atoms/hex_nibble.test.py
+++ b/tests/atoms/nibble.test.py
@@ -1,9 +1,9 @@
from edify import Pattern
-from edify.atoms import hex_nibble
+from edify.atoms import nibble
def _anchored():
- return Pattern().start_of_input().use(hex_nibble).end_of_input()
+ return Pattern().start_of_input().use(nibble).end_of_input()
def test_accepts_sample_from_shape():
@@ -15,12 +15,12 @@ def test_rejects_off_shape_input():
def test_atom_composes_inside_a_larger_pattern():
- embedded = Pattern().start_of_input().string("v=").use(hex_nibble).end_of_input()
+ embedded = Pattern().start_of_input().string("v=").use(nibble).end_of_input()
assert embedded("v=" + "a")
assert not embedded("a")
def test_atom_regex_string_is_non_empty():
- fragment = hex_nibble.to_regex_string()
+ fragment = nibble.to_regex_string()
assert fragment
assert isinstance(fragment, str)
diff --git a/tests/atoms/ipv4_octet.test.py b/tests/atoms/octet.test.py
index 5b9631b..00985b2 100644
--- a/tests/atoms/ipv4_octet.test.py
+++ b/tests/atoms/octet.test.py
@@ -1,9 +1,9 @@
from edify import Pattern
-from edify.atoms import ipv4_octet
+from edify.atoms import octet
def _anchored():
- return Pattern().start_of_input().use(ipv4_octet).end_of_input()
+ return Pattern().start_of_input().use(octet).end_of_input()
def test_accepts_sample_from_shape():
@@ -15,12 +15,12 @@ def test_rejects_off_shape_input():
def test_atom_composes_inside_a_larger_pattern():
- embedded = Pattern().start_of_input().string("v=").use(ipv4_octet).end_of_input()
+ embedded = Pattern().start_of_input().string("v=").use(octet).end_of_input()
assert embedded("v=" + "192")
assert not embedded("192")
def test_atom_regex_string_is_non_empty():
- fragment = ipv4_octet.to_regex_string()
+ fragment = octet.to_regex_string()
assert fragment
assert isinstance(fragment, str)
diff --git a/tests/atoms/port_number.test.py b/tests/atoms/port.test.py
index 04bae73..3c3958b 100644
--- a/tests/atoms/port_number.test.py
+++ b/tests/atoms/port.test.py
@@ -1,9 +1,9 @@
from edify import Pattern
-from edify.atoms import port_number
+from edify.atoms import port
def _anchored():
- return Pattern().start_of_input().use(port_number).end_of_input()
+ return Pattern().start_of_input().use(port).end_of_input()
def test_accepts_sample_from_shape():
@@ -15,12 +15,12 @@ def test_rejects_off_shape_input():
def test_atom_composes_inside_a_larger_pattern():
- embedded = Pattern().start_of_input().string("v=").use(port_number).end_of_input()
+ embedded = Pattern().start_of_input().string("v=").use(port).end_of_input()
assert embedded("v=" + "65535")
assert not embedded("65535")
def test_atom_regex_string_is_non_empty():
- fragment = port_number.to_regex_string()
+ fragment = port.to_regex_string()
assert fragment
assert isinstance(fragment, str)
diff --git a/tests/atoms/uuid_v4.test.py b/tests/atoms/uuid.test.py
index d672aa5..b085719 100644
--- a/tests/atoms/uuid_v4.test.py
+++ b/tests/atoms/uuid.test.py
@@ -1,9 +1,9 @@
from edify import Pattern
-from edify.atoms import uuid_v4
+from edify.atoms import uuid
def _anchored():
- return Pattern().start_of_input().use(uuid_v4).end_of_input()
+ return Pattern().start_of_input().use(uuid).end_of_input()
def test_accepts_sample_from_shape():
@@ -15,12 +15,12 @@ def test_rejects_off_shape_input():
def test_atom_composes_inside_a_larger_pattern():
- embedded = Pattern().start_of_input().string("v=").use(uuid_v4).end_of_input()
+ embedded = Pattern().start_of_input().string("v=").use(uuid).end_of_input()
assert embedded("v=" + "550e8400-e29b-41d4-a716-446655440000")
assert not embedded("550e8400-e29b-41d4-a716-446655440000")
def test_atom_regex_string_is_non_empty():
- fragment = uuid_v4.to_regex_string()
+ fragment = uuid.to_regex_string()
assert fragment
assert isinstance(fragment, str)