diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 5320a9e..518e990 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -11,17 +11,17 @@ repos:
       - id: black
         args: ["--target-version", "py36"]
 
+  - repo: https://github.com/PyCQA/isort
+    rev: 5.6.4
+    hooks:
+      - id: isort
+
   - repo: https://gitlab.com/pycqa/flake8
     rev: 3.8.4
     hooks:
       - id: flake8
         additional_dependencies: [flake8-2020, flake8-implicit-str-concat]
 
-  - repo: https://github.com/timothycrosley/isort
-    rev: 5.6.4
-    hooks:
-      - id: isort
-
   - repo: https://github.com/pre-commit/pygrep-hooks
     rev: v1.7.0
     hooks:
@@ -33,6 +33,7 @@ repos:
       - id: check-merge-conflict
       - id: check-toml
       - id: check-yaml
+      - id: end-of-file-fixer
 
   - repo: https://github.com/PyCQA/pydocstyle
     rev: 5.1.1
@@ -41,6 +42,11 @@ repos:
         args: ["--convention", "google"]
         files: "src/"
 
+  - repo: https://github.com/tox-dev/tox-ini-fmt
+    rev: 0.5.0
+    hooks:
+      - id: tox-ini-fmt
+
   - repo: https://github.com/asottile/setup-cfg-fmt
     rev: v1.15.1
     hooks:
diff --git a/setup.cfg b/setup.cfg
index bc71a94..e0335c4 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -56,12 +56,7 @@ max_line_length = 88
 convention = google
 
 [tool:isort]
-known_third_party = freezegun,humanize,pkg_resources,pytest,setuptools
-force_grid_wrap = 0
-include_trailing_comma = True
-line_length = 88
-multi_line_output = 3
-use_parentheses = True
+profile = black
 
 [tool:pytest]
 addopts = --color=yes
diff --git a/src/humanize/__init__.py b/src/humanize/__init__.py
index 44d7c1d..96b2655 100644
--- a/src/humanize/__init__.py
+++ b/src/humanize/__init__.py
@@ -1,7 +1,8 @@
 """Main package for humanize."""
 import pkg_resources
+
 from humanize.filesize import naturalsize
-from humanize.i18n import activate, deactivate
+from humanize.i18n import activate, deactivate, thousands_separator
 from humanize.number import apnumber, fractional, intcomma, intword, ordinal, scientific
 from humanize.time import (
     naturaldate,
@@ -30,5 +31,6 @@ __all__ = [
     "ordinal",
     "precisedelta",
     "scientific",
+    "thousands_separator",
     "VERSION",
 ]
diff --git a/src/humanize/i18n.py b/src/humanize/i18n.py
index 95e7be9..d2625b6 100644
--- a/src/humanize/i18n.py
+++ b/src/humanize/i18n.py
@@ -3,12 +3,18 @@ import gettext as gettext_module
 import os.path
 from threading import local
 
-__all__ = ["activate", "deactivate", "gettext", "ngettext"]
+__all__ = ["activate", "deactivate", "gettext", "ngettext", "thousands_separator"]
 
 _TRANSLATIONS = {None: gettext_module.NullTranslations()}
 _CURRENT = local()
 
 
+# Mapping of locale to thousands separator
+_THOUSANDS_SEPARATOR = {
+    "fr_FR": " ",
+}
+
+
 def _get_default_locale_path():
     try:
         if __file__ is None:
@@ -129,3 +135,16 @@ def gettext_noop(message):
         str: Original text, unchanged.
     """
     return message
+
+
+def thousands_separator() -> str:
+    """Return the thousands separator for a locale, default to comma.
+
+    Returns:
+         str: Thousands separator.
+    """
+    try:
+        sep = _THOUSANDS_SEPARATOR[_CURRENT.locale]
+    except (AttributeError, KeyError):
+        sep = ","
+    return sep
diff --git a/src/humanize/number.py b/src/humanize/number.py
index 0fef81f..f425395 100644
--- a/src/humanize/number.py
+++ b/src/humanize/number.py
@@ -8,6 +8,7 @@ from fractions import Fraction
 from .i18n import gettext as _
 from .i18n import gettext_noop as N_
 from .i18n import pgettext as P_
+from .i18n import thousands_separator
 
 
 def ordinal(value):
@@ -97,9 +98,10 @@ def intcomma(value, ndigits=None):
     Returns:
         str: string containing commas every three digits.
     """
+    sep = thousands_separator()
     try:
         if isinstance(value, str):
-            float(value.replace(",", ""))
+            float(value.replace(sep, ""))
         else:
             float(value)
     except (TypeError, ValueError):
@@ -110,7 +112,7 @@ def intcomma(value, ndigits=None):
     else:
         orig = str(value)
 
-    new = re.sub(r"^(-?\d+)(\d{3})", r"\g<1>,\g<2>", orig)
+    new = re.sub(r"^(-?\d+)(\d{3})", fr"\g<1>{sep}\g<2>", orig)
     if orig == new:
         return new
     else:
diff --git a/tox.ini b/tox.ini
index 294b122..b961099 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,6 +1,6 @@
 [tox]
 envlist =
-    py{36, 37, 38, 39, py3}
+    py{py3, 39, 38, 37, 36}
 
 [testenv]
 extras =
@@ -9,14 +9,19 @@ commands =
     {envpython} -m pytest --cov humanize --cov tests --cov-report xml {posargs}
 
 [testenv:docs]
-deps = -r docs/requirements.txt
-commands = mkdocs build
+deps =
+    -rdocs/requirements.txt
+commands =
+    mkdocs build
 
 [testenv:lint]
-deps = pre-commit
-commands = pre-commit run --all-files --show-diff-on-failure
+passenv =
+    PRE_COMMIT_COLOR
 skip_install = true
-passenv = PRE_COMMIT_COLOR
+deps =
+    pre-commit
+commands =
+    pre-commit run --all-files --show-diff-on-failure
 
 [pytest]
-addopts = --doctest-modules
\ No newline at end of file
+addopts = --doctest-modules

diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 5064efd..431d3af 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -46,21 +46,10 @@ jobs:
           python -m pip install --upgrade tox
 
       - name: Tox tests
-        if: matrix.python-version != 'pypy3'
         shell: bash
         run: |
           tox -e py
 
-        # Temporarily test PyPy3 without tox:
-        # https://foss.heptapod.net/pypy/pypy/-/issues/3331
-        # https://github.com/tox-dev/tox/issues/1704
-      - name: Non-tox tests (PyPy3)
-        if: matrix.python-version == 'pypy3'
-        shell: bash
-        run: |
-          python -m pip install ".[tests]"
-          python -m pytest --cov humanize --cov tests --cov-report xml
-
       - name: Upload coverage
         uses: codecov/codecov-action@v1
         with:
diff --git a/tests/test_filesize.py b/tests/test_filesize.py
index 871c61a..a629b93 100644
--- a/tests/test_filesize.py
+++ b/tests/test_filesize.py
@@ -2,9 +2,10 @@
 
 """Tests for filesize humanizing."""
 
-import humanize
 import pytest
 
+import humanize
+
 
 @pytest.mark.parametrize(
     "test_args, expected",
diff --git a/tests/test_i18n.py b/tests/test_i18n.py
index 385be25..d778583 100644
--- a/tests/test_i18n.py
+++ b/tests/test_i18n.py
@@ -1,9 +1,10 @@
 import datetime as dt
 import importlib
 
-import humanize
 import pytest
 
+import humanize
+
 
 def test_i18n():
     three_seconds = dt.timedelta(seconds=3)
@@ -26,6 +27,20 @@ def test_i18n():
         assert humanize.precisedelta(one_min_three_seconds) == "1 minute and 7 seconds"
 
 
+def test_intcomma():
+    number = 10_000_000
+
+    assert humanize.intcomma(number) == "10,000,000"
+
+    try:
+        humanize.i18n.activate("fr_FR")
+        assert humanize.intcomma(number) == "10 000 000"
+
+    finally:
+        humanize.i18n.deactivate()
+        assert humanize.intcomma(number) == "10,000,000"
+
+
 def test_default_locale_path_defined__file__():
     i18n = importlib.import_module("humanize.i18n")
     assert i18n._get_default_locale_path() is not None
diff --git a/tests/test_number.py b/tests/test_number.py
index 347217d..25f1d72 100644
--- a/tests/test_number.py
+++ b/tests/test_number.py
@@ -2,8 +2,9 @@
 
 """Number tests."""
 
-import humanize
 import pytest
+
+import humanize
 from humanize import number
 
 
diff --git a/tests/test_time.py b/tests/test_time.py
index f0311ce..19e0ce6 100644
--- a/tests/test_time.py
+++ b/tests/test_time.py
@@ -4,9 +4,10 @@
 
 import datetime as dt
 
-import humanize
 import pytest
 from freezegun import freeze_time
+
+import humanize
 from humanize import time
 
 ONE_DAY_DELTA = dt.timedelta(days=1)

intcomma doesn't support internationalization
### What did you do?

I tried to use `intcomma` with the `fr_FR` locale

### What did you expect to happen?

A space separated decimal like `10 000 000`

### What actually happened?

A comma separated decimal like `10,000,000`

### What versions are you using?

* OS: Ubuntu
* Python: 3.6
* Humanize: 3.1

```python
number = 10000000
humanize.i18n.activate("fr_FR")
humanize.intcomma(number)
```

Django `intcomma` does support internationalization FYI: https://github.com/django/django/blob/master/django/contrib/humanize/templatetags/humanize.py#L60

tests/test_i18n.py::test_intcomma
tests/test_filesize.py::test_naturalsize[test_args0-300 tests/test_filesize.py::test_naturalsize[test_args1-3.0 tests/test_filesize.py::test_naturalsize[test_args2-3.0 tests/test_filesize.py::test_naturalsize[test_args3-3.0 tests/test_filesize.py::test_naturalsize[test_args4-3.0 tests/test_filesize.py::test_naturalsize[test_args5-300 tests/test_filesize.py::test_naturalsize[test_args6-2.9 tests/test_filesize.py::test_naturalsize[test_args7-2.9 tests/test_filesize.py::test_naturalsize[test_args8-300B] tests/test_filesize.py::test_naturalsize[test_args9-2.9K] tests/test_filesize.py::test_naturalsize[test_args10-2.9M] tests/test_filesize.py::test_naturalsize[test_args11-1.0K] tests/test_filesize.py::test_naturalsize[test_args12-2481.5Y] tests/test_filesize.py::test_naturalsize[test_args13-2481.5 tests/test_filesize.py::test_naturalsize[test_args14-3000.0 tests/test_filesize.py::test_naturalsize[test_args15-1 tests/test_filesize.py::test_naturalsize[test_args16-3.14 tests/test_filesize.py::test_naturalsize[test_args17-2.930K] tests/test_filesize.py::test_naturalsize[test_args18-3G] tests/test_filesize.py::test_naturalsize[test_args19-2481.542 tests/test_i18n.py::test_i18n tests/test_i18n.py::test_default_locale_path_defined__file__ tests/test_i18n.py::test_default_locale_path_null__file__ tests/test_i18n.py::test_default_locale_path_undefined__file__ tests/test_i18n.py::TestActivate::test_default_locale_path_null__file__ tests/test_i18n.py::TestActivate::test_default_locale_path_undefined__file__ tests/test_number.py::test_ordinal[1-1st] tests/test_number.py::test_ordinal[2-2nd] tests/test_number.py::test_ordinal[3-3rd] tests/test_number.py::test_ordinal[4-4th] tests/test_number.py::test_ordinal[11-11th] tests/test_number.py::test_ordinal[12-12th] tests/test_number.py::test_ordinal[13-13th] tests/test_number.py::test_ordinal[101-101st] tests/test_number.py::test_ordinal[102-102nd] tests/test_number.py::test_ordinal[103-103rd] tests/test_number.py::test_ordinal[111-111th] tests/test_number.py::test_ordinal[something tests/test_number.py::test_ordinal[None-None] tests/test_number.py::test_intcomma[test_args0-100] tests/test_number.py::test_intcomma[test_args1-1,000] tests/test_number.py::test_intcomma[test_args2-10,123] tests/test_number.py::test_intcomma[test_args3-10,311] tests/test_number.py::test_intcomma[test_args4-1,000,000] tests/test_number.py::test_intcomma[test_args5-1,234,567.25] tests/test_number.py::test_intcomma[test_args6-100] tests/test_number.py::test_intcomma[test_args7-1,000] tests/test_number.py::test_intcomma[test_args8-10,123] tests/test_number.py::test_intcomma[test_args9-10,311] tests/test_number.py::test_intcomma[test_args10-1,000,000] tests/test_number.py::test_intcomma[test_args11-1,234,567.1234567] tests/test_number.py::test_intcomma[test_args12-None] tests/test_number.py::test_intcomma[test_args13-14,308.4] tests/test_number.py::test_intcomma[test_args14-14,308.4] tests/test_number.py::test_intcomma[test_args15-14,308.4] tests/test_number.py::test_intcomma[test_args16-14,308.40] tests/test_number.py::test_intcomma[test_args17-14,308.400] tests/test_number.py::test_intcomma[test_args18-1,234.5454545] tests/test_number.py::test_intcomma[test_args19-1,234.5454545] tests/test_number.py::test_intcomma[test_args20-1,234.5] tests/test_number.py::test_intcomma[test_args21-1,234.55] tests/test_number.py::test_intcomma[test_args22-1,234.545] tests/test_number.py::test_intcomma[test_args23-1,234.5454545000] tests/test_number.py::test_intword_powers tests/test_number.py::test_intword[test_args0-100] tests/test_number.py::test_intword[test_args1-1.0 tests/test_number.py::test_intword[test_args2-1.2 tests/test_number.py::test_intword[test_args3-1.3 tests/test_number.py::test_intword[test_args4-1.0 tests/test_number.py::test_intword[test_args5-1.0 tests/test_number.py::test_intword[test_args6-2.0 tests/test_number.py::test_intword[test_args7-1.0 tests/test_number.py::test_intword[test_args8-1.0 tests/test_number.py::test_intword[test_args9-6.0 tests/test_number.py::test_intword[test_args10-1.0 tests/test_number.py::test_intword[test_args11-1.0 tests/test_number.py::test_intword[test_args12-1.3 tests/test_number.py::test_intword[test_args13-3.5 tests/test_number.py::test_intword[test_args14-8.1 tests/test_number.py::test_intword[test_args15-None] tests/test_number.py::test_intword[test_args16-1.23 tests/test_number.py::test_intword[test_args17-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000] tests/test_number.py::test_apnumber[0-zero] tests/test_number.py::test_apnumber[1-one] tests/test_number.py::test_apnumber[2-two] tests/test_number.py::test_apnumber[4-four] tests/test_number.py::test_apnumber[5-five] tests/test_number.py::test_apnumber[9-nine] tests/test_number.py::test_apnumber[10-10] tests/test_number.py::test_apnumber[7-seven] tests/test_number.py::test_apnumber[None-None] tests/test_number.py::test_fractional[1-1] tests/test_number.py::test_fractional[2.0-2] tests/test_number.py::test_fractional[1.3333333333333333-1 tests/test_number.py::test_fractional[0.8333333333333334-5/6] tests/test_number.py::test_fractional[7-7] tests/test_number.py::test_fractional[8.9-8 tests/test_number.py::test_fractional[ten-ten] tests/test_number.py::test_fractional[None-None] tests/test_number.py::test_fractional[0.3333333333333333-1/3] tests/test_number.py::test_fractional[1.5-1 tests/test_number.py::test_fractional[0.3-3/10] tests/test_number.py::test_fractional[0.333-333/1000] tests/test_number.py::test_scientific[test_args0-1.00 tests/test_number.py::test_scientific[test_args1-1.00 tests/test_number.py::test_scientific[test_args2-5.50 tests/test_number.py::test_scientific[test_args3-5.78 tests/test_number.py::test_scientific[test_args4-1.00 tests/test_number.py::test_scientific[test_args5-9.90 tests/test_number.py::test_scientific[test_args6-3.00 tests/test_number.py::test_scientific[test_args7-foo] tests/test_number.py::test_scientific[test_args8-None] tests/test_number.py::test_scientific[test_args9-1.0 tests/test_number.py::test_scientific[test_args10-3.0 tests/test_number.py::test_scientific[test_args11-1 tests/test_number.py::test_scientific[test_args12-3 tests/test_time.py::test_date_and_delta tests/test_time.py::test_naturaldelta_nomonths[test_input0-7 tests/test_time.py::test_naturaldelta_nomonths[test_input1-31 tests/test_time.py::test_naturaldelta_nomonths[test_input2-230 tests/test_time.py::test_naturaldelta_nomonths[test_input3-1 tests/test_time.py::test_naturaldelta[0-a tests/test_time.py::test_naturaldelta[1-a tests/test_time.py::test_naturaldelta[30-30 tests/test_time.py::test_naturaldelta[test_input3-a tests/test_time.py::test_naturaldelta[test_input4-2 tests/test_time.py::test_naturaldelta[test_input5-an tests/test_time.py::test_naturaldelta[test_input6-23 tests/test_time.py::test_naturaldelta[test_input7-a tests/test_time.py::test_naturaldelta[test_input8-1 tests/test_time.py::test_naturaldelta[test_input9-2 tests/test_time.py::test_naturaldelta[test_input10-a tests/test_time.py::test_naturaldelta[test_input11-30 tests/test_time.py::test_naturaldelta[test_input12-a tests/test_time.py::test_naturaldelta[test_input13-2 tests/test_time.py::test_naturaldelta[test_input14-an tests/test_time.py::test_naturaldelta[test_input15-23 tests/test_time.py::test_naturaldelta[test_input16-a tests/test_time.py::test_naturaldelta[test_input17-1 tests/test_time.py::test_naturaldelta[test_input18-2 tests/test_time.py::test_naturaldelta[test_input19-27 tests/test_time.py::test_naturaldelta[test_input20-1 tests/test_time.py::test_naturaldelta[test_input22-2 tests/test_time.py::test_naturaldelta[test_input23-1 tests/test_time.py::test_naturaldelta[test_input24-a tests/test_time.py::test_naturaldelta[test_input25-2 tests/test_time.py::test_naturaldelta[test_input26-9 tests/test_time.py::test_naturaldelta[test_input27-a tests/test_time.py::test_naturaldelta[NaN-NaN] tests/test_time.py::test_naturaltime[test_input0-now] tests/test_time.py::test_naturaltime[test_input1-a tests/test_time.py::test_naturaltime[test_input2-30 tests/test_time.py::test_naturaltime[test_input3-a tests/test_time.py::test_naturaltime[test_input4-2 tests/test_time.py::test_naturaltime[test_input5-an tests/test_time.py::test_naturaltime[test_input6-23 tests/test_time.py::test_naturaltime[test_input7-a tests/test_time.py::test_naturaltime[test_input8-1 tests/test_time.py::test_naturaltime[test_input9-2 tests/test_time.py::test_naturaltime[test_input10-a tests/test_time.py::test_naturaltime[test_input11-30 tests/test_time.py::test_naturaltime[test_input12-a tests/test_time.py::test_naturaltime[test_input13-2 tests/test_time.py::test_naturaltime[test_input14-an tests/test_time.py::test_naturaltime[test_input15-23 tests/test_time.py::test_naturaltime[test_input16-a tests/test_time.py::test_naturaltime[test_input17-1 tests/test_time.py::test_naturaltime[test_input18-2 tests/test_time.py::test_naturaltime[test_input19-27 tests/test_time.py::test_naturaltime[test_input20-1 tests/test_time.py::test_naturaltime[30-30 tests/test_time.py::test_naturaltime[test_input22-2 tests/test_time.py::test_naturaltime[test_input23-1 tests/test_time.py::test_naturaltime[NaN-NaN] tests/test_time.py::test_naturaltime_nomonths[test_input0-now] tests/test_time.py::test_naturaltime_nomonths[test_input1-a tests/test_time.py::test_naturaltime_nomonths[test_input2-30 tests/test_time.py::test_naturaltime_nomonths[test_input3-a tests/test_time.py::test_naturaltime_nomonths[test_input4-2 tests/test_time.py::test_naturaltime_nomonths[test_input5-an tests/test_time.py::test_naturaltime_nomonths[test_input6-23 tests/test_time.py::test_naturaltime_nomonths[test_input7-a tests/test_time.py::test_naturaltime_nomonths[test_input8-17 tests/test_time.py::test_naturaltime_nomonths[test_input9-47 tests/test_time.py::test_naturaltime_nomonths[test_input10-1 tests/test_time.py::test_naturaltime_nomonths[test_input11-2 tests/test_time.py::test_naturaltime_nomonths[test_input12-a tests/test_time.py::test_naturaltime_nomonths[test_input13-30 tests/test_time.py::test_naturaltime_nomonths[test_input14-a tests/test_time.py::test_naturaltime_nomonths[test_input15-2 tests/test_time.py::test_naturaltime_nomonths[test_input16-an tests/test_time.py::test_naturaltime_nomonths[test_input17-23 tests/test_time.py::test_naturaltime_nomonths[test_input18-a tests/test_time.py::test_naturaltime_nomonths[test_input19-1 tests/test_time.py::test_naturaltime_nomonths[test_input20-2 tests/test_time.py::test_naturaltime_nomonths[test_input21-27 tests/test_time.py::test_naturaltime_nomonths[test_input22-1 tests/test_time.py::test_naturaltime_nomonths[30-30 tests/test_time.py::test_naturaltime_nomonths[test_input24-2 tests/test_time.py::test_naturaltime_nomonths[test_input25-1 tests/test_time.py::test_naturaltime_nomonths[NaN-NaN] tests/test_time.py::test_naturalday[test_args0-today] tests/test_time.py::test_naturalday[test_args1-tomorrow] tests/test_time.py::test_naturalday[test_args2-yesterday] tests/test_time.py::test_naturalday[test_args3-Mar tests/test_time.py::test_naturalday[test_args4-02/26/1984] tests/test_time.py::test_naturalday[test_args5-1982.06.27] tests/test_time.py::test_naturalday[test_args6-None] tests/test_time.py::test_naturalday[test_args7-Not tests/test_time.py::test_naturalday[test_args8-expected8] tests/test_time.py::test_naturalday[test_args9-expected9] tests/test_time.py::test_naturaldate[test_input0-today] tests/test_time.py::test_naturaldate[test_input1-tomorrow] tests/test_time.py::test_naturaldate[test_input2-yesterday] tests/test_time.py::test_naturaldate[test_input3-Mar tests/test_time.py::test_naturaldate[test_input4-Jun tests/test_time.py::test_naturaldate[None-None] tests/test_time.py::test_naturaldate[Not tests/test_time.py::test_naturaldate[test_input7-expected7] tests/test_time.py::test_naturaldate[test_input8-expected8] tests/test_time.py::test_naturaldate[test_input9-Feb tests/test_time.py::test_naturaldate[test_input10-Mar tests/test_time.py::test_naturaldate[test_input11-Apr tests/test_time.py::test_naturaldate[test_input12-May tests/test_time.py::test_naturaldate[test_input13-Jun tests/test_time.py::test_naturaldate[test_input14-Jul tests/test_time.py::test_naturaldate[test_input15-Aug tests/test_time.py::test_naturaldate[test_input16-Sep tests/test_time.py::test_naturaldate[test_input17-Oct tests/test_time.py::test_naturaldate[test_input18-Nov tests/test_time.py::test_naturaldate[test_input19-Dec tests/test_time.py::test_naturaldate[test_input20-Jan tests/test_time.py::test_naturaldate[test_input21-today] tests/test_time.py::test_naturaldate[test_input22-Mar tests/test_time.py::test_naturaldate[test_input23-Apr tests/test_time.py::test_naturaldate[test_input24-May tests/test_time.py::test_naturaldate[test_input25-Jun tests/test_time.py::test_naturaldate[test_input26-Jul tests/test_time.py::test_naturaldate[test_input27-Aug tests/test_time.py::test_naturaldate[test_input28-Sep tests/test_time.py::test_naturaldate[test_input29-Oct tests/test_time.py::test_naturaldate[test_input30-Nov tests/test_time.py::test_naturaldate[test_input31-Dec tests/test_time.py::test_naturaldate[test_input32-Jan tests/test_time.py::test_naturaldate[test_input33-Feb tests/test_time.py::test_naturaldelta_minimum_unit_default[1e-06-a tests/test_time.py::test_naturaldelta_minimum_unit_default[4e-06-a tests/test_time.py::test_naturaldelta_minimum_unit_default[0.001-a tests/test_time.py::test_naturaldelta_minimum_unit_default[0.004-a tests/test_time.py::test_naturaldelta_minimum_unit_default[2-2 tests/test_time.py::test_naturaldelta_minimum_unit_default[4-4 tests/test_time.py::test_naturaldelta_minimum_unit_default[3600.004-an tests/test_time.py::test_naturaldelta_minimum_unit_default[86400.004-a tests/test_time.py::test_naturaldelta_minimum_unit_default[31557600.000004-a tests/test_time.py::test_naturaldelta_minimum_unit_explicit[seconds-1e-06-a tests/test_time.py::test_naturaldelta_minimum_unit_explicit[seconds-4e-06-a tests/test_time.py::test_naturaldelta_minimum_unit_explicit[seconds-0.001-a tests/test_time.py::test_naturaldelta_minimum_unit_explicit[seconds-0.004-a tests/test_time.py::test_naturaldelta_minimum_unit_explicit[seconds-0.101943-a tests/test_time.py::test_naturaldelta_minimum_unit_explicit[seconds-1.337-a tests/test_time.py::test_naturaldelta_minimum_unit_explicit[seconds-2-2 tests/test_time.py::test_naturaldelta_minimum_unit_explicit[seconds-4-4 tests/test_time.py::test_naturaldelta_minimum_unit_explicit[seconds-3600.004-an tests/test_time.py::test_naturaldelta_minimum_unit_explicit[seconds-86400.004-a tests/test_time.py::test_naturaldelta_minimum_unit_explicit[seconds-31557600.000004-a tests/test_time.py::test_naturaldelta_minimum_unit_explicit[milliseconds-4e-06-0 tests/test_time.py::test_naturaldelta_minimum_unit_explicit[milliseconds-0.001-1 tests/test_time.py::test_naturaldelta_minimum_unit_explicit[milliseconds-0.004-4 tests/test_time.py::test_naturaldelta_minimum_unit_explicit[milliseconds-0.101943-101 tests/test_time.py::test_naturaldelta_minimum_unit_explicit[milliseconds-1.337-a tests/test_time.py::test_naturaldelta_minimum_unit_explicit[milliseconds-2-2 tests/test_time.py::test_naturaldelta_minimum_unit_explicit[milliseconds-4-4 tests/test_time.py::test_naturaldelta_minimum_unit_explicit[milliseconds-3600.004-an tests/test_time.py::test_naturaldelta_minimum_unit_explicit[milliseconds-31557600.000004-a tests/test_time.py::test_naturaldelta_minimum_unit_explicit[microseconds-1e-06-1 tests/test_time.py::test_naturaldelta_minimum_unit_explicit[microseconds-4e-06-4 tests/test_time.py::test_naturaldelta_minimum_unit_explicit[microseconds-0.004-4 tests/test_time.py::test_naturaldelta_minimum_unit_explicit[microseconds-0.101943-101 tests/test_time.py::test_naturaldelta_minimum_unit_explicit[microseconds-1.337-a tests/test_time.py::test_naturaldelta_minimum_unit_explicit[microseconds-2-2 tests/test_time.py::test_naturaldelta_minimum_unit_explicit[microseconds-4-4 tests/test_time.py::test_naturaldelta_minimum_unit_explicit[microseconds-3600.004-an tests/test_time.py::test_naturaldelta_minimum_unit_explicit[microseconds-86400.004-a tests/test_time.py::test_naturaldelta_minimum_unit_explicit[microseconds-31557600.000004-a tests/test_time.py::test_naturaldelta_when_explicit[test_input0-when0-a tests/test_time.py::test_naturaldelta_when_explicit[test_input1-when1-a tests/test_time.py::test_naturaldelta_when_missing_tzinfo[value0-None] tests/test_time.py::test_naturaldelta_when_missing_tzinfo[value1-when1] tests/test_time.py::test_naturaldelta_when_missing_tzinfo[value2-None] tests/test_time.py::test_naturaldelta_when_missing_tzinfo[value3-when3] tests/test_time.py::test_naturaltime_minimum_unit_default[1e-06-now] tests/test_time.py::test_naturaltime_minimum_unit_default[4e-06-now] tests/test_time.py::test_naturaltime_minimum_unit_default[0.001-now] tests/test_time.py::test_naturaltime_minimum_unit_default[0.004-now] tests/test_time.py::test_naturaltime_minimum_unit_default[2-2 tests/test_time.py::test_naturaltime_minimum_unit_default[4-4 tests/test_time.py::test_naturaltime_minimum_unit_default[3600.004-an tests/test_time.py::test_naturaltime_minimum_unit_default[86400.004-a tests/test_time.py::test_naturaltime_minimum_unit_default[31557600.000004-a tests/test_time.py::test_naturaltime_minimum_unit_explicit[seconds-1e-06-now] tests/test_time.py::test_naturaltime_minimum_unit_explicit[seconds-4e-06-now] tests/test_time.py::test_naturaltime_minimum_unit_explicit[seconds-0.001-now] tests/test_time.py::test_naturaltime_minimum_unit_explicit[seconds-0.004-now] tests/test_time.py::test_naturaltime_minimum_unit_explicit[seconds-0.101943-now] tests/test_time.py::test_naturaltime_minimum_unit_explicit[seconds-1.337-a tests/test_time.py::test_naturaltime_minimum_unit_explicit[seconds-2-2 tests/test_time.py::test_naturaltime_minimum_unit_explicit[seconds-4-4 tests/test_time.py::test_naturaltime_minimum_unit_explicit[seconds-3600.004-an tests/test_time.py::test_naturaltime_minimum_unit_explicit[seconds-86400.004-a tests/test_time.py::test_naturaltime_minimum_unit_explicit[seconds-31557600.000004-a tests/test_time.py::test_naturaltime_minimum_unit_explicit[milliseconds-4e-06-0 tests/test_time.py::test_naturaltime_minimum_unit_explicit[milliseconds-0.001-1 tests/test_time.py::test_naturaltime_minimum_unit_explicit[milliseconds-0.004-4 tests/test_time.py::test_naturaltime_minimum_unit_explicit[milliseconds-0.101943-101 tests/test_time.py::test_naturaltime_minimum_unit_explicit[milliseconds-1.337-a tests/test_time.py::test_naturaltime_minimum_unit_explicit[milliseconds-2-2 tests/test_time.py::test_naturaltime_minimum_unit_explicit[milliseconds-4-4 tests/test_time.py::test_naturaltime_minimum_unit_explicit[milliseconds-3600.004-an tests/test_time.py::test_naturaltime_minimum_unit_explicit[milliseconds-31557600.000004-a tests/test_time.py::test_naturaltime_minimum_unit_explicit[microseconds-1e-06-1 tests/test_time.py::test_naturaltime_minimum_unit_explicit[microseconds-4e-06-4 tests/test_time.py::test_naturaltime_minimum_unit_explicit[microseconds-0.004-4 tests/test_time.py::test_naturaltime_minimum_unit_explicit[microseconds-0.101943-101 tests/test_time.py::test_naturaltime_minimum_unit_explicit[microseconds-1.337-a tests/test_time.py::test_naturaltime_minimum_unit_explicit[microseconds-2-2 tests/test_time.py::test_naturaltime_minimum_unit_explicit[microseconds-4-4 tests/test_time.py::test_naturaltime_minimum_unit_explicit[microseconds-3600.004-an tests/test_time.py::test_naturaltime_minimum_unit_explicit[microseconds-86400.004-a tests/test_time.py::test_naturaltime_minimum_unit_explicit[microseconds-31557600.000004-a tests/test_time.py::test_precisedelta_one_unit_enough[val0-microseconds-1 tests/test_time.py::test_precisedelta_one_unit_enough[val1-microseconds-2 tests/test_time.py::test_precisedelta_one_unit_enough[val2-microseconds-1 tests/test_time.py::test_precisedelta_one_unit_enough[val3-microseconds-2 tests/test_time.py::test_precisedelta_one_unit_enough[val4-seconds-1 tests/test_time.py::test_precisedelta_one_unit_enough[1-seconds-1 tests/test_time.py::test_precisedelta_one_unit_enough[2-seconds-2 tests/test_time.py::test_precisedelta_one_unit_enough[60-seconds-1 tests/test_time.py::test_precisedelta_one_unit_enough[120-seconds-2 tests/test_time.py::test_precisedelta_one_unit_enough[3600-seconds-1 tests/test_time.py::test_precisedelta_one_unit_enough[7200-seconds-2 tests/test_time.py::test_precisedelta_one_unit_enough[86400-seconds-1 tests/test_time.py::test_precisedelta_one_unit_enough[172800-seconds-2 tests/test_time.py::test_precisedelta_one_unit_enough[31536000-seconds-1 tests/test_time.py::test_precisedelta_one_unit_enough[63072000-seconds-2 tests/test_time.py::test_precisedelta_multiple_units[val0-microseconds-1 tests/test_time.py::test_precisedelta_multiple_units[val1-microseconds-2 tests/test_time.py::test_precisedelta_multiple_units[val2-microseconds-1 tests/test_time.py::test_precisedelta_multiple_units[val3-microseconds-4 tests/test_time.py::test_precisedelta_multiple_units[val4-microseconds-5 tests/test_time.py::test_precisedelta_multiple_units[val5-microseconds-1 tests/test_time.py::test_precisedelta_multiple_units[val6-microseconds-1 tests/test_time.py::test_precisedelta_multiple_units[val7-microseconds-1 tests/test_time.py::test_precisedelta_multiple_units[val8-minutes-0 tests/test_time.py::test_precisedelta_custom_format[val0-milliseconds-%0.4f-1.0010 tests/test_time.py::test_precisedelta_custom_format[val1-milliseconds-%0.4f-2.0020 tests/test_time.py::test_precisedelta_custom_format[val2-milliseconds-%0.2f-2.00 tests/test_time.py::test_precisedelta_custom_format[val3-seconds-%0.2f-1.23 tests/test_time.py::test_precisedelta_custom_format[val4-seconds-%0.2f-4 tests/test_time.py::test_precisedelta_custom_format[val5-seconds-%0.2f-5 tests/test_time.py::test_precisedelta_custom_format[val6-hours-%0.2f-5 tests/test_time.py::test_precisedelta_custom_format[val7-days-%0.2f-5.19 tests/test_time.py::test_precisedelta_custom_format[val8-months-%0.2f-3.93 tests/test_time.py::test_precisedelta_custom_format[val9-years-%0.1f-0.5 tests/test_time.py::test_precisedelta_suppress_units[val0-microseconds-suppress0-1 tests/test_time.py::test_precisedelta_suppress_units[val1-microseconds-suppress1-1200 tests/test_time.py::test_precisedelta_suppress_units[val2-microseconds-suppress2-1.20 tests/test_time.py::test_precisedelta_suppress_units[val3-microseconds-suppress3-1000 tests/test_time.py::test_precisedelta_suppress_units[val4-microseconds-suppress4-1 tests/test_time.py::test_precisedelta_suppress_units[val5-microseconds-suppress5-1.20 tests/test_time.py::test_precisedelta_suppress_units[val6-microseconds-suppress6-4 tests/test_time.py::test_precisedelta_suppress_units[val7-microseconds-suppress7-4 tests/test_time.py::test_precisedelta_suppress_units[val8-microseconds-suppress8-4 tests/test_time.py::test_precisedelta_suppress_units[val9-microseconds-suppress9-240 tests/test_time.py::test_precisedelta_suppress_units[val10-microseconds-suppress10-240.50 tests/test_time.py::test_precisedelta_bogus_call tests/test_time.py::test_time_unit