Skip to content

๐Ÿ‡ฎ๐Ÿ‡น ๐Ÿ’ณ italian fiscal codes encoding, decoding and validation - codifica, decodifica e validazione del Codice Fiscale italiano.

License

Notifications You must be signed in to change notification settings

fabiocaccamo/python-codicefiscale

Repository files navigation

python-codicefiscale

python-codicefiscale is a library for encode/decode Italian fiscal code - codifica/decodifica del Codice Fiscale.

Codice Fiscale

Features

  • NEW Auto-updated data (once a week) directly from ANPR data-source.
  • NEW Command Line Interface available.
  • Transliteration for name/surname
  • Multiple birthdate formats (date/string) (you can see all the supported string formats here)
  • Automatic birthplace city/foreign-country code detection from name
  • Omocodia support

Installation

pip install python-codicefiscale

Usage

Python

Import

from codicefiscale import codicefiscale

Encode

codicefiscale.encode( lastname="Caccamo", firstname="Fabio", gender="M", birthdate="03/04/1985", birthplace="Torino", ) # "CCCFBA85D03L219P"

Decode

codicefiscale.decode("CCCFBA85D03L219P") # { # "code": "CCCFBA85D03L219P", # "gender": "M", # "birthdate": datetime.datetime(1985, 4, 3, 0, 0), # "birthplace": { # "name": "TORINO" # "province": "TO", # "code": "L219", # }, # "omocodes": [ # "CCCFBA85D03L219P", # "CCCFBA85D03L21VE", # "CCCFBA85D03L2MVP", # "CCCFBA85D03LNMVE", # "CCCFBA85D0PLNMVA", # "CCCFBA85DLPLNMVL", # "CCCFBA8RDLPLNMVX", # "CCCFBAURDLPLNMVU", # ], # "raw": { # "code": "CCCFBA85D03L219P", # "lastname": "CCC", # "firstname": "FBA", # "birthdate": "85D03", # "birthdate_year": "85" # "birthdate_month": "D", # "birthdate_day": "03", # "birthplace": "L219", # "cin": "P", # }, # }

Check

codicefiscale.is_valid("CCCFBA85D03L219P") # True
codicefiscale.is_omocode("CCCFBA85D03L219P") # False

Command Line

Caution

If sensitive data is written to a log entry it could be exposed to an attacker who gains access to the logs.

This library can be used also as a CLI tool, for more info run:

python -m codicefiscale --help

Encode (CLI)

python -m codicefiscale encode --firstname Fabio --lastname Caccamo --gender M --birthdate 03/04/1985 --birthplace Torino

Decode (CLI)

python -m codicefiscale decode CCCFBA85D03L219P

Testing

# clone repository git clone https://github.com/fabiocaccamo/python-codicefiscale.git && cd python-codicefiscale # create virtualenv and activate it python -m venv venv && . venv/bin/activate # upgrade pip python -m pip install --upgrade pip # install requirements pip install -r requirements.txt -r requirements-test.txt # install pre-commit to run formatters and linters pre-commit install --install-hooks # run tests using tox tox # or run tests using pytest pytest

License

Released under MIT License.


Supporting

See also

  • python-benedict - dict subclass with keylist/keypath support, I/O shortcuts (base64, csv, json, pickle, plist, query-string, toml, xml, yaml) and many utilities. ๐Ÿ“˜

  • python-fontbro - friendly font operations. ๐Ÿงข

  • python-fsutil - file-system utilities for lazy devs. ๐ŸงŸโ€โ™‚๏ธ