Skip to content

Commit 36a5634

Browse files
serhii73Gallaecio
andauthored
Fix tests (#1248)
* Fix tests * Fix the TestLocalTZOffset test * Setup tests for minimum deps * Run pre-commit --------- Co-authored-by: Adrián Chaves <[email protected]>
1 parent 47acb88 commit 36a5634

26 files changed

+125
-166
lines changed

.flake8

-7
This file was deleted.

.github/workflows/cifuzz.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
fuzz-seconds: 600
2222
output-sarif: true
2323
- name: Upload Crash
24-
uses: actions/upload-artifact@v3
24+
uses: actions/upload-artifact@v4
2525
if: failure() && steps.build.outcome == 'success'
2626
with:
2727
name: artifacts

.github/workflows/main.yml

+14-39
Original file line numberDiff line numberDiff line change
@@ -14,42 +14,24 @@ jobs:
1414
fail-fast: false
1515
matrix:
1616
include:
17-
- python-version: 3.9
18-
env:
19-
TOXENV: flake8
20-
- python-version: 3.9
21-
env:
22-
TOXENV: py
23-
- python-version: "3.10"
24-
env:
25-
TOXENV: py
17+
- python-version: "3.13"
18+
toxenv: pre-commit
19+
- python-version: "3.9"
20+
toxenv: min
21+
- python-version: "3.9"
22+
toxenv: min-all
23+
- python-version: "3.9"
2624
- python-version: "3.10"
27-
env:
28-
TOXENV: latest
29-
- python-version: "3.11"
30-
env:
31-
TOXENV: py
3225
- python-version: "3.11"
33-
env:
34-
TOXENV: latest
3526
- python-version: "3.12"
36-
env:
37-
TOXENV: py
38-
- python-version: "3.12"
39-
env:
40-
TOXENV: latest
41-
- python-version: "3.13"
42-
env:
43-
TOXENV: py
4427
- python-version: "3.13"
45-
env:
46-
TOXENV: latest
28+
toxenv: all
4729
- python-version: "3.13"
48-
env:
49-
TOXENV: twinecheck
30+
toxenv: scripts
5031
- python-version: "3.12" # Keep in sync with tox.ini
51-
env:
52-
TOXENV: docs
32+
toxenv: docs
33+
- python-version: "3.13"
34+
toxenv: twinecheck
5335
steps:
5436
- uses: actions/checkout@v3
5537
- name: 'Set up Python ${{ matrix.python-version }}'
@@ -63,13 +45,6 @@ jobs:
6345
python -m pip install --upgrade pip
6446
pip install tox
6547
- name: Run tests
66-
run: tox -e ${{ matrix.env.TOXENV }}
48+
run: tox -e ${{ matrix.toxenv || 'py' }}
6749
- name: Upload coverage.xml to codecov
68-
if: ${{ matrix.env.python-version == '3.9' && matrix.env.TOXENV == 'latest' }}
69-
uses: codecov/codecov-action@v3
70-
71-
pre-commit:
72-
runs-on: ubuntu-latest
73-
steps:
74-
- uses: actions/checkout@v3
75-
- uses: pre-commit/[email protected]
50+
uses: codecov/[email protected]

.pre-commit-config.yaml

+5-13
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,7 @@
11
repos:
2-
- repo: https://github.com/PyCQA/flake8
3-
rev: 6.0.0 # 6.0.0 drops Python 3.7 support
2+
- repo: https://github.com/astral-sh/ruff-pre-commit
3+
rev: v0.9.3
44
hooks:
5-
- id: flake8
6-
args: ['--config=.flake8']
7-
- repo: https://github.com/psf/black.git
8-
rev: 23.3.0
9-
hooks:
10-
- id: black
11-
exclude: ^dateparser/data/date_translation_data/
12-
- repo: https://github.com/pycqa/isort
13-
rev: 5.12.0 # 5.12 drops Python 3.7 support
14-
hooks:
15-
- id: isort
5+
- id: ruff
6+
args: [ --fix ]
7+
- id: ruff-format

dateparser/calendars/jalali_parser.py

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import re
22
from collections import OrderedDict
3-
from datetime import datetime
43
from functools import reduce
54

65
from convertdate import persian

dateparser/data/__init__.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
from dateparser.data import date_translation_data
2-
3-
from .languages_info import language_locale_dict, language_order
2+
from .languages_info import language_order, language_locale_dict

dateparser/date.py

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import collections
2-
import sys
32
from collections.abc import Set
43
from datetime import datetime, timedelta
54

dateparser/freshness_date_parser.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def _parse_time(self, date_string, settings):
3131
date_string = re.sub(r"\b(?:ago|in)\b", "", date_string)
3232
try:
3333
return time_parser(date_string)
34-
except:
34+
except Exception:
3535
pass
3636

3737
def get_local_tz(self):

dateparser/parser.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ def _find_best_matching_date(cls, datestring):
182182
dt = strptime(datestring, fmt), cls._get_period(fmt)
183183
if len(str(dt[0].year)) == 4:
184184
return dt
185-
except:
185+
except Exception:
186186
pass
187187
return None
188188

@@ -216,7 +216,7 @@ def parse(cls, datestring, settings):
216216
missing = _get_missing_parts(fmt)
217217
_check_strict_parsing(missing, settings)
218218
return dt
219-
except:
219+
except Exception:
220220
pass
221221
else:
222222
if ambiguous_date:
@@ -332,7 +332,7 @@ def __init__(self, tokens, settings):
332332
token.index(":")
333333
# Is after period? raise ValueError if '.' can't be found:
334334
self.tokens[self.tokens.index((token, 0)) + 1][0].index(".")
335-
except:
335+
except Exception:
336336
microsecond = None
337337

338338
if microsecond:
@@ -342,7 +342,7 @@ def __init__(self, tokens, settings):
342342
meridian = MERIDIAN.search(
343343
self.filtered_tokens[meridian_index][0]
344344
).group()
345-
except:
345+
except Exception:
346346
meridian = None
347347

348348
if any([":" in token, meridian, microsecond]):
@@ -514,9 +514,9 @@ def _correct_for_time_frame(self, dateobj, tz):
514514

515515
# NOTE: If this assert fires, self.now needs to be made offset-aware in a similar
516516
# way that dateobj is temporarily made offset-aware.
517-
assert not (
518-
self.now.tzinfo is None and dateobj.tzinfo is not None
519-
), "`self.now` doesn't have `tzinfo`. Review comment in code for details."
517+
assert not (self.now.tzinfo is None and dateobj.tzinfo is not None), (
518+
"`self.now` doesn't have `tzinfo`. Review comment in code for details."
519+
)
520520

521521
# Store the original dateobj values so that upon subsequent parsing everything is not
522522
# treated as offset-aware if offset awareness is changed.
@@ -686,7 +686,7 @@ def parse_alpha(token, skip_component=None):
686686
(component, getattr(do, component)),
687687
("day", prev_value),
688688
]
689-
except:
689+
except Exception:
690690
pass
691691
else:
692692
raise ValueError("Unable to parse: %s" % token)

docs/conf.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import os
1414
import sys
1515

16+
import dateparser
17+
1618
# Get the project root dir, which is the parent dir of this
1719
cwd = os.getcwd()
1820
project_root = os.path.dirname(cwd)
@@ -22,8 +24,6 @@
2224
# version is used.
2325
sys.path.insert(0, project_root)
2426

25-
import dateparser
26-
2727
# -- General configuration ---------------------------------------------
2828

2929
# Add any Sphinx extension module names here, as strings. They can be

fuzzing/requirements.txt

-1
This file was deleted.

pyproject.toml

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[tool.ruff]
2+
exclude = ["date_translation_data"]
3+
4+
[tool.ruff.lint.per-file-ignores]
5+
"dateparser/data/__init__.py" = ["F401"]
6+
"dateparser/languages/__init__.py" = ["F401"]

setup.cfg

-31
This file was deleted.

setup.py

+7-10
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
r":mod:|:class:|:func:", "", open("HISTORY.rst", encoding="utf-8").read()
1616
)
1717

18-
test_requirements = open("tests/requirements.txt").read().splitlines()
19-
2018
setup(
2119
name="dateparser",
2220
version=__version__,
@@ -31,19 +29,18 @@
3129
packages=find_packages(exclude=("tests", "tests.*")),
3230
include_package_data=True,
3331
install_requires=[
34-
"python-dateutil",
35-
"pytz",
36-
# https://bitbucket.org/mrabarnett/mrab-regex/issues/314/import-error-no-module-named
37-
"regex !=2019.02.19,!=2021.8.27",
38-
"tzlocal",
32+
"python-dateutil>=2.7.0",
33+
"pytz>=2024.2",
34+
"regex>=2015.06.24,!=2019.02.19,!=2021.8.27",
35+
"tzlocal>=0.2",
3936
],
4037
entry_points={
4138
"console_scripts": ["dateparser-download = dateparser_cli.cli:entrance"],
4239
},
4340
extras_require={
44-
"calendars": ["hijridate", "convertdate"],
45-
"fasttext": ["fasttext"],
46-
"langdetect": ["langdetect"],
41+
"calendars": ["convertdate>=2.2.1", "hijridate"],
42+
"fasttext": ["fasttext>=0.9.1", "numpy>=1.19.3,<2"],
43+
"langdetect": ["langdetect>=1.0.0"],
4744
},
4845
license="BSD",
4946
zip_safe=False,

tests/requirements.txt

-4
This file was deleted.

tests/test_clean_api.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ def test_dates_which_match_locales_are_parsed(
119119
languages=["en"],
120120
region="",
121121
date_formats=["%a", "%a", "%a", "%a"],
122-
expected_date=datetime(1969, 1, 31, 14, 4),
122+
expected_date=datetime(1969, 1, 31, 13, 4),
123123
)
124124
]
125125
)

tests/test_date.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ def test_should_reject_easily_mistaken_dateutil_arguments(self, invalid_period):
8181
self.when_date_range_generated(
8282
begin=datetime(2014, 6, 15),
8383
end=datetime(2014, 6, 25),
84-
**{invalid_period: 1}
84+
**{invalid_period: 1},
8585
)
8686
self.then_period_was_rejected(invalid_period)
8787

tests/test_date_parser.py

+2-6
Original file line numberDiff line numberDiff line change
@@ -198,9 +198,7 @@ def setUp(self):
198198
param("[সেপ্টেম্বর] 04, 2014.", datetime(2014, 9, 4)),
199199
param("মঙ্গলবার জুলাই 22, 2014", datetime(2014, 7, 22)),
200200
param("শুক্রবার", datetime(2012, 11, 9)),
201-
param(
202-
"শুক্র, 12 ডিসেম্বর 2014 10:55:50", datetime(2014, 12, 12, 10, 55, 50)
203-
),
201+
param("শুক্র, 12 ডিসেম্বর 2014 10:55:50", datetime(2014, 12, 12, 10, 55, 50)),
204202
param("1লা জানুয়ারী 2015", datetime(2015, 1, 1)),
205203
param("25শে মার্চ 1971", datetime(1971, 3, 25)),
206204
param("8ই মে 2002", datetime(2002, 5, 8)),
@@ -418,9 +416,7 @@ def test_stringified_datetime_should_parse_fine(self):
418416
param("[সেপ্টেম্বর] 04, 2014.", datetime(2014, 9, 4)),
419417
param("মঙ্গলবার জুলাই 22, 2014", datetime(2014, 7, 22)),
420418
param("শুক্রবার", datetime(2012, 11, 9)),
421-
param(
422-
"শুক্র, 12 ডিসেম্বর 2014 10:55:50", datetime(2014, 12, 12, 10, 55, 50)
423-
),
419+
param("শুক্র, 12 ডিসেম্বর 2014 10:55:50", datetime(2014, 12, 12, 10, 55, 50)),
424420
param("1লা জানুয়ারী 2015", datetime(2015, 1, 1)),
425421
param("25শে মার্চ 1971", datetime(1971, 3, 25)),
426422
param("8ই মে 2002", datetime(2002, 5, 8)),

tests/test_dateparser_data_integrity.py

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
import pytest
2+
3+
pytest.importorskip("ruamel")
4+
15
from dateparser_scripts.write_complete_data import write_complete_data
26

37

tests/test_hijri.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
import sys
2-
import unittest
1+
import pytest
2+
3+
pytest.importorskip("hijridate")
4+
35
from datetime import datetime
46

57
from parameterized import param, parameterized

tests/test_jalali.py

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
import pytest
2+
3+
pytest.importorskip("convertdate")
4+
15
from datetime import datetime
26

37
from parameterized import param, parameterized

tests/test_language_detect.py

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
import pytest
2+
3+
pytest.importorskip("fasttext")
4+
15
import unittest
26
from datetime import datetime
37
from unittest.mock import Mock

0 commit comments

Comments
 (0)