Compare commits

...

2 Commits

Author SHA1 Message Date
3cddb53809 added automatic detection of alpha_2 and alpha_3 2024-11-19 15:04:00 +01:00
4fe3be34d8 added release script 2024-11-19 14:55:37 +01:00
5 changed files with 47 additions and 17 deletions

6
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,6 @@
{
"cSpell.words": [
"germany",
"pycountry"
]
}

View File

@ -28,18 +28,23 @@ except CountryDoesNotExist:
### Creating country class
You can call create an instance of `pycountry_wrapper.Country` in three ways.
You can call create an instance of `pycountry_wrapper.Country` in multiple slightly different ways.
Using **ISO 3166-1** with either 2 or 3 letters:
The [**ISO 3166-1**](https://en.wikipedia.org/wiki/ISO_3166-1) standart can either use 2 or 3 letters (alpha_2 or alpha_3).
```python
from pycountry_wrapper import Country
# auto detects if alpha_2 or alpha_3
Country("DE")
Country("DEU")
# you can specify what to use, if required.
Country.from_alpha_2("DE")
Country.from_alpha_2("DEU")
Country.from_alpha_3("DEU")
```
Or you can do a fuzzy search in a similar way:
If you want to use fuzzy search, you will have to use `Country.from_fuzzy()`.
```python
from pycountry_wrapper import Country
@ -47,14 +52,6 @@ from pycountry_wrapper import Country
Country.from_fuzzy("Deutschland")
```
Or you can pass a pycountry object in the constructor:
```python
import pycountry
from pycountry_wrapper import Country
Country(pycountry.countries.get(alpha_2="DE"))
```
### Accessing information

View File

@ -15,7 +15,14 @@ class Country:
If the country couldn't be found, it raises the pycountry_wrapper.CountryDoesNotExist exception.
"""
def __init__(self, pycountry_object):
def __init__(self, country: str = None, pycountry_object = None):
if country is not None:
# auto detect if alpha_2 or alpha_3
if len(country) == 2:
pycountry_object = pycountry.countries.get(alpha_2=country.upper())
elif len(country) == 3:
pycountry_object = pycountry.countries.get(alpha_3=country.upper())
if pycountry_object is None:
raise CountryDoesNotExist()
@ -23,15 +30,15 @@ class Country:
@classmethod
def from_alpha_2(cls, alpha_2: str) -> Country:
return cls(pycountry.countries.get(alpha_2=alpha_2.upper()))
return cls(pycountry_object=pycountry.countries.get(alpha_2=alpha_2.upper()))
@classmethod
def from_alpha_3(cls, alpha_3: str) -> Country:
return cls(pycountry.countries.get(alpha_3=alpha_3.upper()))
return cls(pycountry_object=pycountry.countries.get(alpha_3=alpha_3.upper()))
@classmethod
def from_fuzzy(cls, fuzzy: str) -> Country:
return cls(pycountry.countries.search_fuzzy(fuzzy))
return cls(pycountry_object=pycountry.countries.search_fuzzy(fuzzy))
@property
def name(self) -> str:

View File

@ -5,4 +5,4 @@ from . import Country
def cli():
print(f"Running {__name__} version {__version__} from __main__.py")
print(Country.from_alpha_2("DE"))
print(Country("DEU"))

20
release Executable file
View File

@ -0,0 +1,20 @@
#!/bin/bash
# install build tools
pip install build
pip install twine
pip install hatch
# increment version in pyproject.toml
hatch version micro
git add git_time_tracking/__about__.py
git commit -m "bump version"
git push
# build package
python3 -m build --wheel
# upload to pypi
python3 -m twine upload dist/*
python3 -m twine upload --skip-existing --repository gitea dist/*