Comments (5)
This isn't really a solution, but a few comments for you, me and future readers ;)
I'm assuming from you usage of pylance that you're using vscode here.
Using vscode and pylance with the code above I actually don't get any of your errors.
Are you by chance using:
"python.analysis.typeCheckingMode": "strict"
?
That's the only way I get this error.
Unfortunately I have always found the strict pylance typechecking to be more annoying than helpful as it has a bunch of places where it's either overly strict or is not very supportive of pythonic code (not just in pydantic). I tend to use check types using mypy and turn pylance type checking off (or use the "basic" setting).
For example, the BaseModel
has exaclty the same problem:
class FooModel(BaseModel):
value: str
class Config:
title = 'foo'
class BarModel(FooModel):
class Config: # this will have a similar "error"
bla = "blub"
You can of course always explicitly inherit from the parents config (like you're doing in the "fixed" version above). However, pydantics ModelMetaclass
already basically does the same thing when the class is created and my assumption is that pylance can't pick up this type of "dynamic" inheritance.
from pydantic-settings.
I'm assuming from you usage of pylance that you're using vscode here. Are you by chance using:
"python.analysis.typeCheckingMode": "strict"
?
Yes and yes.
For example, the
BaseModel
has exactly the same problem:
This is incorrect, or at least not the case for me, which is why I included a BaseModel example. There are no complaints from Pylance when adding a Config to BaseModel, only when adding a Config to BaseSettings.
from pydantic-settings.
@pikeas What @daviskirk wanted to say is that you would have the same error with a second BaseModel
inheriting from the first one. Internally BaseSettings
inherits from BaseModel
hence the same error
from pydantic-settings.
@pikeas What @daviskirk wanted to say is that you would have the same error with a second
BaseModel
inheriting from the first one. InternallyBaseSettings
inherits fromBaseModel
hence the same error
Thanks for clarifying, I didn't catch that initially. I think that running Pylance or MyPy in strict mode is a common use case, and worth smoothing over when possible. If Pydantic's types can be tweaked so this Just Works, that seems worth doing. Otherwise, updating the docs to use Config(ParentModel.Config)
?
from pydantic-settings.
This is fixed in pydantic-settings
by using SettingsConfigDict
from pydantic-settings.
Related Issues (20)
- Passing an environment variable that should be parsed as `None` HOT 2
- Nested objects from environmental variables does not support JSON parsing of complex types HOT 3
- Give users the ability to override environment variables using SettingsConfigDict HOT 9
- A clearer `ValidationError` should be provided with `Optional` settings HOT 2
- We should use tomli not tomlkit HOT 1
- apparent breaking change in `DotEnvSettingsSource` when `extra="allow"`
- Field with alias leads to ValidationError in v2.2.0 HOT 4
- 2.2.0 broke support for nested BaseSettings with base type (e.g. using ABC) HOT 5
- Release 2.2 breaks enviroment prefix HOT 13
- .env file values take precedence over environment variables in BaseSettings HOT 2
- Feature request: Add `_init_ignore_none` to BaseSettings HOT 4
- Regression in customizing sources in pydantic V2 HOT 6
- Problems with nested settings in pydantic-settings v2.2.1 HOT 2
- `PyprojectTomlConfigSettingsSource` or extend `TomlConfigSettingsSource` HOT 1
- Default field value priority is not consistent with setting sources priority HOT 3
- Values printed in ValidationError stack traces for BaseSettings HOT 2
- TomlConfigSettingsSource is nowhere to be found HOT 1
- Is `EnvSettingsSource`'s behavior intentional or bug? HOT 6
- Override default file in Yaml/Toml/Json ConfigSettingsSource at runtime. HOT 3
- Order dependent dict overwriting environment-variable issue HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pydantic-settings.