[Python-modules-commits] [fake-factory] 11/17: Import fake-factory_0.5.7.orig.tar.gz
Christopher Baines
cbaines-guest at moszumanska.debian.org
Sat Mar 19 17:22:07 UTC 2016
This is an automated email from the git hooks/post-receive script.
cbaines-guest pushed a commit to branch master
in repository fake-factory.
commit 3e7903c6918aa7ecebef563b8fe42e4aaf977d28
Author: Christopher Baines <mail at cbaines.net>
Date: Sat Mar 19 16:32:31 2016 +0000
Import fake-factory_0.5.7.orig.tar.gz
---
.bumpversion.cfg | 3 +-
CHANGELOG.rst | 49 +-
README.rst | 46 +-
appveyor.yml | 2 +-
docs/communityproviders.rst | 12 +
docs/conf.py | 4 +-
docs/index.rst | 37 +-
faker/__init__.py | 2 +-
faker/cli.py | 53 +-
faker/generator.py | 4 +
faker/providers/address/hr_HR/__init__.py | 179 ++++++
faker/providers/address/ne_NP/__init__.py | 103 ++++
faker/providers/barcode/__init__.py | 3 +
faker/providers/company/hr_HR/__init__.py | 14 +
faker/providers/credit_card/__init__.py | 2 +
faker/providers/date_time/__init__.py | 123 ++--
faker/providers/file/__init__.py | 22 +-
faker/providers/internet/__init__.py | 45 +-
faker/providers/internet/bs_BA/__init__.py | 21 +
faker/providers/internet/fa_IR/__init__.py | 9 +
faker/providers/internet/hr_HR/__init__.py | 22 +
faker/providers/internet/ja_JP/__init__.py | 18 +
faker/providers/job/fa_IR/__init__.py | 103 ++++
faker/providers/job/fr_FR/__init__.py | 672 +++++++++++++++++++++
faker/providers/lorem/__init__.py | 3 +-
faker/providers/lorem/la/__init__.py | 65 +-
faker/providers/misc/__init__.py | 43 +-
faker/providers/person/de_DE/__init__.py | 781 ++++++++++++-------------
faker/providers/person/en/__init__.py | 2 +-
faker/providers/person/fr_FR/__init__.py | 46 +-
faker/providers/person/hr_HR/__init__.py | 180 ++++++
faker/providers/person/ja_JP/__init__.py | 72 +++
faker/providers/person/pt_BR/__init__.py | 122 ++--
faker/providers/phone_number/bs_BA/__init__.py | 40 ++
faker/providers/phone_number/hr_HR/__init__.py | 37 ++
faker/providers/phone_number/pl_PL/__init__.py | 39 +-
faker/providers/profile/__init__.py | 9 +-
faker/providers/python/__init__.py | 2 +-
faker/providers/ssn/zh_CN/__init__.py | 373 ++++++++++++
faker/tests/__init__.py | 237 +++++++-
faker/tests/ja_JP/__init__.py | 38 ++
faker/tests/ne_np/__init__.py | 51 ++
faker/tests/requirements.txt | 3 +-
faker/tests/zh_CN/__init__.py | 17 +
faker/utils/decorators.py | 7 +
faker/utils/text.py | 82 ++-
setup.py | 25 +-
47 files changed, 3155 insertions(+), 667 deletions(-)
diff --git a/.bumpversion.cfg b/.bumpversion.cfg
index 72605dc..768efa1 100644
--- a/.bumpversion.cfg
+++ b/.bumpversion.cfg
@@ -1,5 +1,6 @@
[bumpversion]
-current_version = 0.5.3
+current_version = 0.5.7
files = setup.py faker/__init__.py docs/conf.py
commit = True
tag = True
+
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 56d4246..c5228e6 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -1,6 +1,53 @@
Changelog
=========
+`0.5.7 - 07-March-2016 <http://github.com/joke2k/faker/compare/v0.5.6...v0.5.7>`__
+----------------------------------------------------------------------------------
+
+* Repackage to resolve PyPI issue.
+
+`0.5.6 - 07-March-2016 <http://github.com/joke2k/faker/compare/v0.5.5...v0.5.6>`__
+----------------------------------------------------------------------------------
+
+* Add date handling for datetime functions. Thanks @rpkilby.
+* Discern male and female first names in pt_BR. Thanks @gabrielusvicente.
+
+`0.5.5 - 29-February-2016 <http://github.com/joke2k/faker/compare/v0.5.4...v0.5.5>`__
+--------------------------------------------------------------------------------------
+
+* Specify help text for command line. Thanks @cbaines.
+
+`0.5.4 - 29-February-2016 <http://github.com/joke2k/faker/compare/v0.5.3...v0.5.4>`__
+--------------------------------------------------------------------------------------
+
+* Expose Provider's random instance. Thank @gsingers for the suggestion.
+* Make sure required characters are in the password. Thanks @craig552uk.
+* Add `internet` and `jobs` Providers for `fa_IR`. Thanks @hamidfzm.
+* Correct Poland phone numbers. Thanks @fizista.
+* Fix brittly tests due to seconds elapsed in-between comparison
+* Allow unicode in emails and domains. Thanks @zdelagrange for the report.
+* Use ``dateutil`` for computing next_month. Thanks @mark-love, @rshk.
+* Fix tests module import. Thanks @jorti for the report.
+* Handle unexpected length in ``ean()``. Thanks @michaelcho.
+* Add internet provider for ``ja_JP``. Thanks @massa142.
+* Add Romanized Japanese person name. Thanks @massa142.
+* Add tzinfo support to datetime methods. Thanks @j0hnsmith.
+* Add an 'office' file extensions category. Thanks @j0hnsmith.
+* Generate name according to profile's sex. Thanks @Dutcho for the report.
+* Add ``bs_BA`` phone number and internet provider. Thanks @elahmo.
+* Add a SSN provider for ``zh_CN``. Thanks @felixonmars.
+* Differentiate male and female first names in ``fr_FR`` locale. Thanks @GregoryVds
+* Add Maestro credit card. Thanks @anthonylauzon.
+* Add ``hr_HR`` localization. Thanks @mislavcimpersak.
+* Update ``de_DE`` first names. Thanks @WarrenFaith and @mschoebel.
+* Allow generation of IPv4 and IPv6 network address with valid CIDR. Thanks @kdeldycke.
+* Unittest IPv4 and IPv6 address and network generation. Thanks @kdeldycke.
+* Add a new provider to generate random binary blob. Thanks @kdeldycke.
+* Check that randomly produced language codes are parseable as locale by the
+ factory constructor. Thanks @kdeldycke.
+* Fix chinese random language code. Thanks @kdeldycke.
+* Remove duplicate words from Lorem provider. Thanks @jeffwidman.
+
`0.5.3 - 21-September-2015 <http://github.com/joke2k/faker/compare/v0.5.2...v0.5.3>`__
--------------------------------------------------------------------------------------
@@ -50,7 +97,7 @@ Changelog
* Added Finnish ssn (HETU) provider. Thanks @kivipe.
* Fixed person names for ``pl_PL``. Thanks Marek Bleschke.
* Added ``sv_SE`` locale providers. Thanks Tome Cvitan.
-* ``pt_BR`` Provider: Added ``catch_phrase`` to Company provider and fixed names in Person Provider. Thanks Marcelo Fonseca Tambalo.
+* ``pt_BR`` Provider: Added ``catch_phrase`` to Company provider and fixed names in Person Provider. Thanks Marcelo Fonseca Tambalo.
* Added ``sk_SK`` localized providers. Thanks @viktormaruna.
* Removed ``miscelleneous`` provider. It is superceded by the ``misc`` provider.
diff --git a/README.rst b/README.rst
index d9a136f..2596713 100644
--- a/README.rst
+++ b/README.rst
@@ -88,8 +88,10 @@ Providers
Each of the generator properties (like ``name``, ``address``, and
``lorem``) are called "fake". A faker generator has many of them,
-packaged in "providers". Here is a list of the bundled formatters in the
-default locale.
+packaged in "providers".
+
+Check the `extended docs`_ for a list of `bundled providers`_ and a list of
+`community providers`_.
Localization
------------
@@ -138,6 +140,7 @@ Included localized providers:
- `fi\_FI <http://fake-factory.readthedocs.org/en/master/locales/fi_FI.html>`__ - Finnish
- `fr\_FR <http://fake-factory.readthedocs.org/en/master/locales/fr_FR.html>`__ - French
- `hi\_IN <http://fake-factory.readthedocs.org/en/master/locales/hi_IN.html>`__ - Hindi
+- `hr\_HR <http://fake-factory.readthedocs.org/en/master/locales/hr_HR.html>`__ - Croatian
- `it\_IT <http://fake-factory.readthedocs.org/en/master/locales/it_IT.html>`__ - Italian
- `ja\_JP <http://fake-factory.readthedocs.org/en/master/locales/ja_JP.html>`__ - Japanese
- `ko\_KR <http://fake-factory.readthedocs.org/en/master/locales/ko_KR.html>`__ - Korean
@@ -167,7 +170,7 @@ When installed, you can invoke faker from the command-line:
[-l {bg_BG,cs_CZ,...,zh_CN,zh_TW}]
[-r REPEAT] [-s SEP]
[-i {module.containing.custom_provider othermodule.containing.custom_provider}]
- [fake [fake ...]]
+ [fake] [fake argument [fake argument ...]]
Where:
@@ -194,9 +197,7 @@ Where:
- ``fake``: is the name of the fake to generate an output for, such as
``name``, ``address``, or ``text``
-- ``[fake ...]``: is an optional comma-separated list of field names to
- pass to the fake, such as ``ssn,birthday`` when the ``profile`` fake
- is used
+- ``[fake argument ...]``: optional arguments to pass to the fake (e.g. the profile fake takes an optional list of comma separated field names as the first argument)
Examples:
@@ -262,13 +263,26 @@ How to use with factory-boy
title = factory.LazyAttribute(lambda x: faker.sentence(nb_words=4))
author_name = factory.LazyAttribute(lambda x: faker.name())
+Accessing the `random` instance
+-------------------------------
+
+The ``.random`` property on the generator returns the instance of ``random.Random``
+used to generate the values:
+
+.. code:: python
+
+ from faker import Faker
+ fake = Faker()
+ fake.random
+ fake.random.getstate()
+
Seeding the Generator
---------------------
When using Faker for unit testing, you will often want to generate the same
-data set. The generator offers a ``seed()`` method, which seeds the random
-number generator. Calling the same script twice with the same seed produces the
-same results.
+data set. For convenience, the generator also provide a ``seed()`` method, which
+seeds the random number generator. Calling the same script twice with the same
+seed produces the same results.
.. code:: python
@@ -279,8 +293,20 @@ same results.
print fake.name()
> Margaret Boehm
+The code above is equivalent to the following:
+
+.. code:: python
+
+ from faker import Faker
+ fake = Faker()
+ faker.random.seed(4321)
+
+ print fake.name()
+ > Margaret Boehm
+
Tests
-----
+
Installing dependencies:
.. code:: bash
@@ -333,6 +359,8 @@ Credits
.. _Buildout: http://www.buildout.org/
.. _modern-package-template: http://pypi.python.org/pypi/modern-package-template
.. _extended docs: http://fake-factory.readthedocs.org/en/latest/
+.. _bundled providers: http://fake-factory.readthedocs.org/en/latest/providers.html
+.. _community providers: http://fake-factory.readthedocs.org/en/latest/communityproviders.html
.. _LICENSE: https://github.com/joke2k/faker/blob/master/LICENSE.txt
.. _CONTRIBUTING: https://github.com/joke2k/faker/blob/master/CONTRIBUTING.rst
diff --git a/appveyor.yml b/appveyor.yml
index a7a2023..b1a9ccf 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -9,7 +9,7 @@ init:
- "ECHO %PYTHON%"
- ps: "ls C:/Python*"
install:
- - ps: (new-object net.webclient).DownloadFile('https://raw.github.com/pypa/pip/master/contrib/get-pip.py', 'C:/get-pip.py')
+ - ps: (new-object net.webclient).DownloadFile('https://bootstrap.pypa.io/get-pip.py', 'C:/get-pip.py')
- "%PYTHON%/python.exe C:/get-pip.py"
- "%PYTHON%/Scripts/pip.exe install -e ."
- "%PYTHON%/Scripts/pip.exe install -r faker/tests/requirements.txt"
diff --git a/docs/communityproviders.rst b/docs/communityproviders.rst
new file mode 100644
index 0000000..6d3d95e
--- /dev/null
+++ b/docs/communityproviders.rst
@@ -0,0 +1,12 @@
+.. ref-communityproviders:
+
+Community Providers
+===================
+
+Here's a list of Providers written by the community:
+
++---------------+-------------+----------+
+| Provider name | Description | URL |
++===============+=============+==========+
+| | | +
++---------------+-------------+----------+
diff --git a/docs/conf.py b/docs/conf.py
index 5b41361..f913ced 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -54,9 +54,9 @@ copyright = u'2014, Daniele Faraglia'
# built documents.
#
# The short X.Y version.
-version = '0.5.3'
+version = '0.5.7'
# The full version, including alpha/beta/rc tags.
-release = '0.5.3'
+release = '0.5.7'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff --git a/docs/index.rst b/docs/index.rst
index 601d474..f34dada 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -94,8 +94,10 @@ Providers
Each of the generator properties (like ``name``, ``address``, and
``lorem``) are called "fake". A faker generator has many of them,
-packaged in "providers". Here is a list of the bundled formatters in the
-default locale.
+packaged in "providers". For a list of the bundled providers, see
+:doc:`providers`.
+
+For a list of third-party providers, see :doc:`communityproviders`.
Localization
------------
@@ -264,13 +266,26 @@ How to use with factory-boy
title = factory.LazyAttribute(lambda x: faker.sentence(nb_words=4))
author_name = factory.LazyAttribute(lambda x: faker.name())
+Accessing the `random` instance
+-------------------------------
+
+The ``.random`` property on the generator returns the instance of ``random.Random``
+used to generate the values:
+
+.. code:: python
+
+ from faker import Faker
+ fake = Faker()
+ fake.random
+ fake.random.getstate()
+
Seeding the Generator
---------------------
When using Faker for unit testing, you will often want to generate the same
-data set. The generator offers a ``seed()`` method, which seeds the random
-number generator. Calling the same script twice with the same seed produces the
-same results.
+data set. For convenience, the generator also provide a ``seed()`` method, which
+seeds the random number generator. Calling the same script twice with the same
+seed produces the same results.
.. code:: python
@@ -281,6 +296,17 @@ same results.
print fake.name()
> Margaret Boehm
+The code above is equivalent to the following:
+
+.. code:: python
+
+ from faker import Faker
+ fake = Faker()
+ faker.random.seed(4321)
+
+ print fake.name()
+ > Margaret Boehm
+
Tests
-----
@@ -365,6 +391,7 @@ Contents
:maxdepth: 2
providers
+ communityproviders
locales
coding_style
diff --git a/faker/__init__.py b/faker/__init__.py
index ddd6714..f2c4d8f 100644
--- a/faker/__init__.py
+++ b/faker/__init__.py
@@ -1,4 +1,4 @@
-VERSION = '0.5.3'
+VERSION = '0.5.7'
from faker.generator import Generator
from faker.factory import Factory
diff --git a/faker/cli.py b/faker/cli.py
index 0062574..d2ddedc 100644
--- a/faker/cli.py
+++ b/faker/cli.py
@@ -38,6 +38,11 @@ def print_provider(doc, provider, formatters, excludes=None, output=None):
continue
try:
lines = text_type(example).expandtabs().splitlines()
+ except UnicodeDecodeError:
+ # The example is actually made of bytes.
+ # We could coerce to bytes, but that would fail anyway when we wiil
+ # try to `print` the line.
+ lines = ["<bytes>"]
except UnicodeEncodeError:
raise Exception('error on "{0}" with value "{1}"'.format(
signature, example))
@@ -139,31 +144,55 @@ class Command(object):
parser.add_argument('-l', '--lang',
choices=AVAILABLE_LOCALES,
- default=default_locale)
+ default=default_locale,
+ help="specify the language for a localized "
+ "provider (e.g. de_DE)")
parser.add_argument('-r', '--repeat',
- default=1, type=int)
+ default=1,
+ type=int,
+ help="generate the specified number of outputs")
parser.add_argument('-s', '--sep',
- default='\n')
-
- parser.add_argument('-i', '--include', default=META_PROVIDERS_MODULES, nargs='*')
-
- parser.add_argument('fake', action='store', nargs='*')
+ default='\n',
+ help="use the specified separator after each "
+ "output")
+
+ parser.add_argument('-i',
+ '--include',
+ default=META_PROVIDERS_MODULES,
+ nargs='*',
+ help="list of additional custom providers to "
+ "user, given as the import path of the module "
+ "containing your Provider class (not the provider "
+ "class itself)")
+
+ parser.add_argument('fake',
+ action='store',
+ nargs='?',
+ help="name of the fake to generate output for "
+ "(e.g. profile)")
+
+ parser.add_argument('fake_args',
+ metavar="fake argument",
+ action='store',
+ nargs='*',
+ help="optional arguments to pass to the fake "
+ "(e.g. the profile fake takes an optional "
+ "list of comma separated field names as the "
+ "first argument)")
arguments = parser.parse_args(self.argv[1:])
for i in range(arguments.repeat):
- fake = arguments.fake[0] if len(arguments.fake) else None
-
- print_doc(fake,
- arguments.fake[1:],
+ print_doc(arguments.fake,
+ arguments.fake_args,
lang=arguments.lang,
output=arguments.o,
includes=arguments.include
)
print(arguments.sep, file=arguments.o)
- if not fake:
+ if not arguments.fake:
# repeat not supported for all docs
break
diff --git a/faker/generator.py b/faker/generator.py
index 95dfac2..74034cb 100644
--- a/faker/generator.py
+++ b/faker/generator.py
@@ -50,6 +50,10 @@ class Generator(object):
"""Returns added providers."""
return self.providers
+ @property
+ def random(self):
+ return random
+
def seed(self, seed=None):
"""Calls random.seed"""
random.seed(seed)
diff --git a/faker/providers/address/hr_HR/__init__.py b/faker/providers/address/hr_HR/__init__.py
new file mode 100755
index 0000000..df22506
--- /dev/null
+++ b/faker/providers/address/hr_HR/__init__.py
@@ -0,0 +1,179 @@
+# coding=utf-8
+from __future__ import unicode_literals
+from .. import Provider as AddressProvider
+
+
+class Provider(AddressProvider):
+
+ city_formats = ('{{city_name}}', )
+
+ street_name_formats = ('{{street_name}}', )
+ street_address_formats = ('{{street_name}} {{building_number}}', )
+ address_formats = ('{{street_address}}\n{{postcode}} {{city}}', )
+
+ building_number_formats = ('###', '##', '#', '#a', '#b', '#c',
+ '#a/#', '#b/#', '#c/#')
+
+ postcode_formats = ('#####', )
+
+ street_suffixes_long = (
+ '', 'ulica', 'cesta', 'put', 'avenija',
+ )
+ street_suffixes_short = (
+ '', 'ul.', 'c.', 'a.',
+ )
+
+ cities = (
+ "Bakar", "Beli Manastir", "Belišće", "Benkovac", "Biograd na Moru",
+ "Bjelovar", "Buje", "Buzet", "Cres", "Crikvenica", "Čabar", "Čakovec",
+ "Čazma", "Daruvar", "Delnice", "Donja Stubica", "Donji Miholjac",
+ "Drniš", "Dubrovnik", "Duga Resa", "Dugo Selo", "Đakovo", "Đurđevac",
+ "Garešnica", "Glina", "Gospić", "Grubišno Polje",
+ "Hrvatska Kostajnica", "Hvar", "Ilok", "Imotski", "Ivanec",
+ "Ivanić-Grad", "Jastrebarsko", "Karlovac", "Kastav", "Kaštela",
+ "Klanjec", "Knin", "Komiža", "Koprivnica", "Korčula", "Kraljevica",
+ "Krapina", "Križevci", "Krk", "Kutina", "Kutjevo", "Labin",
+ "Lepoglava", "Lipik", "Ludbreg", "Makarska", "Mali Lošinj",
+ "Metković", "Mursko Središće", "Našice", "Nin", "Nova Gradiška",
+ "Novalja", "Novi Marof", "Novi Vinodolski", "Novigrad", "Novska",
+ "Obrovac", "Ogulin", "Omiš", "Opatija", "Opuzen", "Orahovica",
+ "Oroslavje", "Osijek", "Otočac", "Otok", "Ozalj", "Pag", "Pakrac",
+ "Pazin", "Petrinja", "Pleternica", "Ploče", "Popovača", "Poreč",
+ "Požega", "Pregrada", "Prelog", "Pula", "Rab", "Rijeka", "Rovinj",
+ "Samobor", "Senj", "Sinj", "Sisak", "Skradin", "Slatina",
+ "Slavonski Brod", "Slunj", "Solin", "Split", "Stari Grad",
+ "Supetar", "Sveta Nedelja", "Sveti Ivan Zelina", "Šibenik",
+ "Trilj", "Trogir", "Umag", "Valpovo", "Varaždin",
+ "Varaždinske Toplice", "Velika Gorica", "Vinkovci", "Virovitica",
+ "Vis", "Vodice", "Vodnjan", "Vrbovec", "Vrbovsko", "Vrgorac",
+ "Vrlika", "Vukovar", "Zabok", "Zadar", "Zagreb", "Zaprešić", "Zlatar",
+ )
+
+ streets = (
+ "Arnoldova", "Bakačeva", "Bijenička", "Bosanska", "Bučarova",
+ "Cmrok", "Čačkovićeva", "Davor", "Demetrova",
+ "Dolac", "Donje Prekrižje", "Draškovićeva", "Dubravkin",
+ "Dverce", "Dvoranski prečac", "Glogovac", "Golubovac", "Goljačke",
+ "Goljak", "Gornje Prekrižje", "Gračanska", "Gradec", "Grič",
+ "Gupčeva zvijezda", "Harmica", "Hercegovačka", "Horvatovac",
+ "Ilica", "Istarska", "Jabukovac", "Jadranska", "Jagodnjak",
+ "Javorovac", "Jezuitski trg", "Jurišićeva", "Jurjeve",
+ "Jurjevska", "Jurkovićeva", "Kamaufova", "Kamenita", "Kamenjak",
+ "Kaptol", "Kapucinske", "Klanac Grgura Tepečića", "Klenovac",
+ "Klesarski put", "Kozarčev vijenac", "Kožarska", "Kraljevec",
+ "Kraljevec II.", "Kraljevečki odvojak", "Kraljevečki ogranak",
+ "Krležin gvozd", "Krvavi most", "Ksaver", "Ksaverska", "Kurelčeva",
+ "Lisinskoga", "Lobmayerove", "Ljubinkovac", "Magdićeve", "Mala",
+ "Male", "Mašekova", "Medvedgradska", "Medveščak", "Mesnička",
+ "Mihaljevac", "Mirogojska", "Mletačka", "Mlinarska", "Mlinovi",
+ "Mlinske", "Naumovac", "Nemetova", "Nova Ves",
+ "Novi Goljak", "Opatička", "Opatovina", "Orlovac",
+ "Palmotićeva", "Pantovčak", "Paunovac",
+ "Perivoj biskupa Stjepana II.", "Perivoj srpanjskih žrtava",
+ "Petrova", "Pod zidom", "Podgaj", "Radnički dol", "Remetska",
+ "Ribnjak", "Rikardove", "Rockefellerova", "Rokov perivoj", "Rokova",
+ "Ružičnjak", "Skalinska", "Slavujevac", "Splavnica",
+ "Srebrnjak", "Streljačka", "Strossmayerovo šetalište", "Svibovac",
+ "Svibovac", "Šalata", "Šestinski vijenac", "Šestinski vrh",
+ "Šilobodov put", "Šumski prečac", "Tkalčićeva", "Tošovac",
+ "Tuškanac", "Vijenac", "Vinogradska", "Visoka", "Višnjica",
+ "Višnjičke", "Vitezovićeva", "Vlaška", "Voćarska", "Voćarsko naselje",
+ "Vončinina", "Vrazovo šetalište", "Wickerhauserova", "Zamenhofova",
+ "Zamenhofove", "Zavojna", "Zelengaj", "Zeleni dol",
+ "Zelenjak", "Zmajevac", "Zvonarnička",
+ )
+
+ states = (
+ "Zagrebačka",
+ "Krapinsko-zagorska",
+ "Sisačko-moslavačka",
+ "Karlovačka",
+ "Varaždinska",
+ "Koprivničko-križevačka",
+ "Bjelovarsko-bilogorska",
+ "Primorsko-goranska",
+ "Ličko-senjska",
+ "Virovitičko-podravska",
+ "Požeško-slavonska",
+ "Brodsko-posavska",
+ "Zadarska",
+ "Osječko-baranjska",
+ "Šibensko-kninska",
+ "Vukovarsko-srijemska",
+ "Splitsko-dalmatinska",
+ "Istarska",
+ "Dubrovačko-neretvanska",
+ "Međimurska",
+ "Grad Zagreb",
+ )
+
+ countries = (
+ "Afganistan", "Alandski otoci", "Albanija", "Alžir", "Američka Samoa",
+ "Američki Djevičanski Otoci", "Andora", "Angola", "Anguila",
+ "Antarktik", "Antigua i Barbuda", "Argentina", "Armenija", "Aruba",
+ "Australija", "Austrija", "Azerbajdžan", "Bahami",
+ "Bahrein", "Bangladeš", "Barbados", "Belgija", "Belize",
+ "Benin", "Bermuda", "Bjelorusija", "Bocvana", "Bolivija",
+ "Bosna i Hercegovina", "Božićni Otok", "Brazil",
+ "Britanski Djevičanski Otoci", "Britanski Teritorij Indijskog Oceana",
+ "Brunei Darussalam", "Bugarska", "Burkina Faso", "Burundi", "Butan",
+ "Cipar", "Crna Gora", "Curacao", "Čad", "Čile", "Danska", "Dominika",
+ "Dominikanska Republika", "Džibuti", "Egipat", "Ekvador",
+ "Ekvatorska Gvineja", "El Salvador", "Eritreja", "Estonija",
+ "Etiopija", "Falklandi", "Farski Otoci", "Fidži", "Filipini", "Finska",
+ "Francuska", "Francuska Gvajana", "Francuska Polinezija",
+ "Francuski Južni Teritoriji", "Gabon", "Gambija", "Gana", "Gibraltar",
+ "Vatikan", "Grčka", "Grenada", "Grenland", "Gruzija", "Guadeloupe",
+ "Guam", "Guernsey", "Gvajana", "Gvatemala", "Gvineja", "Gvineja Bisau",
+ "Haiti", "Honduras", "Hong Kong", "Hrvatska", "Indija", "Indonezija",
+ "Irak", "Iran, Islamska Republika", "Irska", "Island", "Isle Of Man",
+ "Istočni Timor", "Italija", "Izrael", "Jamajka", "Japan", "Jemen",
+ "Jersey", "Jordan", "Južna Afrika",
+ "Južna Gruzija i Južni Sendvič Otoci", "Kajmanski Otoci", "Kambodža",
+ "Kamerun", "Kanada", "Katar", "Kazakstan", "Kenija", "Kina",
+ "Kirgistan", "Kiribati", "Kokosovi Otoci", "Kolumbija", "Komori",
+ "Kongo", "Kongo, Demokratska Republika", "Koreja, Južna",
+ "Koreja, Sjeverna", "Kosovo", "Kostarika", "Kuba", "Kukovi Otoci",
+ "Kuvajt", "Laoska Narodna Demokratska Republika", "Latvija", "Lesoto",
+ "Libanon", "Liberija", "Libijska Arapska Džamahirija", "Lihtenštajn",
+ "Litva", "Luksemburg", "Madagaskar", "Mađarska", "Majote", "Makao",
+ "Makedonija", "Malavi", "Maldivi Maldives", "Malezija", "Mali",
+ "Malta", "Maroko", "Maršalovi Otoci", "Martinik", "Mauricijus",
+ "Mauritanija", "Meksiko", "Mijanmar", "Mikronezija",
+ "Moldavija, Republika", "Monako", "Mongolija", "Montserat", "Mozambik",
+ "Namibija", "Nauru", "Nepal", "Niger", "Nigerija", "Nikaragva", "Niue",
+ "Nizozemska", "Norveška", "Nova Kaledonija", "Novi Zeland", "Njemačka",
+ "Obala Slonovače", "Oman", "Otok Bouvet",
+ "Otok Heard i Otoci McDonald", "Otok Norfolk", "Pakistan", "Palau",
+ "Palestinsko Područje", "Panama", "Papua Nova Gvineja", "Paragvaj",
+ "Peru", "Pitcairn", "Poljska Poland", "Portoriko", "Portugal",
+ "Republika Češka", "Reunion", "Ruanda", "Rumunjska", "Rusija",
+ "Salamunovi Otoci", "Samoa", "San Marino", "São Tomé ai Príncipe",
+ "Saudijska Arabija", "Sejšeli", "Senegal", "Sijera Leone", "Singapur",
+ "Sint Maarten", "Sirija", "Sjedinjene Američke Države",
+ "Sjeverni Marijanski Otoci", "Slovačka", "Slovenija", "Somalija",
+ "Južni Sudan", "Srbija", "Srednjoafrička Republika", "Sudan",
+ "Surinam", "Svalbard i Jan Mayen", "Svaziland", "Sveta Helena",
+ "Sveti Bartolomej", "Sveti Martin", "Sveti Petar i Miguel",
+ "Sv. Kristofor i Nevis", "Sv. Lucija", "Sv. Vincent i Grenadini",
+ "Španjolska", "Šri Lanka", "Švedska", "Švicarska", "Tadžikistan",
+ "Tajland", "Tajvan", "Tanzanija", "Togo", "Tokelau", "Tonga",
+ "Trinidad i Tobago", "Tunis", "Turkmenistan", "Turkski i Kaikos Otoci",
+ "Turska", "Tuvalu", "Uganda",
+ "Ujedinjene Države Manjih Pacifičkih Otoka",
+ "Ujedinjeni Arapski Emirati", "Ukrajina", "Urugvaj", "Uzbekistan",
+ "Vanuatu", "Velika Britanija", "Venezuela", "Vijetnam",
+ "Wallis i Futuna", "Zambija", "Zapadna Sahara", "Zeleni Rt",
+ )
+
+ @classmethod
+ def city_name(cls):
+ return cls.random_element(cls.cities)
+
+ @classmethod
+ def street_name(cls):
+ return cls.random_element(cls.streets)
+
+ @classmethod
+ def state(cls):
+ return cls.random_element(cls.states)
diff --git a/faker/providers/address/ne_NP/__init__.py b/faker/providers/address/ne_NP/__init__.py
new file mode 100644
index 0000000..189a4a6
--- /dev/null
+++ b/faker/providers/address/ne_NP/__init__.py
@@ -0,0 +1,103 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from .. import Provider as AddressProvider
+from faker.generator import random
+
+
+class Provider(AddressProvider):
+ building_number_formats = ('#', '##', '###')
+ street_name_formats = ('{{last_name}} {{street_suffix}}',)
+ street_address_formats = ('{{street_name}}',)
+ city_formats = ('{{city}}',)
+ #http://www.nepalpost.gov.np/index.php/postal-codes-of-nepal
+ postcode_formats = ('#####',)
+
+ address_formats = (
+ "{{street_name}} {{building_prefix}} {{building_number}} \n{{city}}\n{{district}} {{postcode}}",
+ )
+
+ street_suffixes = (
+ 'मार्ग','आश्रम','बाटो','पथ','गल्ली','गेट','हाईट','टार','रोड','कुना','चौर','निवास' )
+
+ building_prefixes = ('वडा','घर')
+
+ # https://en.wikipedia.org/wiki/List_of_sovereign_states
+ countries = (
+ 'अंगोला','अक्रोटिरी र धेकेलिया','अजरबैजान','अफगानिस्तान','अमेरिकी सामोआ','अरुबा','अर्जेन्टिना','अर्मेनिया','अलडेर्नी','अल्जेरिया','अल्बानिया','अस्ट्रिया',
+ 'अस्ट्रेलिया','आइजल अफ म्यान','आइभोरी कोस्ट','आइसल्याण्ड','आजाद कश्मीर','आयरल्याण्ड','इक्वेटोरियल गिनी','इक्वेडर','इजरायल','इटाली','इण्डोनेशिया',
+ 'इथियोपिया','इराक','इरान','इस्टोनिया','उज्बेकिस्तान','उत्तर कोरिया','उत्तरी मारिआना टापु','उत्तरी साइप्रस','उरुग्वे','एङगुइला','एण्डोरा','एन्टिगुआ र बर्बुडा',
+ 'एरिट्रिया','एल साल्भादोर','एशमोर र कर्टियर टापु','ओमान','कजाख्स्तान','कतार','कम्बोडिया','किरिबाटी','किर्गिजस्तान','कुक द्वीप','कुराकाओ','कुवैत','केन्या',
+ 'केप भर्ड','केम्यान टापु','कोकोस टापु','कोटे डी आइभोरी','कोमोरोस','कोरल सी टापु क्षेत्र','कोलम्बिया','कोसोभो','कोस्टारिका','क्यानडा','क्यामेरून','क्युबा',
+ 'क्रिसमस टापु','क्रोएसिया','क्लिप्परटन द्वीप','क्वीन माउड ल्याण्ड','गणतन्त्र कङ्गो','गणतन्त्र कोरिया','गणतन्त्र स्पर्स्का','गाबोन','गिनी','गिब्राल्टार','गिलगीत',
+ 'गुयना','गुर्न्जी','ग्रिनाडा','ग्रीनल्याण्ड','ग्रीस','ग्वाटेमाला','ग्वाम','घाना','चाड','चिली','चीन','चेक गणतन्त्र','जमैका','जर्मनी','जर्सी','जापान','जाम्बिया',
+ 'जिबुटी','जोर्डन','टर्की','टिमोर','टुभालु','टुर्क्स तथा काइकोस टापु','टोंगा','टोकेलाउ','टोगो','ट्युनिसिया','ट्रान्सनिसट्रिया','ट्रिनिडाड र टोबागो','डेनमार्क',
+ 'डोमिनिकन गणतन्त्र','डोमिनिका','तन्जानिया','ताइवान','ताजिकिस्तान','तुर्कमेनिस्तान','थाइल्याण्ड','दक्षिण अफ्रिका','दक्षिण ओसेटिया','दक्षिण कोरिया',
+ 'दक्षिण जर्जिया तथा दक्षिण स्याण्डवीच टापु','दक्षिणी सुडान','नर्वे','नर्वेको','नाइजर','नाइजेरिया','नाउरु','नागोर्नो','नामिबिया','निकाराग्वा','नियु',
+ 'नेदरल्याण्ड','नेपाल','नोर्फोक टापु','न्यु क्यालोडेनिया','न्युजिल्यान्ड','पपुवा न्युगिनी','पलाउ','पाकिस्तान','पानामा','पाराग्वे','पिटकेर्न टापु','पिटर द्वीप',
+ 'पूर्वी टिमोर','पेरु','पोर्चुगल','पोल्याण्ड','प्यालेस्टाइन','प्युर्तो रिको','प्रजातान्त्रिक गणतन्त्र कंगो','प्रजातान्त्रिक गणतन्त्र कोरिया','प्रिडेनेस्ट्रोभी',
+ 'फकल्याण्ड टापु','फरोइ टापु','फिजी','फिनल्याण्ड','फिलिपिन्स','फ्रान्स','फ्रेन्च दक्षिणी र अन्टार्कटिक द्वीप','फ्रेन्च पोलिनेसिया','बंगलादेश','बर्मा',
+ 'बर्मुडा','बहराइन','बहामस','बार्बाडोस','बुरुन्डी','बुर्किना फासो','बुल्गेरिया','बेनिन','बेलारूस','बेलिज','बेल्जियम','बोत्स्वाना','बोलिभिया',
+ 'बोस्निया र हर्जगोभिना','बोस्निया र हर्जगोभिना संघ','बौभेट द्वीप','ब्राजिल','ब्रिटिस भर्जिन टापु','ब्रुनेई','भानुअटु','भारत','भियतनाम','भुटान',
+ 'भेनेजुएला','भ्याटिकन','भ्याटिकन सिटी','मकाउ','मङ्गोलिया','मध्य अफ्रिकी गणतन्त्र','मलावी','मलेशिया','माइक्रोनेसियाको संघीय राज्य','माडागास्कर',
+ 'मार्शल द्वीप','माली','माल्टा','माल्दिभ्स','मिश्र','मेक्सिको','मोजाम्बिक','मोनाको','मोन्टसेराट','मोन्टेनेग्रो','मोरक्को','मोल्डोभा','मौरिसनिया','मौरिसस',
+ 'म्यानमार','म्यासेडोनिया','यमन','युक्रेन','युगान्डा','रसिया','रुवाण्डा','रोमानिया','रोस डिपेन्डेन्सी','लक्जेम्बर्ग','लाईबेरिया','लाओस','लात्भिया','लिचटेन्स्टाइन',
+ 'लिथुआनिया','लिबिया','लेबनान','लेसोथो','वाल्लिस र फुटुना','श्रीलंका','संघीय राज्य माइक्रोनेसिया','संयुक्त अधिराज्य','संयुक्त अरब इमिरेट्स','संयुक्त राज्य अमेरिका',
+ 'संयुक्त राज्य भर्जिन टापु','सर्बिया','साइप्रस','साउदी अरब','साओ टोमे र प्रिन्सिपे','सान मारिनो','साबा','सामोआ','साहरवी अरब लोकतान्त्रिक गणतन्त्र','सिंगापुर',
+ 'सिन्ट मार्टिन','सीरियन कुर्दिस्तान','सीरिया','सुडान','सुरिनेम','सेनेगल','सेन्ट किट्स र नेभिस','सेन्ट पियेर्रे र मिकुएलन','सेन्ट बार्थेलेमी','सेन्ट भिन्सेन्ट र ग्रेनाडाइन्स',
+ 'सेन्ट मार्टिन','सेन्ट लुसिया','सेन्ट हेलेना','सेरा लियोन','सेसेल्स','सोमालिया','सोमालील्याण्ड','सोलोमन द्वीप','स्पेन','स्लोभाकिया','स्लोभेनिया','स्वाजिल्याण्ड',
+ 'स्विजरल्याण्ड','स्वीडेन','हंगेरी','हङकङ','हर्म','हाइटी','हेयर्ड द्वीप र म्याकडोनाल्ड टापु','होन्डुरस',
+ 'अबखाजिया', 'जर्जिया')
+
+ # cities are taken from https://en.wikipedia.org/wiki/List_of_cities_in_Nepal
+ cities = (
+ 'मिर्चैया','प्युठान','कञ्चनपुर','लुम्बिनी सांस्कृतिक','बागलुङ','इलाम','भक्तपुर','भद्रपुर','घोराही','स्याङ्जा',
+ 'खैरहानी नगरपालिका','म्याग्दी','रंगेली','काठमाडौं','शनि-अर्जुन','पर्वत','सप्तरी','पनौती','जयपृथ्वी','लहान','वालिङ',
+ 'बर्दघाट','डोटी','धरान','पथरी शनिश्चरे','चन्दननाथ','नवलपरासी','किर्तिपुर','दैलेख','सुनसरी','बेलौरी','कुस्मा','मकवानपुर','कञ्चनरूप',
+ 'गुलरिया','टीकापुर','राजापुर','फिदिम','खोटाङ','धनुषाधाम','झापा','पुनर्वास','भक्तपुर','बर्दिया','बागलुङ','दमक','तेह्रथुम','नारायण',
+ 'ताप्लेजुङ','तानसेन','पाँचखाल','बनेपा','म्याङ्लुङ','ललितपुर','दिपायल','अपी','दाङ','सन्धिखर्क','धनकुटा','बिरेन्द्रनगर','गौर','मोरङ',
+ 'सङ्खुवासभा','लम्की-चुहा','बारा','हरिवन नगरपालिका','मलङ्वा','सिराहा','जनकपुर','सल्यान','सिन्धुपाल्चोक','दुल्लु','ओखलढुङ्गा','पाल्पा',
+ 'इटहरी','रेसुङगा','कृष्णनगर','शुक्लगण्डकी',
+ 'नुवाकोट','साँफेबगर','राजविराज','नेपालगंज','भिमेश्वर','ताप्लेजुङ','धुलिखेल','व्यास','भोजपुर','धादिङ','बेनी','अर्घाखाँची','भीमदत्त','रौतहट',
+ 'जलेश्वर','देवदह','बेलवारी','बुटवल','सुर्खेत','मङ्गलसेन','कैलाली','धनकुटा','रुपन्देही','सल्यान','रामपुर','बिराटनगर','चौतारा',
+ 'देवचुली','कपिलवस्तु','सुनवल','शिवराज','चम्पापुर (चापागाउँ)','भरतपुर','गढिमाई','उर्लावारी','लेखनाथ','सिद्धिचरण','मेचीनगर',
+ 'चित्रवन','कास्की','गौशाला','पुतलीबजार','बिदुर','शम्भुनाथ','पर्सा','प्युठान','निजगढ','डडेलधुरा','कन्काई','गैंडाकोट','पाल्पा','कार्यविनायक*',
+ 'तिलोत्तमा','तुलसीपुर','वीरगञ्ज','शंखरपुर*','अत्तरिया','बझाङ','मन्थली*','कपिलवस्तु','कटारी',
+ 'हेटौडा','कलैया','सुन्दर दुलारी','सिन्धुली','थाहा','बाँके','ललितपुर','दार्चुला','पोखरा','बन्दीपुर','सर्लाही',
+ 'कोहलपुर','सैनामैना','अमरागढी','उदयपुर','काठमाडौं','सुर्योदय','सिराहा',
+ 'महोत्तरी','धनगढी','शारदा','काभ्रेपलाञ्चोक','त्रियुगा','रामेछाप','पाँचथर','इलाम','भोजपुर',
+ 'मध्यपुर ठिमी','दुहवी-भलुवा','दशरथचन्द','बैतडी','कोशी हरैंचा','चापाकोट','दिक्तेल',
+ 'चन्द्रपुर','लालबन्दी','चितवन','रत्ननगर','पृथ्वीनारायण','धनुषा','गुल्मी','बेंसीशहर','लमजुङ','अछाम',
+ 'तनहुँ','खाँदबारी','बिर्तामोड','कमलामाई','छिरेश्वरनाथ','सिद्धार्थनगर','निलकण्ठ','गोर्खा','दोलखा','रामग्राम',
+ 'इनरूवा','कावासोती','बेल्टार बसाहा','जुम्ला','ईश्वरपुर')
+
+
+ districts = (
+ 'अछाम','अर्घाखाँची','इलाम','उदयपुर','ओखलढुङ्गा','कञ्चनपुर','कपिलवस्तु','काठमाडौं','काभ्रेपलाञ्चोक','कालीकोट','कास्की','कैलाली','खोटाङ','गुल्मी',
+ 'गोर्खा','चितवन','जाजरकोट','जुम्ला','झापा','डडेल्धुरा','डोटी','डोल्पा','तनहुँ','ताप्लेजुङ','तेह्रथुम','दाङ','दार्चुला','दैलेख','दोलखा','धनकुटा','धनुषा','धादिङ','नवलपरासी',
+ 'नुवाकोट','पर्वत','पर्सा','पाँचथर','पाल्पा','प्युठान','बझाङ','बर्दिया','बाँके','बाग्लुङ','बाजुरा','बारा','भक्तपुर','भोजपुर','मकवानपुर','मनाङ','महोत्तरी','मुगु','मुस्ताङ',
+ 'मोरङ','म्याग्दी','रसुवा','रामेछाप','रुकुम','रूपन्देही','रोल्पा','रौतहट','लमजुङ्','ललितपुर','वैतडी','संखुवासभा','सप्तरी','सर्लाही','सल्यान','सिन्धुपलाञ्चोक','सिन्धुली',
+ 'सिराहा','सुनसरी','सुर्खेत','सोलुखुम्बु','स्याङ्जा','हुम्ला')
+
+ @classmethod
+ def district(cls):
+ """
+ :example अछाम
+ """
+ return cls.random_element(cls.districts)
+
+ @classmethod
+ def city(cls):
+ """
+ :example कावासोत
+ """
+ return cls.random_element(cls.cities)
+
+ @classmethod
+ def building_prefix(cls):
+ """
+ :example वडा
+ """
+ return cls.random_element(cls.building_prefixes)
+
+
\ No newline at end of file
diff --git a/faker/providers/barcode/__init__.py b/faker/providers/barcode/__init__.py
index 04b637d..6109a50 100644
--- a/faker/providers/barcode/__init__.py
+++ b/faker/providers/barcode/__init__.py
@@ -9,6 +9,9 @@ class Provider(BaseProvider):
def ean(self, length=13):
code = [self.random_digit() for i in range(length - 1)]
+ if length not in (8, 13):
+ raise AssertionError("length can only be 8 or 13")
+
if length == 8:
weights = [3,1,3,1,3,1,3]
elif length == 13:
diff --git a/faker/providers/company/hr_HR/__init__.py b/faker/providers/company/hr_HR/__init__.py
new file mode 100755
index 0000000..7fd2eb0
--- /dev/null
+++ b/faker/providers/company/hr_HR/__init__.py
@@ -0,0 +1,14 @@
+from __future__ import unicode_literals
+from .. import Provider as CompanyProvider
+
+
+class Provider(CompanyProvider):
+ formats = (
+ '{{last_name}} {{company_suffix}}',
+ '{{last_name}} {{last_name}} {{company_suffix}}',
+ '{{last_name}}',
+ )
+
+ company_suffixes = (
+ 'd.o.o.', 'd.d.', 'j.d.o.o.'
+ )
diff --git a/faker/providers/credit_card/__init__.py b/faker/providers/credit_card/__init__.py
index b841c58..431d53a 100644
--- a/faker/providers/credit_card/__init__.py
+++ b/faker/providers/credit_card/__init__.py
@@ -18,6 +18,7 @@ class CreditCard(object):
class Provider(BaseProvider):
+ prefix_maestro = ['5018', '5020', '5038', '5612', '5893', '6304', '6759', '6761', '6762', '6763', '0604', '6390']
prefix_mastercard = ['51', '52', '53', '54', '55']
prefix_visa = ['4']
prefix_amex = ['34', '37']
@@ -28,6 +29,7 @@ class Provider(BaseProvider):
prefix_voyager = ['8699']
credit_card_types = {
+ 'maestro': CreditCard('Maestro', prefix_maestro, 12, security_code='CVV'),
'mastercard': CreditCard('Mastercard', prefix_mastercard, 16, security_code='CVV'),
'visa16': CreditCard('VISA 16 digit', prefix_visa),
'visa13': CreditCard('VISA 13 digit', prefix_visa, 13),
diff --git a/faker/providers/date_time/__init__.py b/faker/providers/date_time/__init__.py
index f2e93e5..13e6316 100644
--- a/faker/providers/date_time/__init__.py
+++ b/faker/providers/date_time/__init__.py
@@ -2,10 +2,12 @@
from __future__ import unicode_literals
+from datetime import timedelta
import re
from time import time, mktime
-from datetime import timedelta
+from dateutil import relativedelta
+from dateutil.tz import tzlocal
from faker.generator import random
from faker.utils.datetime_safe import date, datetime, real_date, real_datetime
@@ -15,6 +17,8 @@ from .. import BaseProvider
def datetime_to_timestamp(dt):
+ if getattr(dt, 'tzinfo', None) is not None:
+ dt = dt.astimezone(tzlocal())
return mktime(dt.timetuple())
@@ -242,18 +246,20 @@ class Provider(BaseProvider):
return timedelta(seconds=ts)
@classmethod
- def date_time(cls):
+ def date_time(cls, tzinfo=None):
"""
Get a datetime object for a date between January 1, 1970 and now
+ :param tzinfo: timezone, instance of datetime.tzinfo subclass
:example DateTime('2005-08-16 20:39:21')
:return datetime
"""
- return datetime.fromtimestamp(cls.unix_time())
+ return datetime.fromtimestamp(cls.unix_time(), tzinfo)
@classmethod
- def date_time_ad(cls):
+ def date_time_ad(cls, tzinfo=None):
"""
Get a datetime object for a date between January 1, 001 and now
+ :param tzinfo: timezone, instance of datetime.tzinfo subclass
:example DateTime('1265-03-22 21:15:52')
:return datetime
"""
@@ -262,14 +268,15 @@ class Provider(BaseProvider):
# a "ValueError: timestamp out of range for platform time_t"
# on some platforms due to system C functions;
# see http://stackoverflow.com/a/10588133/2315612
- return datetime.fromtimestamp(0) + timedelta(seconds=ts)
+ return datetime.fromtimestamp(0, tzinfo) + timedelta(seconds=ts)
@classmethod
- def iso8601(cls):
+ def iso8601(cls, tzinfo=None):
"""
+ :param tzinfo: timezone, instance of datetime.tzinfo subclass
:example '2003-10-21T16:05:52+0000'
"""
- return cls.date_time().isoformat()
+ return cls.date_time(tzinfo).isoformat()
@classmethod
def date(cls, pattern='%Y-%m-%d'):
@@ -290,15 +297,15 @@ class Provider(BaseProvider):
return cls.date_time().time().strftime(pattern)
@classmethod
- def _parse_date_time(cls, text):
+ def _parse_date_time(cls, text, tzinfo=None):
if isinstance(text, (datetime, date, real_datetime, real_date)):
return datetime_to_timestamp(text)
- now = datetime.now()
+ now = datetime.now(tzinfo)
if isinstance(text, timedelta):
return datetime_to_timestamp(now - text)
if is_string(text):
if text == 'now':
- return datetime_to_timestamp(datetime.now())
+ return datetime_to_timestamp(datetime.now(tzinfo))
parts = cls.regex.match(text)
if not parts:
return
@@ -319,134 +326,142 @@ class Provider(BaseProvider):
raise ValueError("Invalid format for date '{0}'".format(text))
@classmethod
- def date_time_between(cls, start_date='-30y', end_date='now'):
+ def date_time_between(cls, start_date='-30y', end_date='now', tzinfo=None):
"""
Get a DateTime object based on a random date between two given dates.
Accepts date strings that can be recognized by strtotime().
:param start_date Defaults to 30 years ago
:param end_date Defaults to "now"
+ :param tzinfo: timezone, instance of datetime.tzinfo subclass
:example DateTime('1999-02-02 11:42:52')
:return DateTime
"""
start_date = cls._parse_date_time(start_date)
end_date = cls._parse_date_time(end_date)
timestamp = random.randint(start_date, end_date)
- return datetime.fromtimestamp(timestamp)
+ return datetime.fromtimestamp(timestamp, tzinfo)
@classmethod
- def date_time_between_dates(cls, datetime_start=None, datetime_end=None):
+ def date_time_between_dates(cls, datetime_start=None, datetime_end=None, tzinfo=None):
"""
Takes two DateTime objects and returns a random date between the two given dates.
Accepts DateTime objects.
:param datetime_start DateTime
:param datetime_end DateTime
+ :param tzinfo: timezone, instance of datetime.tzinfo subclass
:example DateTime('1999-02-02 11:42:52')
:return DateTime
"""
if datetime_start is None:
- datetime_start = datetime.now()
+ datetime_start = datetime.now(tzinfo)
if datetime_end is None:
- datetime_end = datetime.now()
+ datetime_end = datetime.now(tzinfo)
- timestamp = random.randint(datetime_to_timestamp(datetime_start),
- datetime_to_timestamp(datetime_end))
- return datetime.fromtimestamp(timestamp)
+ timestamp = random.randint(
+ datetime_to_timestamp(datetime_start),
+ datetime_to_timestamp(datetime_end),
+ )
+ return datetime.fromtimestamp(timestamp, tzinfo)
@classmethod
- def date_time_this_century(cls, before_now=True, after_now=False):
+ def date_time_this_century(cls, before_now=True, after_now=False, tzinfo=None):
"""
- Gets a DateTime object for the decade year.
-
+ Gets a DateTime object for the decade year.
+
:param before_now: include days in current decade before today
:param after_now: include days in current decade after today
+ :param tzinfo: timezone, instance of datetime.tzinfo subclass
:example DateTime('2012-04-04 11:02:02')
:return DateTime
"""
- now = datetime.now()
- this_century_start = datetime(now.year - (now.year % 10), 1, 1)
- next_century_start = datetime(this_century_start.year + 10, 1, 1)
+ now = datetime.now(tzinfo)
+ this_century_start = datetime(now.year - (now.year % 10), 1, 1, tzinfo=tzinfo)
+ next_century_start = datetime(this_century_start.year + 10, 1, 1, tzinfo=tzinfo)
if before_now and after_now:
- return cls.date_time_between_dates(this_century_start, next_century_start)
+ return cls.date_time_between_dates(this_century_start, next_century_start, tzinfo)
elif not before_now and after_now:
- return cls.date_time_between_dates(now, next_century_start)
+ return cls.date_time_between_dates(now, next_century_start, tzinfo)
elif not after_now and before_now:
- return cls.date_time_between_dates(this_century_start, now)
+ return cls.date_time_between_dates(this_century_start, now, tzinfo)
else:
return now
@classmethod
- def date_time_this_decade(cls, before_now=True, after_now=False):
+ def date_time_this_decade(cls, before_now=True, after_now=False, tzinfo=None):
"""
- Gets a DateTime object for the decade year.
-
+ Gets a DateTime object for the decade year.
+
:param before_now: include days in current decade before today
... 3794 lines suppressed ...
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/fake-factory.git
More information about the Python-modules-commits
mailing list