update shared dependencies

This commit is contained in:
j 2016-02-23 11:36:55 +05:30
commit 736cd598a8
521 changed files with 45146 additions and 22574 deletions

View file

@ -0,0 +1,21 @@
# __init__.py - collection of Swiss numbers
# coding: utf-8
#
# Copyright (C) 2014 Denis Krienbuehl
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA
"""Collection of Swiss numbers."""

View file

@ -0,0 +1,72 @@
# vat.py - functions for handling Swiss social security numbers
#
# Copyright (C) 2014 Denis Krienbuehl
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA
"""Swiss social security number ("Sozialversicherungsnummer").
Also known as "Neue AHV Nummer".
The Swiss Sozialversicherungsnummer is used to identify indivduals for taxation
and pension purposes.
The number is validated using EAN-13, though dashes are substitued for dots.
>>> compact('756.9217.0769.85')
'7569217076985'
>>> format('7569217076985')
'756.9217.0769.85'
>>> validate('7569217076985')
'7569217076985'
>>> validate('756.9217.0769.85')
'7569217076985'
>>> validate('756.9217.0769.84')
Traceback (most recent call last):
...
InvalidChecksum: ...
"""
from stdnum.exceptions import ValidationError
from stdnum import ean
from stdnum.util import clean
def compact(number):
"""Convert the number to the minimal representation. This strips the
number of any valid separators and removes surrounding whitespace."""
return clean(number, ' .').strip()
def format(number):
"""Reformat the passed number to the standard format."""
number = compact(number)
return '.'.join((number[:3], number[3:7], number[7:11], number[11:]))
def validate(number):
"""Checks to see if the number provided is a valid
Swiss Sozialversicherungsnummer."""
return ean.validate(compact(number))
def is_valid(number):
"""Checks to see if the number provided is a valid
Sozialversicherungsnummer."""
try:
return bool(validate(number))
except ValidationError:
return False

View file

@ -0,0 +1,90 @@
# uid.py - functions for handling Swiss business identifiers
# coding: utf-8
#
# Copyright (C) 2015 Arthur de Jong
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA
"""UID (Unternehmens-Identifikationsnummer, Swiss business identifier).
The Swiss UID is used to uniquely identify businesses for taxation purposes.
The number consists of a fixed "CHE" prefix, followed by 9 digits that are
protected with a simple checksum.
This module only supports the "new" format that was introduced in 2011 which
completely replaced the "old" 6-digit format in 2014.
More information is available at:
https://www.uid.admin.ch/
https://de.wikipedia.org/wiki/Unternehmens-Identifikationsnummer
>>> validate('CHE-100.155.212')
'CHE100155212'
>>> validate('CHE-100.155.213')
Traceback (most recent call last):
...
InvalidChecksum: ...
>>> format('CHE100155212')
'CHE-100.155.212'
"""
from stdnum.exceptions import *
from stdnum.util import clean
def compact(number):
"""Convert the number to the minimal representation. This strips
surrounding whitespace and separators."""
return clean(number, ' -.').strip().upper()
def calc_check_digit(number):
"""Calculate the check digit for organisations. The number passed should
not have the check digit included."""
weights = (5, 4, 3, 2, 7, 6, 5, 4)
s = sum(w * int(n) for w, n in zip(weights, number))
return str((11 - s) % 11)
def validate(number):
"""Checks to see if the number provided is a valid number. This checks
the length, formatting and check digit."""
number = compact(number)
if len(number) != 12:
raise InvalidLength()
if not number.startswith('CHE'):
raise InvalidComponent()
if not number[3:].isdigit():
raise InvalidFormat()
if number[-1] != calc_check_digit(number[3:-1]):
raise InvalidChecksum()
return number
def is_valid(number):
"""Checks to see if the number provided is a valid number. This checks
the length, formatting and check digit."""
try:
return bool(validate(number))
except ValidationError:
return False
def format(number):
"""Reformat the passed number to the standard format."""
number = compact(number)
return number[:3] + '-' + '.'.join(
number[i:i + 3] for i in range(3, len(number), 3))

View file

@ -0,0 +1,79 @@
# vat.py - functions for handling Swiss VAT numbers
# coding: utf-8
#
# Copyright (C) 2015 Arthur de Jong
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA
"""VAT, MWST, TVA, IVA, TPV (Mehrwertsteuernummer, the Swiss VAT number).
The Swiss VAT number is based on the UID but is followed by either "MWST"
(Mehrwertsteuer, the German abbreviation for VAT), "TVA" (Taxe sur la valeur
ajoutée in French), "IVA" (Imposta sul valore aggiunto in Italian) or "TPV"
(Taglia sin la plivalur in Romanian).
This module only supports the "new" format that was introduced in 2011 which
completely replaced the "old" 6-digit format in 2014.
More information is available at:
https://www.ch.ch/en/value-added-tax-number-und-business-identification-number/
https://www.uid.admin.ch/
>>> validate('CHE-107.787.577 IVA')
'CHE107787577IVA'
>>> validate('CHE-107.787.578 IVA')
Traceback (most recent call last):
...
InvalidChecksum: ...
>>> format('CHE107787577IVA')
'CHE-107.787.577 IVA'
"""
from stdnum.exceptions import *
from stdnum.ch import uid
def compact(number):
"""Convert the number to the minimal representation. This strips
surrounding whitespace and separators."""
return uid.compact(number)
def validate(number):
"""Checks to see if the number provided is a valid number. This checks
the length, formatting and check digit."""
number = compact(number)
if len(number) not in (15, 16):
raise InvalidLength()
uid.validate(number[:12])
if number[12:] not in ('MWST', 'TVA', 'IVA', 'TPV'):
raise InvalidComponent()
return number
def is_valid(number):
"""Checks to see if the number provided is a valid number. This checks
the length, formatting and check digit."""
try:
return bool(validate(number))
except ValidationError:
return False
def format(number):
"""Reformat the passed number to the standard format."""
number = compact(number)
return uid.format(number[:12]) + ' ' + number[12:]