Validate and generate Greek TIN (Tax Identification Number) / AFM (Αριθμός Φορολογικού Μητρώου). Generation function can create valid or invalid numbers including parameters for old format, individuals, legal entities and repeat tolerance digits control.
https://lytrax.io/blog/projects/greek-tin-validator-generator
pip install lytrax-afm
Import functions:
from lytrax_afm import validate_afm, generate_afm, generate_valid_afm, generate_invalid_afm
Validate a number:
>>> validate_afm("090000045")
True
>>> validate_afm("123456789")
False
Generate a valid number:
>>> generate_valid_afm()
'731385437'
Generate an invalid number:
>>> generate_invalid_afm()
'853003357'
validate_afm
afm: str
- A string to be check if it's a valid TIN/AFMextended_result: bool, optional
- Return extended object result if True, single boolean otherwise (default is False)- Returns:
str
ordict
(Dictionary with'valid': boolean
and'error': str ('length' or 'nan' or 'zero' or 'invalid')
)
Example:
>>> validate_afm("ab1234", extended_result=True)
{'valid': False, 'error': 'length'}
generate_afm
force_first_digit: int, optional
- If specified, overrides all pre99, legalEntity and individual (default is None)pre99: bool, optional
- For TIN/AFM before 1/1/1999 (starts with 0), (if True, overrides both legal_entity and individual) (default is False)individual: bool, optional
- Natural persons, (starts with 1-4) (default is False)legal_entity: bool, optional
- Legal entities (starts 7-9) (default is False)repeat_tolerance : int, optional
- Number for max repeat tolerance (0 for no repeats, unspecified for no check) (default is None)valid: bool, optional
- Generate valid or invalid TIN/AFM (default is True)- Returns:
str
- A valid or invalid 9 digit TIN/AFM number
Example:
>>> generate_afm(force_first_digit=3, repeat_tolerance=1, valid=True)
'335151580'
generate_valid_afm - Same as generate_afm
with valid
parameter force and override to True
- Returns:
str
- A valid 9 digit TIN/AFM number
Example:
>>> generate_valid_afm(pre99=True)
'013583460'
generate_invalid_afm - Same as generate_afm
with valid
parameter force and override to False
- Returns:
str
- An invalid 9 digit TIN/AFM number
Example:
>>> generate_invalid_afm(legal_entity=True)
'780300643'
Clone this repository, run test:
git clone https://github.com/clytras/afm-python.git && cd afm-python
python -m unittest discover -s './test' -v
Run Demo:
python -m lytrax_afm
See CHANGELOG
MIT License - see the LICENSE file for details