Changes in python-stdnum

changes from 1.16 to 1.17

  • Add modules for the following number formats:

    • EPIC (Electoral Photo Identity Card, Indian Voter ID) (thanks Gaurav Chauhan)

    • GSTIN (Goods and Services Tax identification number, Indian VAT number) (thanks Gaurav Chauhan)

    • ISRC (International Standard Recording Code) (thanks Nuno André)

    • CC (Número de Cartão de Cidadão, Portuguese Identity number) (thanks David Vaz)

    • Postcode (the Swedish postal code) (thanks Michele Ciccozzi)

    • MOA (Thailand Memorandum of Association Number) (thanks Piruin Panichphol)

    • PIN (Thailand Personal Identification Number) (thanks Piruin Panichphol)

    • TIN (Thailand Taxpayer Identification Number) (thanks Piruin Panichphol)

  • Add ENCF validation support for Dominican Republic NCF (thanks Cristopher Ortega)

  • Add new e-CF types to Dominican Republic NCF (thanks Frank Roberto Chavez Sosa)

  • Improve French NIF validation (thanks Dimitri Papadopoulos)

  • Drop support for Python 2.6 and 3.4

  • Fix parsing of empty fields in Dominican Republic DGII checking (thanks Andres Rodriguez)

  • Fix handling of empty worksheet in Belgian bank download (thanks Dimitri Papadopoulos)

  • Fix detection of natural RUC values (thanks Victor Rodriguez)

  • Fix Belarus VAT number online lookup again

  • Fixes for problems with loading IMSI data from Wikipedia and dealing with inconsistencies

  • Remove South Korean BRN Fair Trade Commission website check due to CAPTCHA

  • Various code and documentation improvements (thanks Dimitri Papadopoulos and Gaurav Chauhan)

changes from 1.15 to 1.16

  • Support XI country code for Northern Ireland VAT numbers (thanks Alexis de Lattre)

  • Switch data source for Austrian postal codes (thanks Bernd Schlapsi)

  • Fix Belarus VAT number online lookup

changes from 1.14 to 1.15

  • Add modules for the following number formats:

    • CUI or CIF (Codul Unic de Înregistrare, Romanian company identifier)

    • PEID (Liechtenstein tax code for individuals and entities) (thanks Matthias Schmid)

    • ЄДРПОУ, EDRPOU (Identifier for enterprises and organizations in Ukraine) (thanks Leandro Regueiro)

    • РНОКПП, RNTRC (Individual taxpayer registration number in Ukraine) (thanks Leandro Regueiro)

  • Make list of EU member states part of public API

  • Retain RO prefix in Romanian VAT numbers

  • Support international VAT numbers that are only valid with country prefix

  • Expanded validation for Belgian VAT numbers

  • Use ABN as Australian VAT number

  • Remove GB from EU member states

changes from 1.13 to 1.14

  • Add modules for the following number formats:

    • УНП, UNP (Учетный номер плательщика, the Belarus VAT number)

    • AIC (Italian code for identification of drugs) (thanks Fabrizio Montanari)

    • Company Number (מספר חברה, or short ח.פ. Israeli company number) (thanks Leandro Regueiro)

    • NIT (Número de Identificación Tributaria, El Salvador tax number) (thanks Leandro Regueiro)

    • USCC (Unified Social Credit Code, 统一社会信用代码, China tax number) (thanks Leandro Regueiro)

    • UEN (Singapore’s Unique Entity Number) (thanks Leandro Regueiro)

    • BRN (사업자 등록 번호, South Korea Business Registration Number) (thanks Leandro Regueiro)

    • MST (Mã số thuế, Vietnam tax number) (thanks Leandro Regueiro)

    • NPWP (Nomor Pokok Wajib Pajak, Indonesian VAT Number) (thanks Leandro Regueiro)

    • UBN (Unified Business Number, 統一編號, Taiwanese tax number) (thanks Leandro Regueiro)

    • UTR (United Kingdom Unique Taxpayer Reference) (thanks Mohammed Salman)

    • ONRC (Ordine din Registrul Comerţului, Romanian Trade Register identifier) (thanks dotbit1)

    • GS1-128 (Standard to encode product information in Code 128 barcodes) (thanks Sergi Almacellas Abellana)

    • VATIN (International value added tax identification number) (thanks Leandro Regueiro)

  • Fix missing Dominican Republic NCF document types (thanks Gustavo Valverde)

  • Fix issue with extra plus or minus in Swedish Personnummer (thanks balderman)

  • Update Dominican Republic DGII endpoint (thanks Gustavo Valverde)

  • Support validating temporary Finnish personal identity codes (thanks Aleksi Hoffman)

  • Fix misleading docstring in se.personnummer.get_birth_date() (thanks Leon Sandøy)

  • Improve birth date validation in Danish CPR (thanks Leon Sandøy)

  • Add birth date validating in Norwegian Fødselsnummer (thanks Leon Sandøy)

  • Add missing vat aliases for a number of countries (thanks Leandro Regueiro)

  • Use HTTPS instead of HTTP fox VIES lookups (thanks grzekru)

  • Switch to HTTPS URLs where possible

  • Support 6 as third digit in Ecuadorian CI (thanks Christopher Ormaza)

  • Add an online check for South Korean BRN

  • Fix unescaping in Dominican Republic RNC online check (thanks evaldez89)

  • Support foreign residents for Romanian CNP (thanks dotbit1)

changes from 1.12 to 1.13

  • Add modules for the following number formats:

    • ESR, ISR, QR-reference (reference number on Swiss payment slips) (thanks Kurt Keller)

    • ID number (South African Identity Document number)

  • Add format function for ISO 11649 numbers (thanks Kurt Keller)

  • Add support for Python 3.8 (thanks Sergi Almacellas Abellana)

  • Clarify that the Italian Codice Fiscale can also be the IVA for companies (thanks Nicholas Fiorentini)

  • Support the new Dutch btw-identificatienummer (thanks Cas Vissers, Jeroen van Heiningen, Jerome Hanke, Nicolas Martinelli, Ronald Portier and Tim Muller)

  • Extend test for Argentinian CUIT to check first two digits

  • Add more country codes to ISIN (thanks nocluebutalotofit, Anwar Baroudi and alexbond73)

changes from 1.11 to 1.12

  • Add modules for the following number formats:

    • NRT (Número de Registre Tributari, Andorra tax number) (thanks Leandro Regueiro)

    • CPF (Cédula de Persona Física, Costa Rica physical person ID number) (thanks Leandro Regueiro)

    • CPJ (Cédula de Persona Jurídica, Costa Rica tax number) (thanks Leandro Regueiro)

    • CR (Cédula de Residencia, Costa Rica foreigners ID number) (thanks Leandro Regueiro)

    • NIT (Número de Identificación Tributaria, Guatemala tax number) (thanks Leandro Regueiro)

    • Identity Number (Mispar Zehut, מספר זהות, Israeli identity number)

    • CN (法人番号, hōjin bangō, Japanese Corporate Number) (thanks Alan Hettinger)

    • RRN (South Korean resident registration number) (thanks Dimitri Papadopoulos)

    • IRD number (New Zealand Inland Revenue Department (Te Tari Tāke) number) (thanks Leandro Regueiro)

    • CUI (Cédula Única de Identidad, Peruvian identity number)

    • RUC (Registro Único de Contribuyentes, Peruvian company tax number)

    • RUC number (Registro Único de Contribuyentes, Paraguay tax number) (thanks Leandro Regueiro)

    • VKN (Vergi Kimlik Numarası, Turkish tax identification number) (thanks Leandro Regueiro)

    • RUT (Registro Único Tributario, Uruguay tax number) (Leandro Regueiro)

    • RIF (Registro de Identificación Fiscal, Venezuelan VAT number) (thanks Kevin Kaiser)

    • TIN (South African Tax Identification Number) (thanks Leandro Regueiro)

  • Support GTIN (EAN-14) validation as part of EAN (thanks Sergi Almacellas Abellana)

  • Support Dominican Republic e-CF within NCF (thanks Jeffry Jesus De La Rosa)

  • Fix Dominican Republic DGII lookups of NCF (thanks Jeffry Jesus De La Rosa)

  • Fix German Handelsregisternummer to not confuse Hamburg with Homburg and to accept shorter numbers (thanks Kevin Kaiser)

  • Support lookups of German Handelsregisternummer in OffeneRegister.de web service

  • Handle - and + sign correctly in Swedish Personnummer (thanks Amin Solhizadeh)

  • Provide various personalid and vat aliases for existing numbers (thanks Andreas Häber)

  • Improve descriptions of Spanish codes (thanks Gerard Dalmau)

  • Fix handling and normalisation of various Unicode digit representations (thanks Helge Munk Jacobsen)

changes from 1.10 to 1.11

  • Add modules for the following number formats:

    • DNI (Documento Nacional de Identidad, Argentinian national identity nr.)

    • VNR, SVNR, VSNR (Versicherungsnummer, Austrian social security number)

    • NI (Número de identidad, Cuban identity card numbers)

    • AMKA (Αριθμός Μητρώου Κοινωνικής Ασφάλισης, Greek social security number)

    • Asmens kodas (Lithuanian, personal numbers)

    • MAC address (Media Access Control address)

    • IDNO (Moldavian company identification number)

    • CURP (Clave Única de Registro de Población, Mexican personal ID)

    • Fødselsnummer (Norwegian birth number, the national identity number) (thanks Ilya Vihtinsky)

    • New Zealand bank account number

    • Personnummer (Swedish personal identity number) (thanks Ilya Vihtinsky)

  • Code style improvements

  • Change Dominican Republic DGII check URL to HTTPS (thanks Gustavo Valverde)

  • Support Ecuadorian Cedula and RUC of foreigners (thanks Christopher Ormaza)

  • Add format() function for Argentinian CUIT number (thanks Mario Puntin)

  • Support passing formatted numbers to all get_birth_date() and similar functions

  • Handle Dominican Republic DGII lookup returning multiple entities (thanks Andrés R)

changes from 1.9 to 1.10

  • Add modules for the following number formats:

    • Bitcoin address

    • ISO 11649 (Structured Creditor Reference)

    • ID number (Mauritian national identifier)

    • Norwegian IBAN (International Bank Account Number)

    • Konto nr. (Norwegian bank account number)

  • Fix a bug in handling of Mexican tax numbers

  • Improve Spanish CIF and NIF validation

  • Update Dominican Republic NCF numbers online check

  • Improve Unicode conversion for bytestrings

  • Improvements to some corner cases in IBAN validation

  • Documentation improvements

  • Add stdnum.ru.vat as an alias for stdnum.ru.inn

changes from 1.8.1 to 1.9

  • Add modules for the following number formats:

    • Postleitzahl (Austrian postal code)

    • Abgabenkontonummer (Austrian tax identification number)

    • Belgian IBAN (International Bank Account Number)

    • Handelsregisternummer (German company register number)

    • St.-Nr. (Steuernummer, German tax number)

    • FIGI (Financial Instrument Global Identifier)

    • Montenegro IBAN (International Bank Account Number)

  • Have documentation rebuilt reproducibly (thanks Chris Lamb)

  • Allow configuring the SOAP request timeout

  • Support spaces in ISO 9362 (SWIFT) BIC codes

  • Add check_dgii() to stdnum.do.cedula module

  • Add validation for “individual” part of hetu (thanks Esa Halsti)

  • Support new style of Dominican Republic NCF numbers

  • Fix issue when using PySimpleSOAP for DGII lookups

  • Fix an issue in splitting certain IMSI values

  • Support building a universal wheel

  • Documentation and code style improvements

changes from 1.8 to 1.8.1

  • Fix a packaging issue in the long description

changes from 1.7 to 1.8

  • Add modules for the following number formats:

    • NCF (Números de Comprobante Fiscal, Dominican Republic receipt number)

    • Euro banknote serial numbers

    • CAS RN (Chemical Abstracts Service Registry Number)

    • Aadhaar (Indian digital resident personal identity number) (thanks Srikanth Lakshmanan)

    • PAN (Permanent Account Number, Indian income tax identifier) (thanks Srikanth Lakshmanan)

  • Add functions for using the Dominican Republic DGII web service to validate and search for RNC and NCF numbers

  • Add/update whitelists for Dominican Republic RNC and Cedula

  • Support zeep as preferred SOAP library (suds and pysimplesoap are tried as fallback)

  • Rename stdnum.iso9362 to stdnum.bic (iso9362 is deprecated but still available for compatibility)

  • Add tests for web services (not normally run to avoid unnecessary load)

  • Fixes and improvement to the sample online validation service

Development of the NCF format validation and DGII web service validation was funded by iterativo | http://iterativo.do

changes from 1.6 to 1.7

  • Add modules for the following number formats:

    • BN (Canadian Business Number)

    • SIN (Canadian Social Insurance Number)

    • IdNr (Steuerliche Identifikationsnummer, German personal tax number) (thanks Mohammed Salman of Holvi)

    • Registrikood (Estonian organisation registration code) (thanks Mohammed Salman of Holvi)

    • Veronumero (Finnish individual tax number) (thanks Mohammed Salman of Holvi)

    • UPN (English Unique Pupil Number)

  • Fix a bug in the Czech DIČ check digit calculation

  • Fix conversion of 9 digit ISBN to ISBN13

  • Fix a bug in the Damm is_valid() function

  • More validation of 13-digit ISBN values

  • More validation of ISMN values

  • Various code and test improvements (100% branch coverage now)

  • Documentation improvements

changes from 1.5 to 1.6

  • Add modules for the following number formats:

    • CBU (Clave Bancaria Uniforme, Argentine bank account number) (thanks Luciano Rossi)

    • EIC (European Energy Identification Code)

    • NACE (classification for businesses in the European Union)

    • LEI (Legal Entity Identifier)

    • n° TVA (taxe sur la valeur ajoutée, Monacan VAT number)

    • PIB (Poreski Identifikacioni Broj, Serbian tax identification number)

  • Add online check example that finds valid formats for a given number

  • Fix support for Ñ in Spanish Referencia Catastral

  • Updates to U.S. Employer Identification Number (thanks Greg Kuwaye)

  • Various minor improvements

changes from 1.4 to 1.5

  • Add modules for the following number formats:

    • ABN (Australian Business Number)

    • ACN (Australian Company Number)

    • TFN (Australian Tax File Number)

    • CCC (Código Cuenta Corriente, Spanish Bank Account Code)

    • CUPS (Código Unificado de Punto de Suministro, Supply Point Unified Code)

    • Spanish IBAN (International Bank Account Number)

    • Referencia Catastral (Spanish real estate property id)

  • The IBAN module now support validating the country-specific part

  • The Belgian VAT number is now also referenced as businessid

  • Add a Tox configuration file

changes from 1.3 to 1.4

  • Add modules for the following number formats:

    • NIF (Numéro d’Immatriculation Fiscale, French tax identification number) provided by Dimitri Papadopoulos

    • NIR (French personal identification number) provided by Dimitri Papadopoulos

    • SIRET (a French company establishment identification number) provided by Yoann Aubineau

    • NHS (United Kingdom National Health Service patient identifier)

    • T.C. Kimlik No. (Turkish personal identification number)

  • Add an implementation of the Damm algorithm

  • Ensure data files are properly closed

  • Documentation improvements

  • Extend test suite

  • A number of minor bug fixes and improvements

changes from 1.2 to 1.3

  • Fix ISO 6346 check digit calculation (thanks Ronald Paloschi)

  • Fix problem with check_vies_approx() (thanks Lionel Elie Mamane)

  • Fix problem with SOAP client when using suds

  • Include documentation that was previously on the Trac wiki

changes from 1.1 to 1.2

  • Add modules for the following number formats:

    • Austrian Company Register Numbers

    • CNPJ (Cadastro Nacional da Pessoa Jurídica, Brazilian company identifier)

    • UID (Unternehmens-Identifikationsnummer, Swiss business identifier)

    • VAT, MWST, TVA, IVA, TPV (Mehrwertsteuernummer, the Swiss VAT number)

    • CUSIP number (financial security identification number)

    • Wertpapierkennnummer (German securities identification code)

    • Isikukood (Estonian Personcal ID number)

    • Finnish Association Identifier

    • Y-tunnus (Finnish business identifier)

    • SEDOL number (Stock Exchange Daily Official List number)

    • IMO number (International Maritime Organization number)

    • ISIN (International Securities Identification Number)

    • RFC (Registro Federal de Contribuyentes, Mexican tax number)

    • PESEL (Polish national identification number)

    • REGON (Rejestr Gospodarki Narodowej, Polish register of economic units)

    • ИНН (Идентификационный номер налогоплательщика, Russian tax identifier)

  • Add an alternate VIES check (check_vies_approx()) that includes a proof (certificate) that the check was performed

  • Fall back to pysimplesoap if suds is unavailable

  • Test and code quality improvements

changes from 1.0 to 1.1

  • Add number formats based on the implementation in the vatnumber module:

    • NIPT (Numri i Identifikimit për Personin e Tatueshëm, Albanian VAT number)

    • CUIT (Código Único de Identificación Tributaria, Argentinian tax number)

    • RUT (Rol Único Tributario, Chilean national tax number)

    • NIT (Número De Identificación Tributaria, Colombian identity code)

    • COE (Codice operatore economico, San Marino national tax number)

  • Add modules for the following number formats:

    • Cedula (Dominican Republic national identification number)

    • RNC (Registro Nacional del Contribuyente, Dominican Republic tax number)

    • Kennitala (Icelandic personal and organisation identity code, provided by Tuomas Toivonen)

    • VSK number (Virðisaukaskattsnúmer, Icelandic VAT number, provided by Tuomas Toivonen)

    • ISO 9362 (Business identifier codes, provided by Tony Bajan)

    • MVA (Merverdiavgift, Norwegian VAT number, provided by Tuomas Toivonen)

    • Orgnr (Organisasjonsnummer, Norwegian organisation number, provided by Tuomas Toivonen)

    • Orgnr (Organisationsnummer, Swedish company number, provided by Tomas Thor Jonsson)

  • Add Croatia to list of EU VAT numbers

  • Update getcnloc script

  • Various small fixes and additional tests for existing modules

changes from 0.9 to 1.0

  • Add modules for the following number formats:

    • Swiss social security number (“Sozialversicherungsnummer”)

    • RIC No. (Chinese Resident Identity Card Number)

    • CI (Cédula de identidad, Ecuadorian personal identity code)

    • RUC (Registro Único de Contribuyentes, Ecuadorian company tax number)

    • SEPA Identifier of the Creditor (AT-02)

    • ISO 6346 (International standard for container identification)

    • Codice Fiscale (Italian tax code for individuals)

    • RTN (Routing transport number)

  • Add support for 2013 extension of Irish PPS Numbers

  • Update getisbn script

  • Update getmybp URLs for Malaysian code lists

  • Various other minor improvements

changes from 0.8.1 to 0.9

  • Add modules for the following number formats:

    • Brin number (Dutch number for schools)

    • Postcode (Dutch postal code)

    • ATIN (U.S. Adoption Taxpayer Identification Number)

    • EIN (U.S. Employer Identification Number)

    • ITIN (U.S. Individual Taxpayer Identification Number)

    • PTIN (U.S. Preparer Tax Identification Number)

    • TIN (U.S. Taxpayer Identification Number)

  • Try to replace Unicode characters with similar-looking ASCII characters

  • Update getimsi script (thanks eneq123)

  • Update getiban script

  • Add proxy support to the stdnum.eu.vat.check_vies() function (thanks Cédric Krier)

  • Support newer United Kingdom VAT numbers

changes from 0.8 to 0.8.1

  • Include some files that were missing from the source tarball

changes from 0.7 to 0.8

  • Add modules for the following number formats:

    • NRIC No. (Malaysian National Registration Identity Card Number)

  • All modules now provide a validate() function that throws an exception that contains more information on the failure reason

  • Documentation improvements

  • Remove add_check_digit parameter from GRid’s format() function

  • Improvements to the tests

  • Re-add Python3 support (now tested with Python 2.7, 3.2 and 3.3)

changes from 0.6 to 0.7

  • Add modules for the following number formats:

    • Onderwijsnummer (Dutch school number)

    • BTW-nummer (Omzetbelastingnummer, the Dutch VAT number)

    • HETU (Finnish personal identity code) as provided by Jussi Judin (#5)

    • RČ (Rodné číslo, the Czech and Slovak birth numbers)

    • SIREN (a French company identification number)

    • FPA, ΦΠΑ (Foros Prostithemenis Aksias, the Greek VAT number)

    • Ust ID Nr. (Umsatzsteur Identifikationnummer, the German VAT number)

    • BTW, TVA, NWSt (Belgian VAT number)

    • DNI (Documento nacional de identidad, Spanish personal identity codes)

    • NIE (Número de Identificación de Extranjeros, Spanish foreigner number)

    • CIF (Certificado de Identificación Fiscal, Spanish company tax number)

    • NIF (Número de Identificación Fiscal, Spanish VAT number)

    • PVN (Pievienotās vērtības nodokļa, Latvian VAT number)

    • CVR (Momsregistreringsnummer, Danish VAT number)

    • TVA (taxe sur la valeur ajoutée, Luxembourgian VAT number)

    • CNP (Cod Numeric Personal, Romanian Numerical Personal Code)

    • CF (Cod de înregistrare în scopuri de TVA, Romanian VAT number)

    • Partita IVA (Italian VAT number)

    • Αριθμός Εγγραφής Φ.Π.Α. (Cypriot VAT number)

    • UID (Umsatzsteuer-Identifikationsnummer, Austrian VAT number)

    • NIF (Número de identificação fiscal, Portuguese VAT number)

    • IČ DPH (IČ pre daň z pridanej hodnoty, Slovak VAT number)

    • ALV nro (Arvonlisäveronumero, Finnish VAT number)

    • DIČ (Daňové identifikační číslo, Czech VAT number)

    • ANUM (Közösségi adószám, Hungarian VAT number)

    • VAT (Irish VAT number)

    • KMKR (Käibemaksukohuslase, Estonian VAT number)

    • PVM (Pridėtinės vertės mokestis mokėtojo kodas, Lithuanian VAT number)

    • n° TVA (taxe sur la valeur ajoutée, French VAT number)

    • VAT (Maltese VAT number)

    • NIP (Numer Identyfikacji Podatkowej, Polish VAT number)

    • ID za DDV (Davčna številka, Slovenian VAT number)

    • VAT (Moms, Mervärdesskatt, Swedish VAT number)

    • VAT (United Kingdom (and Isle of Man) VAT registration number)

    • EGN (ЕГН, Единен граждански номер, Bulgarian personal identity codes)

    • PNF (ЛНЧ, Личен номер на чужденец, Bulgarian number of a foreigner)

    • VAT (Идентификационен номер по ДДС, Bulgarian VAT number)

    • VAT (European Union VAT number)

    • OIB (Osobni identifikacijski broj, Croatian identification number)

    • PPS No (Personal Public Service Number, Irish personal number)

    • CPR (personnummer, the Danish citizen number)

  • Additional tests for robustness and use introspection to test all modules

  • Some code refactoring with the introduction of an internal utility module

  • Improvements to the docstring documentation

  • Generate API documentation using Sphinx

changes from 0.5 to 0.6

  • Fix a problem with handling an ISBN13 with a valid check digit but with an unknown bookland prefix

  • Add an IMSI (International Mobile Subscriber Identity) module

  • Implement a conversion function from ISBN13 to ISBN10

  • Implement an ismn.ismn_type() function

  • Implement an imei.split() function that splits the number into a TAC, serial number and checksum or software version

  • Source code layout changes to better follow PEP8

changes from 0.4 to 0.5

  • Add modules for the following number formats:

    • EAN (International Article Number)

  • Refactoring to use the EAN check digit code for ISBN and ISMN checks

  • Implement a conversion function from ISSN to EAN

  • Support Python3 with the same codebase

  • Python 2.5 compatibility improvement

changes from 0.3 to 0.4

  • Add modules for the following number formats:

    • CPF (Cadastro de Pessoas Físicas, the Brazilian national identification number)

    • IBAN (International Bank Account Number)

    • ISIL (International Standard Identifier for Libraries and Related Organizations)

    • SSN (U.S. Social Security Number)

  • Implement an internal module to store and handle hierarchically organised data structures efficiently

  • Regional-specific numbers are now in ISO 3166 packages (the BSN module is now in stdnum.nl.bsn)

  • ISBN module functions now have a convert flag to convert to ISBN-13 on the fly

changes from 0.2 to 0.3

  • Add modules for the following number formats:

    • ISMN (International Standard Music Number)

    • ISAN (International Standard Audiovisual Number)

    • IMEI (International Mobile Equipment Identity)

    • MEID (Mobile Equipment Identifier)

    • GRid (Global Release Identifier)

  • Add modules for handling the following check digit algorithms:

    • the Verhoeff algorithm

    • the Luhn and Luhn mod N algorithms

    • some algorithms described in ISO/IEC 7064: Mod 11, 2, Mod 37, 2, Mod 97, 10, Mod 11, 10 and Mod 37, 36

  • Added more unit tests

changes from 0.1 to 0.2

  • Rename validate() function to is_valid() for all modules

  • Handle wrong types passed to is_valid() more gracefully

  • Add more tests and fix some minor bugs