Skip to content

Commit a7f231a

Browse files
authored
Make CountryCode union of Literal and phantom types (#136)
1 parent c325163 commit a7f231a

17 files changed

Lines changed: 449 additions & 164 deletions

.github/workflows/ci.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141
path: ~/.cache/pip
4242
key: ${{ runner.os }}-pip-${{ hashFiles('setup.cfg') }}
4343
restore-keys: ${{ runner.os }}-pip
44-
- run: pip install -e '.[iso3166,phonenumbers,pydantic,test]'
44+
- run: pip install -e '.[phonenumbers,pydantic,test]'
4545
- run: make coverage
4646
- run: make coverage-report
4747
- name: Report coverage

.pre-commit-config.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ repos:
5858
additional_dependencies:
5959
- pytest
6060
- typeguard
61-
- iso3166
6261
- phonenumbers>=8.12.33
6362
- pydantic
6463
- repo: https://github.com/mgedmin/check-manifest

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,4 @@ format-readme:
4040

4141
.PHONY: clean
4242
clean:
43-
rm -rf *.egg-info **{/**,}/__pycache__ build dist .coverage
43+
rm -rf {**/,}*.egg-info **{/**,}/__pycache__ build dist .coverage coverage.xml

docs/pages/external-wrappers.rst

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -38,27 +38,3 @@ Exceptions
3838

3939
.. autoexception:: phantom.ext.phonenumbers.InvalidPhoneNumber
4040
:show-inheritance:
41-
42-
Country codes
43-
-------------
44-
45-
.. automodule:: phantom.ext.iso3166
46-
47-
Types
48-
^^^^^
49-
50-
.. autoclass:: phantom.ext.iso3166.Alpha2
51-
:members:
52-
:undoc-members:
53-
:show-inheritance:
54-
55-
Functions
56-
^^^^^^^^^
57-
58-
.. autofunction:: phantom.ext.iso3166.normalize_alpha2_country_code
59-
60-
Exceptions
61-
^^^^^^^^^^
62-
63-
.. autoexception:: phantom.ext.iso3166.InvalidCountryCode
64-
:show-inheritance:

docs/pages/types.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@ Boolean
2121
:undoc-members:
2222
:show-inheritance:
2323

24+
Country codes
25+
-------------
26+
27+
.. automodule:: phantom.iso3166
28+
:members:
29+
:undoc-members:
30+
:show-inheritance:
31+
2432
Datetime
2533
--------
2634

docs/requirements.in

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,5 @@ m2r2
55
mistune<2
66
typeguard
77
furo==2021.4.11b34
8-
iso3166
98
phonenumbers
109
typing-extensions

docs/requirements.txt

Lines changed: 40 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#
2-
# This file is autogenerated by pip-compile
2+
# This file is autogenerated by pip-compile with python 3.9
33
# To update, run:
44
#
55
# 'make requirements'
@@ -21,9 +21,9 @@ certifi==2021.5.30 \
2121
--hash=sha256:2bbf76fd432960138b3ef6dda3dde0544f27cbf8546c458e60baf371917ba9ee \
2222
--hash=sha256:50b1e4f8446b06f41be7dd6338db18e0990601dce795c2b1686458aa7e8fa7d8
2323
# via requests
24-
charset-normalizer==2.0.0 \
25-
--hash=sha256:76fd234253352853909a367630ea0040001df0b4f6e9cb655a7bf861e81a6d32 \
26-
--hash=sha256:878bfe99324a9f3191e9a0f555e52ca2e0e1ad14b69802bc3f9a7afc71ffcfa4
24+
charset-normalizer==2.0.4 \
25+
--hash=sha256:0c8911edd15d19223366a194a513099a302055a962bca2cec0f54b8b63175d8b \
26+
--hash=sha256:f23667ebe1084be45f6ae0538e4a5a865206544097e4e8bbcacf42cd02a348f3
2727
# via requests
2828
commonmark==0.9.1 \
2929
--hash=sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60 \
@@ -48,48 +48,64 @@ imagesize==1.2.0 \
4848
--hash=sha256:6965f19a6a2039c7d48bca7dba2473069ff854c36ae6f19d2cde309d998228a1 \
4949
--hash=sha256:b1f6b5a4eab1f73479a50fb79fcf729514a900c341d8503d62a62dbc4127a2b1
5050
# via sphinx
51-
iso3166==1.0.1 \
52-
--hash=sha256:b07208703bd881a4f974e39fa013c4498dddd64913ada15f24be75d02ae68a44 \
53-
--hash=sha256:b1e58dbcf50fbb2c9c418ec7a6057f0cdb30b8f822ac852f72e71ba769dae8c5
54-
# via -r requirements.in
5551
jinja2==3.0.1 \
5652
--hash=sha256:1f06f2da51e7b56b8f238affdd6b4e2c61e39598a378cc49345bc1bd42a978a4 \
5753
--hash=sha256:703f484b47a6af502e743c9122595cc812b0271f661722403114f71a79d0f5a4
5854
# via sphinx
59-
m2r2==0.3.0 \
60-
--hash=sha256:3cac62204ed10119cdc98311cc7fb9f95f6adf07bfb39b1d725f25d56b310ccb \
61-
--hash=sha256:f7ace700bb4a7f8b710a57da84ff6b96a5a9629c8cef442c2e85500bc21cbf16
55+
m2r2==0.3.1 \
56+
--hash=sha256:6bf2d74e4cd15ce8a795999326cc7a4924af69ac1d114cac8064c1599ab11892 \
57+
--hash=sha256:c2b62b8dec16f82d9e4d8aecf58830a87835ca90441716fc571e573e32c7d829
6258
# via -r requirements.in
6359
markupsafe==2.0.1 \
6460
--hash=sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298 \
6561
--hash=sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64 \
6662
--hash=sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b \
6763
--hash=sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567 \
6864
--hash=sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff \
65+
--hash=sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724 \
6966
--hash=sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74 \
67+
--hash=sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646 \
7068
--hash=sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35 \
69+
--hash=sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6 \
70+
--hash=sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6 \
71+
--hash=sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad \
7172
--hash=sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26 \
73+
--hash=sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38 \
74+
--hash=sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac \
7275
--hash=sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7 \
76+
--hash=sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6 \
7377
--hash=sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75 \
7478
--hash=sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f \
7579
--hash=sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135 \
7680
--hash=sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8 \
81+
--hash=sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a \
7782
--hash=sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a \
83+
--hash=sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9 \
84+
--hash=sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864 \
7885
--hash=sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914 \
7986
--hash=sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18 \
8087
--hash=sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8 \
8188
--hash=sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2 \
8289
--hash=sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d \
90+
--hash=sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b \
8391
--hash=sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b \
8492
--hash=sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f \
8593
--hash=sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb \
8694
--hash=sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833 \
95+
--hash=sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28 \
8796
--hash=sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415 \
8897
--hash=sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902 \
98+
--hash=sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d \
8999
--hash=sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9 \
90100
--hash=sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d \
101+
--hash=sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145 \
91102
--hash=sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066 \
103+
--hash=sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c \
104+
--hash=sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1 \
92105
--hash=sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f \
106+
--hash=sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53 \
107+
--hash=sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134 \
108+
--hash=sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85 \
93109
--hash=sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5 \
94110
--hash=sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94 \
95111
--hash=sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509 \
@@ -106,13 +122,13 @@ packaging==21.0 \
106122
--hash=sha256:7dc96269f53a4ccec5c0670940a4281106dd0bb343f47b7471f779df49c2fbe7 \
107123
--hash=sha256:c86254f9220d55e31cc94d69bade760f0847da8000def4dfe1c6b872fd14ff14
108124
# via sphinx
109-
phonenumbers==8.12.27 \
110-
--hash=sha256:64ecba30985d580d03086598d977dba812ac499514f2e1f8a2795af2f0de1aa6 \
111-
--hash=sha256:856f6bebf19eafe5ab1d50b2f4972f8d7474a7e1b8c0f9cf3263a26602ac81f3
125+
phonenumbers==8.12.31 \
126+
--hash=sha256:091ed2b3158567f12c99f719570a1ccace00179f39b44f1e6b895f59d93dadc8 \
127+
--hash=sha256:3ede2a2fce9b2ed335c0168e8276546d717fceeffe23761877925dff0a8f54f1
112128
# via -r requirements.in
113-
pygments==2.9.0 \
114-
--hash=sha256:a18f47b506a429f6f4b9df81bb02beab9ca21d0a5fee38ed15aef65f0545519f \
115-
--hash=sha256:d66e804411278594d764fc69ec36ec13d9ae9147193a1740cd34d272ca383b8e
129+
pygments==2.10.0 \
130+
--hash=sha256:b8e67fe6af78f492b3c4b3e2970c0624cbf08beb1e493b2c99b9fa1b67a20380 \
131+
--hash=sha256:f398865f7eb6874156579fdf36bc840a03cab64d1cde9e93d68f46a425ec52c6
116132
# via sphinx
117133
pyparsing==2.4.7 \
118134
--hash=sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1 \
@@ -178,18 +194,18 @@ typeguard==2.12.1 \
178194
--hash=sha256:c2af8b9bdd7657f4bd27b45336e7930171aead796711bc4cfc99b4731bb9d051 \
179195
--hash=sha256:cc15ef2704c9909ef9c80e19c62fb8468c01f75aad12f651922acf4dbe822e02
180196
# via -r requirements.in
181-
typing-extensions==3.10.0.0 \
182-
--hash=sha256:0ac0f89795dd19de6b97debb0c6af1c70987fd80a2d62d1958f7e56fcc31b497 \
183-
--hash=sha256:50b6f157849174217d0656f99dc82fe932884fb250826c18350e159ec6cdf342 \
184-
--hash=sha256:779383f6086d90c99ae41cf0ff39aac8a7937a9283ce0a414e5dd782f4c94a84
197+
typing-extensions==3.10.0.2 \
198+
--hash=sha256:49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e \
199+
--hash=sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7 \
200+
--hash=sha256:f1d25edafde516b146ecd0613dabcc61409817af4766fbbcfb8d1ad4ec441a34
185201
# via -r requirements.in
186202
urllib3==1.26.6 \
187203
--hash=sha256:39fb8672126159acb139a7718dd10806104dec1e2f0f6c88aab05d17df10c8d4 \
188204
--hash=sha256:f57b4c16c62fa2760b7e3d97c35b255512fb6b59a259730f36ba32ce9f8e342f
189205
# via requests
190206

191207
# The following packages are considered to be unsafe in a requirements file:
192-
setuptools==57.1.0 \
193-
--hash=sha256:cfca9c97e7eebbc8abe18d5e5e962a08dcad55bb63afddd82d681de4d22a597b \
194-
--hash=sha256:ddae4c1b9220daf1e32ba9d4e3714df6019c5b583755559be84ff8199f7e1fe3
208+
setuptools==57.4.0 \
209+
--hash=sha256:6bac238ffdf24e8806c61440e755192470352850f3419a52f26ffe0a1a64f465 \
210+
--hash=sha256:a49230977aa6cfb9d933614d2f7b79036e9945c4cdd7583163f4e920b83418d6
195211
# via sphinx

examples/pydantic/pydantic_example.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from pydantic import BaseModel
77

88
from phantom.datetime import TZAware
9-
from phantom.ext.iso3166 import CountryCode
9+
from phantom.iso3166 import CountryCode
1010
from phantom.interval import Natural
1111
from phantom.predicates.interval import closed_open
1212
from phantom.re import Match

examples/pydantic/requirements.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
-e ../..[iso3166]
1+
phantom-types
22
pydantic
33
pytest
44
pytest-mypy-plugins

examples/pydantic/requirements.txt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,12 @@
44
#
55
# pip-compile
66
#
7-
-e file:///Users/annevoab/projects/phantom-types
8-
# via -r requirements.in
97
attrs==21.2.0
108
# via pytest
119
decorator==5.0.9
1210
# via pytest-mypy-plugins
1311
iniconfig==1.1.1
1412
# via pytest
15-
iso3166==1.0.1
16-
# via phantom-types
1713
mypy-extensions==0.4.3
1814
# via mypy
1915
mypy==0.902
@@ -22,6 +18,8 @@ mypy==0.902
2218
# pytest-mypy-plugins
2319
packaging==20.9
2420
# via pytest
21+
phantom-types==0.10.0
22+
# via -r requirements.in
2523
pluggy==0.13.1
2624
# via pytest
2725
py==1.10.0
@@ -49,4 +47,5 @@ typeguard==2.12.0
4947
typing-extensions==3.10.0.0
5048
# via
5149
# mypy
50+
# phantom-types
5251
# pydantic

0 commit comments

Comments
 (0)