Convert Pydantic from V1 to V2 ♻
Project description
Bump Pydantic ♻️
Bump Pydantic is a tool to help you migrate your code from Pydantic V1 to V2.
Note If you find bugs, please report them on the issue tracker.
Table of contents
- Bump Pydantic ♻️
- Table of contents
- Installation
- Usage
- Rules
- BP001: Add default
None
toOptional[T]
,Union[T, None]
andAny
fields - BP002: Replace
Config
class bymodel_config
attribute - BP003: Replace
Field
old parameters to new ones - BP004: Replace imports
- BP003: Replace
Config
class bymodel_config
- BP005: Replace
GenericModel
byBaseModel
- BP006: Replace
__root__
byRootModel
- BP001: Add default
- License
Installation
The installation is as simple as:
pip install "bump-pydantic @ git+https://github.com/pydantic/bump-pydantic@main"
Usage
bump-pydantic
is a CLI tool, hence you can use it from your terminal.
To see the available options, you can run:
bump-pydantic --help
Check diff before applying changes
To check the diff before applying the changes, you can run:
bump-pydantic --diff <package>
Apply changes
To apply the changes, you can run:
bump-pydantic <package>
Rules
You can find below the list of rules that are applied by bump-pydantic
.
It's also possible to disable rules by using the --disable
option.
BP001: Add default None
to Optional[T]
, Union[T, None]
and Any
fields
- ✅ Add default
None
toOptional[T]
fields.
The following code will be transformed:
class User(BaseModel):
name: Optional[str]
Into:
class User(BaseModel):
name: Optional[str] = None
BP002: Replace Config
class by model_config
attribute
- ✅ Replace
Config
class bymodel_config = ConfigDict()
. - ✅ Rename old
Config
attributes to newmodel_config
attributes. - ✅ Add a TODO comment in case the transformation can't be done automatically.
- ✅ Replace
Extra
enum by string values.
The following code will be transformed:
from pydantic import BaseModel, Extra
class User(BaseModel):
name: str
class Config:
extra = Extra.forbid
Into:
from pydantic import ConfigDict, BaseModel
class User(BaseModel):
name: str
model_config = ConfigDict(extra="forbid")
BP003: Replace Field
old parameters to new ones
- ✅ Replace
Field
old parameters to new ones.
The following code will be transformed:
from typing import List
from pydantic import BaseModel, Field
class User(BaseModel):
name: List[str] = Field(..., min_items=1)
Into:
from typing import List
from pydantic import BaseModel, Field
class User(BaseModel):
name: List[str] = Field(..., min_length=1)
BP004: Replace imports
- ✅ Replace
BaseSettings
frompydantic
topydantic_settings
. - ✅ Replace
Color
andPaymentCardNumber
frompydantic
topydantic_extra_types
.
BP003: Replace Config
class by model_config
- ✅ Replace
Config
class bymodel_config = ConfigDict()
.
The following code will be transformed:
class User(BaseModel):
name: str
class Config:
extra = 'forbid'
Into:
class User(BaseModel):
name: str
model_config = ConfigDict(extra='forbid')
BP005: Replace GenericModel
by BaseModel
- ✅ Replace
GenericModel
byBaseModel
.
The following code will be transformed:
from typing import Generic, TypeVar
from pydantic.generics import GenericModel
T = TypeVar('T')
class User(GenericModel, Generic[T]):
name: str
Into:
from typing import Generic, TypeVar
T = TypeVar('T')
class User(BaseModel, Generic[T]):
name: str
BP006: Replace __root__
by RootModel
- ✅ Replace
__root__
byRootModel
.
The following code will be transformed:
from typing import List
from pydantic import BaseModel
class User(BaseModel):
age: int
name: str
class Users(BaseModel):
__root__ = List[User]
Into:
from typing import List
from pydantic import RootModel
class User(BaseModel):
age: int
name: str
class Users(RootModel[List[User]]):
pass
License
This project is licensed under the terms of the MIT license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for bump_pydantic-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 31c81b41f449f8b686a72c70369ceb015ec5c58b3b8465c3c8636f01cd3dd7c3 |
|
MD5 | b8451b3ce48902053f100b7f2aa1ca3e |
|
BLAKE2b-256 | f527a662c6bfc4775810a0a66dd3d303437a15433f574680fbd48c805369f403 |