{ "info": { "author": "Steve Pulec", "author_email": "spulec@gmail", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3" ], "description": "FreezeGun: Let your Python tests travel through time\n====================================================\n\n\n.. image:: https://secure.travis-ci.org/spulec/freezegun.png?branch=master\n :target: https://travis-ci.org/spulec/freezegun\n.. image:: https://coveralls.io/repos/spulec/freezegun/badge.png?branch=master\n :target: https://coveralls.io/r/spulec/freezegun\n\nFreezeGun is a library that allows your python tests to travel through time by mocking the datetime module.\n\nUsage\n-----\n\nOnce the decorator or context manager have been invoked, all calls to datetime.datetime.now(), datetime.datetime.utcnow(), datetime.date.today(), time.time(), time.localtime(), time.gmtime(), and time.strftime() will return the time that has been frozen.\n\nDecorator\n~~~~~~~~~\n\n.. code-block:: python\n\n from freezegun import freeze_time\n import datetime\n import unittest\n\n\n @freeze_time(\"2012-01-14\")\n def test():\n assert datetime.datetime.now() == datetime.datetime(2012, 1, 14)\n\n # Or a unittest TestCase - freezes for every test, from the start of setUpClass to the end of tearDownClass\n\n @freeze_time(\"1955-11-12\")\n class MyTests(unittest.TestCase):\n def test_the_class(self):\n assert datetime.datetime.now() == datetime.datetime(1955, 11, 12)\n\n # Or any other class - freezes around each callable (may not work in every case)\n\n @freeze_time(\"2012-01-14\")\n class Tester(object):\n def test_the_class(self):\n assert datetime.datetime.now() == datetime.datetime(2012, 1, 14)\n\nContext Manager\n~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n from freezegun import freeze_time\n\n def test():\n assert datetime.datetime.now() != datetime.datetime(2012, 1, 14)\n with freeze_time(\"2012-01-14\"):\n assert datetime.datetime.now() == datetime.datetime(2012, 1, 14)\n assert datetime.datetime.now() != datetime.datetime(2012, 1, 14)\n\nRaw use\n~~~~~~~\n\n.. code-block:: python\n\n from freezegun import freeze_time\n\n freezer = freeze_time(\"2012-01-14 12:00:01\")\n freezer.start()\n assert datetime.datetime.now() == datetime.datetime(2012, 1, 14, 12, 0, 1)\n freezer.stop()\n\nTimezones\n~~~~~~~~~\n\n.. code-block:: python\n\n from freezegun import freeze_time\n\n @freeze_time(\"2012-01-14 03:21:34\", tz_offset=-4)\n def test():\n assert datetime.datetime.utcnow() == datetime.datetime(2012, 1, 14, 3, 21, 34)\n assert datetime.datetime.now() == datetime.datetime(2012, 1, 13, 23, 21, 34)\n\n # datetime.date.today() uses local time\n assert datetime.date.today() == datetime.date(2012, 1, 13)\n\nNice inputs\n~~~~~~~~~~~\n\nFreezeGun uses dateutil behind the scenes so you can have nice-looking datetimes\n\n.. code-block:: python\n\n @freeze_time(\"Jan 14th, 2012\")\n def test_nice_datetime():\n assert datetime.datetime.now() == datetime.datetime(2012, 1, 14)\n\n`tick` argument\n~~~~~~~~~~~\n\nFreezeGun has an additional `tick` argument which will restart time at the given\nvalue, but then time will keep ticking. This is alternative to the default\nparameters which will keep time stopped.\n\n.. code-block:: python\n\n @freeze_time(\"Jan 14th, 2020\", tick=True)\n def test_nice_datetime():\n assert datetime.datetime.now() > datetime.datetime(2020, 1, 14)\n\nManual ticks\n~~~~~~~~~~~~\n\nFreezegun allows for the time to be manually forwarded as well\n\n.. code-block:: python\n\n def test_manual_increment():\n initial_datetime = datetime.datetime(year=1, month=7, day=12,\n hour=15, minute=6, second=3)\n with freeze_time(initial_datetime) as frozen_datetime:\n assert frozen_datetime() == initial_datetime\n\n frozen_datetime.tick()\n initial_datetime += datetime.timedelta(seconds=1)\n assert frozen_datetime() == initial_datetime\n\n frozen_datetime.tick(delta=datetime.timedelta(seconds=10))\n initial_datetime += datetime.timedelta(seconds=10)\n assert frozen_datetime() == initial_datetime\n\nMoving time to specify datetime\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nFreezegun allows moving time to specific dates \n\n.. code-block:: python\n\n def test_move_to():\n initial_datetime = datetime.datetime(year=1, month=7, day=12,\n hour=15, minute=6, second=3)\n\n other_datetime = datetime.datetime(year=2, month=8, day=13,\n hour=14, minute=5, second=0)\n with freeze_time(initial_datetime) as frozen_datetime:\n assert frozen_datetime() == initial_datetime\n\n frozen_datetime.move_to(other_datetime)\n assert frozen_datetime() == other_datetime\n\n frozen_datetime.move_to(initial_datetime)\n assert frozen_datetime() == initial_datetime\n\nParameter for ``move_to`` can be any valid ``freeze_time`` date (string, date, datetime).\n\n\nDefault Arguments\n~~~~~~~~~~~~~~~~~\n\nNote that Freezegun will not modify default arguments. The following code will\nprint the current date. See `here `_ for why.\n\n.. code-block:: python\n\n from freezegun import freeze_time\n import datetime as dt\n\n def test(default=dt.date.today()):\n print(default)\n\n with freeze_time('2000-1-1'):\n test()\n\n\nInstallation\n------------\n\nTo install FreezeGun, simply:\n\n.. code-block:: bash\n\n $ pip install freezegun\n\nOn Debian (Testing and Unstable) systems:\n\n.. code-block:: bash\n\n $ sudo apt-get install python-freezegun\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/spulec/freezegun", "keywords": null, "license": "Apache 2.0", "maintainer": null, "maintainer_email": null, "name": "freezegun-vinta", "package_url": "https://pypi.org/project/freezegun-vinta/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/freezegun-vinta/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/spulec/freezegun" }, "release_url": "https://pypi.org/project/freezegun-vinta/0.3.7.1/", "requires_dist": null, "requires_python": null, "summary": "Let your Python tests travel through time", "version": "0.3.7.1" }, "last_serial": 2440656, "releases": { "0.3.7.1": [ { "comment_text": "", "digests": { "md5": "bd75583092783b5770627e4406824f02", "sha256": "b013ebb81f2fd1ccd14025ed7dbaddaa60d5c59ab71298b6a4282124a2591325" }, "downloads": -1, "filename": "freezegun-vinta-0.3.7.1.tar.gz", "has_sig": false, "md5_digest": "bd75583092783b5770627e4406824f02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16297, "upload_time": "2016-11-03T18:13:15", "url": "https://files.pythonhosted.org/packages/8b/63/d9ff05568015b626dcd93c23aea8a127b3716260f9f58a1d2f4df211ade9/freezegun-vinta-0.3.7.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bd75583092783b5770627e4406824f02", "sha256": "b013ebb81f2fd1ccd14025ed7dbaddaa60d5c59ab71298b6a4282124a2591325" }, "downloads": -1, "filename": "freezegun-vinta-0.3.7.1.tar.gz", "has_sig": false, "md5_digest": "bd75583092783b5770627e4406824f02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16297, "upload_time": "2016-11-03T18:13:15", "url": "https://files.pythonhosted.org/packages/8b/63/d9ff05568015b626dcd93c23aea8a127b3716260f9f58a1d2f4df211ade9/freezegun-vinta-0.3.7.1.tar.gz" } ] }