Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support pydantic v2 with v1 shims #207

Merged
merged 2 commits into from
Jul 15, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/workflows/python-package.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,11 @@ jobs:
- name: Test with pytest
run: |
pytest --cov=ical --cov-report=term-missing
- name: Test with pytest (pydantic v1)
run: |
pip3 install pydantic==1.10.3
pytest --cov=ical --cov-report=term-missing

- uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
Expand Down
6 changes: 5 additions & 1 deletion ical/alarm.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
import enum
from typing import Any, Optional, Union

from pydantic import Field, root_validator
try:
from pydantic.v1 import Field, root_validator
except ImportError:
from pydantic import Field, root_validator


from .component import ComponentModel
from .parsing.property import ParsedProperty
Expand Down
5 changes: 4 additions & 1 deletion ical/calendar.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@
from typing import Optional, Any
import zoneinfo

from pydantic import Field, root_validator
try:
from pydantic.v1 import Field, root_validator
except ImportError:
from pydantic import Field, root_validator

from .component import ComponentModel
from .event import Event
Expand Down
5 changes: 4 additions & 1 deletion ical/calendar_stream.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,10 @@

import logging

from pydantic import Field
try:
from pydantic.v1 import Field
except ImportError:
from pydantic import Field

from .calendar import Calendar
from .component import ComponentModel
Expand Down
8 changes: 6 additions & 2 deletions ical/component.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,12 @@
import logging
from typing import Any, Union, get_args, get_origin

from pydantic import BaseModel, root_validator
from pydantic.fields import SHAPE_LIST
try:
from pydantic.v1 import BaseModel, root_validator
from pydantic.v1.fields import SHAPE_LIST

Check warning on line 27 in ical/component.py

View check run for this annotation

Codecov / codecov/patch

ical/component.py#L27

Added line #L27 was not covered by tests
except ImportError:
from pydantic import BaseModel, root_validator
from pydantic.fields import SHAPE_LIST

from .parsing.component import ParsedComponent
from .parsing.property import ParsedProperty
Expand Down
5 changes: 4 additions & 1 deletion ical/event.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@
from collections.abc import Iterable
from typing import Any, Optional, Union

from pydantic import Field, root_validator
try:
from pydantic.v1 import Field, root_validator
except ImportError:
from pydantic import Field, root_validator

from .alarm import Alarm
from .component import ComponentModel, validate_until_dtstart, validate_recurrence_dates
Expand Down
5 changes: 4 additions & 1 deletion ical/freebusy.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@
import logging
from typing import Any, Optional, Union

from pydantic import Field, validator
try:
from pydantic.v1 import Field, validator
except ImportError:
from pydantic import Field, validator

from .component import ComponentModel
from .parsing.property import ParsedProperty
Expand Down
5 changes: 4 additions & 1 deletion ical/journal.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@
import logging
from typing import Any, Optional, Union

from pydantic import Field, root_validator
try:
from pydantic.v1 import Field, root_validator
except ImportError:
from pydantic import Field, root_validator

from .component import ComponentModel, validate_until_dtstart, validate_recurrence_dates
from .parsing.property import ParsedProperty
Expand Down
5 changes: 4 additions & 1 deletion ical/timezone.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@
from typing import Any, Iterable, Optional, Union

from dateutil.rrule import rruleset
from pydantic import Field, root_validator, validator
try:
from pydantic.v1 import Field, root_validator, validator
except ImportError:
from pydantic import Field, root_validator, validator

from .component import ComponentModel
from .iter import MergedIterable, RecurIterable
Expand Down
5 changes: 4 additions & 1 deletion ical/todo.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@
import enum
from typing import Any, Optional, Union

from pydantic import Field, root_validator
try:
from pydantic.v1 import Field, root_validator
except ImportError:
from pydantic import Field, root_validator

from .alarm import Alarm
from .component import ComponentModel, validate_until_dtstart, validate_recurrence_dates
Expand Down
6 changes: 5 additions & 1 deletion ical/types/cal_address.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@
import logging
from typing import Any, Optional

from pydantic import BaseModel, Field, root_validator
try:
from pydantic.v1 import BaseModel, Field, root_validator
except ImportError:
from pydantic import BaseModel, Field, root_validator


from ical.parsing.property import ParsedPropertyParameter

Expand Down
5 changes: 4 additions & 1 deletion ical/types/data_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@
from collections.abc import Callable
from typing import Any, Iterable, Protocol

from pydantic.fields import SHAPE_LIST, ModelField
try:
from pydantic.v1.fields import SHAPE_LIST, ModelField
except ImportError:
from pydantic.fields import SHAPE_LIST, ModelField

from ical.parsing.property import ParsedProperty, ParsedPropertyParameter

Expand Down
8 changes: 6 additions & 2 deletions ical/types/parsing.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,12 @@
import logging
from typing import Any

from pydantic import BaseModel
from pydantic.fields import SHAPE_LIST, ModelField
try:
from pydantic.v1 import BaseModel
from pydantic.v1.fields import SHAPE_LIST, ModelField

Check warning on line 10 in ical/types/parsing.py

View check run for this annotation

Codecov / codecov/patch

ical/types/parsing.py#L10

Added line #L10 was not covered by tests
except ImportError:
from pydantic import BaseModel
from pydantic.fields import SHAPE_LIST, ModelField

_LOGGER = logging.getLogger(__name__)

Expand Down
5 changes: 4 additions & 1 deletion ical/types/period.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@
import logging
from typing import Any, Optional

from pydantic import BaseModel, Field, root_validator
try:
from pydantic.v1 import BaseModel, Field, root_validator
except ImportError:
from pydantic import BaseModel, Field, root_validator

from ical.parsing.property import ParsedProperty, ParsedPropertyParameter

Expand Down
5 changes: 4 additions & 1 deletion ical/types/recur.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,10 @@
from typing import Any, Optional, Union

from dateutil import rrule
from pydantic import BaseModel, Field
try:
from pydantic.v1 import BaseModel, Field
except ImportError:
from pydantic import BaseModel, Field

from ical.parsing.property import ParsedProperty

Expand Down
5 changes: 4 additions & 1 deletion ical/tzif/tz_rule.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,10 @@
from typing import Any, Optional, Union, cast

from dateutil import rrule
from pydantic import BaseModel, root_validator, validator
try:
from pydantic.v1 import BaseModel, root_validator, validator
except ImportError:
from pydantic import BaseModel, root_validator, validator
from pyparsing import (
Char,
Combine,
Expand Down
1 change: 1 addition & 0 deletions requirements_dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ python-dateutil==2.8.2
freezegun==1.2.1
pdoc==12.1.0
pip==22.1.2
pydantic==2.0.3
pylint==2.14.4
pyparsing==3.0.9
pytest==7.1.2
Expand Down
2 changes: 1 addition & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ python_requires = >= 3.9
install_requires =
python-dateutil>=2.8.2
tzdata>=2023.3
pydantic>=1.9.1,<2.0a1
pydantic>=1.9.1
pyparsing>=3.0.9
emoji>=2.2.0
include_package_data = True
Expand Down
5 changes: 4 additions & 1 deletion tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@
from unittest.mock import patch

import pytest
from pydantic.json import pydantic_encoder
try:
from pydantic.v1.json import pydantic_encoder
except ImportError:
from pydantic.json import pydantic_encoder


PRODID = "-//example//1.2.3"
Expand Down
6 changes: 5 additions & 1 deletion tests/test_alarm.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@
import datetime

import pytest
from pydantic import ValidationError
try:
from pydantic.v1 import ValidationError
except ImportError:
from pydantic import ValidationError


from ical.alarm import Alarm

Expand Down
5 changes: 4 additions & 1 deletion tests/test_event.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@
from unittest.mock import patch

import pytest
from pydantic import ValidationError
try:
from pydantic.v1 import ValidationError
except ImportError:
from pydantic import ValidationError

from ical.event import Event

Expand Down
5 changes: 4 additions & 1 deletion tests/test_freebusy.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@
from unittest.mock import patch

import pytest
from pydantic import ValidationError
try:
from pydantic.v1 import ValidationError
except ImportError:
from pydantic import ValidationError

from ical.freebusy import FreeBusy
from ical.types import FreeBusyType, Period
Expand Down
5 changes: 4 additions & 1 deletion tests/test_journal.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@
from unittest.mock import patch

import pytest
from pydantic import ValidationError
try:
from pydantic.v1 import ValidationError
except ImportError:
from pydantic import ValidationError

from ical.journal import Journal, JournalStatus

Expand Down
5 changes: 4 additions & 1 deletion tests/test_timezone.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@

import pytest
from freezegun import freeze_time
from pydantic import ValidationError
try:
from pydantic.v1 import ValidationError
except ImportError:
from pydantic import ValidationError

from ical.calendar import Calendar
from ical.calendar_stream import IcsCalendarStream
Expand Down
5 changes: 4 additions & 1 deletion tests/test_todo.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@
from unittest.mock import patch

import pytest
from pydantic import ValidationError
try:
from pydantic.v1 import ValidationError
except ImportError:
from pydantic import ValidationError

from ical.todo import Todo

Expand Down
5 changes: 4 additions & 1 deletion tests/types/test_boolean.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
"""Tests for BOOLEAN data types."""

import pytest
from pydantic import ValidationError
try:
from pydantic.v1 import ValidationError
except ImportError:
from pydantic import ValidationError

from ical.component import ComponentModel
from ical.parsing.property import ParsedProperty
Expand Down
5 changes: 4 additions & 1 deletion tests/types/test_date.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@
from typing import Union

import pytest
from pydantic import ValidationError
try:
from pydantic.v1 import ValidationError
except ImportError:
from pydantic import ValidationError

from ical.component import ComponentModel
from ical.parsing.property import ParsedProperty
Expand Down
6 changes: 5 additions & 1 deletion tests/types/test_date_time.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
from typing import Union

import pytest
from pydantic import ValidationError
try:
from pydantic.v1 import ValidationError
except ImportError:
from pydantic import ValidationError


from ical.component import ComponentModel
from ical.parsing.component import ParsedComponent
Expand Down
5 changes: 4 additions & 1 deletion tests/types/test_float.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
"""Tests for FLOAT data types."""

import pytest
from pydantic import ValidationError
try:
from pydantic.v1 import ValidationError
except ImportError:
from pydantic import ValidationError

from ical.component import ComponentModel
from ical.parsing.property import ParsedProperty
Expand Down
5 changes: 4 additions & 1 deletion tests/types/test_geo.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
"""Library for GEO values."""

import pytest
from pydantic import ValidationError
try:
from pydantic.v1 import ValidationError
except ImportError:
from pydantic import ValidationError

from ical.component import ComponentModel
from ical.parsing.property import ParsedProperty
Expand Down
5 changes: 4 additions & 1 deletion tests/types/test_integer.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
"""Tests for INTEGER data types."""

import pytest
from pydantic import ValidationError
try:
from pydantic.v1 import ValidationError
except ImportError:
from pydantic import ValidationError

from ical.component import ComponentModel
from ical.parsing.property import ParsedProperty
Expand Down
5 changes: 4 additions & 1 deletion tests/types/test_period.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
import datetime

import pytest
from pydantic import ValidationError
try:
from pydantic.v1 import ValidationError
except ImportError:
from pydantic import ValidationError

from ical.component import ComponentModel
from ical.parsing.component import ParsedComponent
Expand Down
5 changes: 4 additions & 1 deletion tests/types/test_priority.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
"""Tests for PRIORITY types."""

import pytest
from pydantic import ValidationError
try:
from pydantic.v1 import ValidationError
except ImportError:
from pydantic import ValidationError

from ical.component import ComponentModel
from ical.parsing.property import ParsedProperty
Expand Down
Loading