Skip to content

Commit

Permalink
Support pydantic v2 with v1 shims (#207)
Browse files Browse the repository at this point in the history
* Support pydantic v2 with v1 shims

* Pydantic 1.10.3
  • Loading branch information
allenporter committed Jul 15, 2023
1 parent b358ce8 commit e5079b8
Show file tree
Hide file tree
Showing 35 changed files with 143 additions and 35 deletions.
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
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
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

0 comments on commit e5079b8

Please sign in to comment.