Skip to content

Commit

Permalink
format code and update tests
Browse files Browse the repository at this point in the history
  • Loading branch information
gweis committed Oct 8, 2024
1 parent d551397 commit 46abecd
Show file tree
Hide file tree
Showing 18 changed files with 176 additions and 185 deletions.
13 changes: 5 additions & 8 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ["pypy-3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
python-version: ["pypy-3.9", "3.9", "3.10", "3.11", "3.12", "3.13"]
os: [ubuntu-latest, macos-latest, windows-latest]
include:
# Include new variables for Codecov
Expand All @@ -20,27 +20,24 @@ jobs:
- { codecov-flag: GHA_Windows, os: windows-latest }

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: pip
cache-dependency-path: "setup.py"

- name: Install dependencies
run: |
python -m pip install -U pip
python -m pip install -U wheel
python -m pip install -U tox
python -m pip install -U pip wheel tox
- name: Tox tests
run: |
tox -e py
- name: Upload coverage
uses: codecov/codecov-action@v2
uses: codecov/codecov-action@v4
with:
flags: ${{ matrix.codecov-flag }}
name: ${{ matrix.os }} Python ${{ matrix.python-version }}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@ coverage.xml
htmlcov
src/isodate/version.py
.eggs
.vscode/
43 changes: 0 additions & 43 deletions setup.py

This file was deleted.

64 changes: 42 additions & 22 deletions src/isodate/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,50 @@
This module contains also various pre-defined ISO 8601 format strings.
"""
from isodate.isodates import parse_date, date_isoformat
from isodate.isotime import parse_time, time_isoformat
from isodate.isodatetime import parse_datetime, datetime_isoformat
from isodate.isoduration import parse_duration, duration_isoformat

from isodate.duration import Duration
from isodate.isodates import date_isoformat, parse_date
from isodate.isodatetime import datetime_isoformat, parse_datetime
from isodate.isoduration import duration_isoformat, parse_duration
from isodate.isoerror import ISO8601Error
from isodate.isostrf import (
D_ALT_BAS,
D_ALT_BAS_ORD,
D_ALT_EXT,
D_ALT_EXT_ORD,
D_DEFAULT,
D_WEEK,
DATE_BAS_COMPLETE,
DATE_BAS_MONTH,
DATE_BAS_ORD_COMPLETE,
DATE_BAS_WEEK,
DATE_BAS_WEEK_COMPLETE,
DATE_CENTURY,
DATE_EXT_COMPLETE,
DATE_EXT_MONTH,
DATE_EXT_ORD_COMPLETE,
DATE_EXT_WEEK,
DATE_EXT_WEEK_COMPLETE,
DATE_YEAR,
DT_BAS_COMPLETE,
DT_BAS_ORD_COMPLETE,
DT_BAS_WEEK_COMPLETE,
DT_EXT_COMPLETE,
DT_EXT_ORD_COMPLETE,
DT_EXT_WEEK_COMPLETE,
TIME_BAS_COMPLETE,
TIME_BAS_MINUTE,
TIME_EXT_COMPLETE,
TIME_EXT_MINUTE,
TIME_HOUR,
TZ_BAS,
TZ_EXT,
TZ_HOUR,
strftime,
)
from isodate.isotime import parse_time, time_isoformat
from isodate.isotzinfo import parse_tzinfo, tz_isoformat
from isodate.tzinfo import UTC, FixedOffset, LOCAL
from isodate.duration import Duration
from isodate.isostrf import strftime
from isodate.isostrf import DATE_BAS_COMPLETE, DATE_BAS_ORD_COMPLETE
from isodate.isostrf import DATE_BAS_WEEK, DATE_BAS_WEEK_COMPLETE
from isodate.isostrf import DATE_CENTURY, DATE_EXT_COMPLETE
from isodate.isostrf import DATE_EXT_ORD_COMPLETE, DATE_EXT_WEEK
from isodate.isostrf import DATE_EXT_WEEK_COMPLETE, DATE_YEAR
from isodate.isostrf import DATE_BAS_MONTH, DATE_EXT_MONTH
from isodate.isostrf import TIME_BAS_COMPLETE, TIME_BAS_MINUTE
from isodate.isostrf import TIME_EXT_COMPLETE, TIME_EXT_MINUTE
from isodate.isostrf import TIME_HOUR
from isodate.isostrf import TZ_BAS, TZ_EXT, TZ_HOUR
from isodate.isostrf import DT_BAS_COMPLETE, DT_EXT_COMPLETE
from isodate.isostrf import DT_BAS_ORD_COMPLETE, DT_EXT_ORD_COMPLETE
from isodate.isostrf import DT_BAS_WEEK_COMPLETE, DT_EXT_WEEK_COMPLETE
from isodate.isostrf import D_DEFAULT, D_WEEK, D_ALT_EXT, D_ALT_BAS
from isodate.isostrf import D_ALT_BAS_ORD, D_ALT_EXT_ORD
from isodate.tzinfo import LOCAL, UTC, FixedOffset
from isodate.version import version as __version__

__all__ = [
Expand Down
3 changes: 2 additions & 1 deletion src/isodate/duration.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@
The class Duration allows to define durations in years and months and can be
used as limited replacement for timedelta objects.
"""

from datetime import timedelta
from decimal import Decimal, ROUND_FLOOR
from decimal import ROUND_FLOOR, Decimal


def fquotmod(val, low, high):
Expand Down
3 changes: 2 additions & 1 deletion src/isodate/isodates.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,12 @@
standard. The only limitations it has, are given by the Python datetime.date
implementation, which does not support dates before 0001-01-01.
"""

import re
from datetime import date, timedelta

from isodate.isostrf import strftime, DATE_EXT_COMPLETE
from isodate.isoerror import ISO8601Error
from isodate.isostrf import DATE_EXT_COMPLETE, strftime

DATE_REGEX_CACHE = {}
# A dictionary to cache pre-compiled regular expressions.
Expand Down
4 changes: 2 additions & 2 deletions src/isodate/isodatetime.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
For this job it uses the parse_date and parse_time methods defined in date
and time module.
"""

from datetime import datetime

from isodate.isostrf import strftime
from isodate.isostrf import DATE_EXT_COMPLETE, TIME_EXT_COMPLETE, TZ_EXT
from isodate.isodates import parse_date
from isodate.isoerror import ISO8601Error
from isodate.isostrf import DATE_EXT_COMPLETE, TIME_EXT_COMPLETE, TZ_EXT, strftime
from isodate.isotime import parse_time


Expand Down
7 changes: 4 additions & 3 deletions src/isodate/isoduration.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@
It also provides a wrapper to strftime. This wrapper makes it easier to
format timedelta or Duration instances as ISO conforming strings.
"""

import re
from datetime import timedelta
from decimal import Decimal
import re

from isodate.duration import Duration
from isodate.isoerror import ISO8601Error
from isodate.isodatetime import parse_datetime
from isodate.isostrf import strftime, D_DEFAULT
from isodate.isoerror import ISO8601Error
from isodate.isostrf import D_DEFAULT, strftime

ISO8601_PERIOD_REGEX = re.compile(
r"^(?P<sign>[+-])?"
Expand Down
1 change: 1 addition & 0 deletions src/isodate/isostrf.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
pr-defined format strings in this module to make ease producing of ISO 8601
conforming strings.
"""

import re
from datetime import date, timedelta

Expand Down
5 changes: 3 additions & 2 deletions src/isodate/isotime.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@
It supports all basic and extended formats including time zone specifications
as described in the ISO standard.
"""

import re
from decimal import Decimal, ROUND_FLOOR
from datetime import time
from decimal import ROUND_FLOOR, Decimal

from isodate.isostrf import strftime, TIME_EXT_COMPLETE, TZ_EXT
from isodate.isoerror import ISO8601Error
from isodate.isostrf import TIME_EXT_COMPLETE, TZ_EXT, strftime
from isodate.isotzinfo import TZ_REGEX, build_tzinfo

TIME_REGEX_CACHE = []
Expand Down
3 changes: 2 additions & 1 deletion src/isodate/isotzinfo.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@
It offers a function to parse the time zone offset as specified by ISO 8601.
"""

import re

from isodate.isoerror import ISO8601Error
from isodate.tzinfo import UTC, FixedOffset, ZERO
from isodate.tzinfo import UTC, ZERO, FixedOffset

TZ_REGEX = (
r"(?P<tzname>(Z|(?P<tzsign>[+-])" r"(?P<tzhour>[0-9]{2})(:?(?P<tzmin>[0-9]{2}))?)?)"
Expand Down
3 changes: 2 additions & 1 deletion src/isodate/tzinfo.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@
All those classes are taken from the Python documentation.
"""
from datetime import timedelta, tzinfo

import time
from datetime import timedelta, tzinfo

ZERO = timedelta(0)
# constant for zero time offset.
Expand Down
27 changes: 19 additions & 8 deletions tests/test_date.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,29 @@
"""
Test cases for the isodate module.
"""
from datetime import date

from isodate import parse_date, ISO8601Error, date_isoformat
from isodate import DATE_CENTURY, DATE_YEAR
from isodate import DATE_BAS_MONTH, DATE_EXT_MONTH
from isodate import DATE_EXT_COMPLETE, DATE_BAS_COMPLETE
from isodate import DATE_BAS_ORD_COMPLETE, DATE_EXT_ORD_COMPLETE
from isodate import DATE_BAS_WEEK, DATE_BAS_WEEK_COMPLETE
from isodate import DATE_EXT_WEEK, DATE_EXT_WEEK_COMPLETE
from datetime import date

import pytest

from isodate import (
DATE_BAS_COMPLETE,
DATE_BAS_MONTH,
DATE_BAS_ORD_COMPLETE,
DATE_BAS_WEEK,
DATE_BAS_WEEK_COMPLETE,
DATE_CENTURY,
DATE_EXT_COMPLETE,
DATE_EXT_MONTH,
DATE_EXT_ORD_COMPLETE,
DATE_EXT_WEEK,
DATE_EXT_WEEK_COMPLETE,
DATE_YEAR,
ISO8601Error,
date_isoformat,
parse_date,
)

# the following list contains tuples of ISO date strings and the expected
# result from the parse_date method. A result of None means an ISO8601Error
# is expected. The test cases are grouped into dates with 4 digit years
Expand Down
30 changes: 22 additions & 8 deletions tests/test_datetime.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,32 @@
"""
Test cases for the isodatetime module.
"""
from datetime import datetime

from isodate import parse_datetime, UTC, FixedOffset, datetime_isoformat
from isodate import ISO8601Error
from isodate import DATE_BAS_COMPLETE, TIME_BAS_MINUTE, TIME_BAS_COMPLETE
from isodate import DATE_EXT_COMPLETE, TIME_EXT_MINUTE, TIME_EXT_COMPLETE
from isodate import TZ_BAS, TZ_EXT, TZ_HOUR
from isodate import DATE_BAS_ORD_COMPLETE, DATE_EXT_ORD_COMPLETE
from isodate import DATE_BAS_WEEK_COMPLETE, DATE_EXT_WEEK_COMPLETE
from datetime import datetime

import pytest

from isodate import (
DATE_BAS_COMPLETE,
DATE_BAS_ORD_COMPLETE,
DATE_BAS_WEEK_COMPLETE,
DATE_EXT_COMPLETE,
DATE_EXT_ORD_COMPLETE,
DATE_EXT_WEEK_COMPLETE,
TIME_BAS_COMPLETE,
TIME_BAS_MINUTE,
TIME_EXT_COMPLETE,
TIME_EXT_MINUTE,
TZ_BAS,
TZ_EXT,
TZ_HOUR,
UTC,
FixedOffset,
ISO8601Error,
datetime_isoformat,
parse_datetime,
)

# the following list contains tuples of ISO datetime strings and the expected
# result from the parse_datetime method. A result of None means an ISO8601Error
# is expected.
Expand Down
Loading

0 comments on commit 46abecd

Please sign in to comment.