Skip to content

Commit

Permalink
Refactor + allow to extend default ignore list
Browse files Browse the repository at this point in the history
  • Loading branch information
lukaszb committed Oct 7, 2020
1 parent 456b1a8 commit 1d8326f
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 12 deletions.
11 changes: 9 additions & 2 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,14 @@ It's possible to set your own default ignore list:
import freezegun
freezegun.configure(default_ignore=['threading', 'tensorflow'])
freezegun.configure(default_ignore_list=['threading', 'tensorflow'])
Please note this will override default ignore list.
Please note this will override default ignore list. If you want to extend existing defaults
please use:

.. code-block:: python
import freezegun
freezegun.configure(extend_ignore_list=['tensorflow'])
4 changes: 2 additions & 2 deletions freezegun/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -810,8 +810,8 @@ def freeze_time(time_to_freeze=None, tz_offset=0, ignore=None, tick=False, as_ar
if ignore is None:
ignore = []
ignore = ignore[:]
if config.settings.default_ignore:
ignore.extend(config.settings.default_ignore)
if config.settings.default_ignore_list:
ignore.extend(config.settings.default_ignore_list)

return _freeze_time(
time_to_freeze_str=time_to_freeze,
Expand Down
24 changes: 19 additions & 5 deletions freezegun/config.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@


DEFAULT_IGNORE = [
DEFAULT_IGNORE_LIST = [
'nose.plugins',
'six.moves',
'django.utils.six.moves',
Expand All @@ -15,12 +15,26 @@


class Settings:
def __init__(self, default_ignore=None):
self.default_ignore = default_ignore or DEFAULT_IGNORE[:]
def __init__(self, default_ignore_list=None):
self.default_ignore_list = default_ignore_list or DEFAULT_IGNORE_LIST[:]


settings = Settings()


def configure(default_ignore=None):
settings.default_ignore = default_ignore
class ConfigurationError(Exception):
pass


def configure(default_ignore_list=None, extend_ignore_list=None):
if default_ignore_list is not None and extend_ignore_list is not None:
raise ConfigurationError("Either default_ignore_list or extend_ignore_list might be given, not both")
if default_ignore_list:
settings.default_ignore_list = default_ignore_list
if extend_ignore_list:
settings.default_ignore_list = [*settings.default_ignore_list, *extend_ignore_list]


def reset_config():
global settings
settings = Settings()
42 changes: 39 additions & 3 deletions tests/test_configure.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,56 @@
from unittest import mock
import freezegun
import freezegun.config


def setup_function():
freezegun.config.reset_config()


def teardown_function():
freezegun.configure(default_ignore=None)
freezegun.config.reset_config()


def test_default_ignore_list_is_overridden():
freezegun.configure(default_ignore_list=['threading', 'tensorflow'])

with mock.patch("freezegun.api._freeze_time.__init__", return_value=None) as _freeze_time_init_mock:

freezegun.freeze_time("2020-10-06")

expected_ignore_list = [
'threading',
'tensorflow',
]

_freeze_time_init_mock.assert_called_once_with(
time_to_freeze_str="2020-10-06",
tz_offset=0,
ignore=expected_ignore_list,
tick=False,
as_arg=False,
as_kwarg='',
auto_tick_seconds=0,
)

def test_default_ignore_is_overridden():
freezegun.configure(default_ignore=['threading', 'tensorflow'])
def test_extend_default_ignore_list():
freezegun.configure(extend_ignore_list=['tensorflow'])

with mock.patch("freezegun.api._freeze_time.__init__", return_value=None) as _freeze_time_init_mock:

freezegun.freeze_time("2020-10-06")

expected_ignore_list = [
'nose.plugins',
'six.moves',
'django.utils.six.moves',
'google.gax',
'threading',
'Queue',
'selenium',
'_pytest.terminal.',
'_pytest.runner.',
'gi',
'tensorflow',
]

Expand Down

0 comments on commit 1d8326f

Please sign in to comment.