Skip to content

Commit c379df3

Browse files
committed
Adicionandon init=false ao baseSettings do pydantic
1 parent a8e1bcd commit c379df3

15 files changed

Lines changed: 56 additions & 47 deletions

File tree

aulas/04.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,7 @@ Desta forma, com nossos modelos e testes de banco de dados em ordem, estamos pro
493493
Por fim, configuraremos nosso banco de dados. Primeiro, criaremos um novo arquivo chamado `settings.py` dentro do diretório `fast_zero`. Aqui, usaremos o Pydantic para criar uma classe `Settings` que irá pegar as configurações do nosso arquivo `.env`. Neste arquivo, a classe `Settings` é definida como:
494494

495495
```python title="fast_zero/settings.py"
496+
from pydantic import Field
496497
from pydantic_settings import BaseSettings, SettingsConfigDict
497498

498499

@@ -501,12 +502,12 @@ class Settings(BaseSettings):
501502
env_file='.env', env_file_encoding='utf-8'#(2)!
502503
)
503504

504-
DATABASE_URL: str#(3)!
505+
DATABASE_URL: str = Field(init=False)#(3)!
505506
```
506507

507508
1. `SettingsConfigDict`: é um objeto do pydantic-settings que carrega as variáveis em um arquivo de configuração. Por exemplo, um `.env`.
508509
2. Aqui definimos o caminho para o arquivo de configuração e o encoding dele.
509-
3. `DATABASE_URL`: Essa variável sera preenchida com o valor encontrado com o mesmo nome no arquivo `.env`.
510+
3. `DATABASE_URL`: Essa variável será preenchida com o valor encontrado com o mesmo nome no arquivo `.env`. O `Field(init=False)`, diz que esse atributo não será passado na hora que o objeto for instanciado, pois ele será fornecido pela variável de ambiente.
510511

511512
Agora, definiremos o `DATABASE_URL` no nosso arquivo de ambiente `.env`. Crie o arquivo na raiz do projeto e adicione a seguinte linha:
512513

aulas/07.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -621,6 +621,7 @@ Estes valores não devem estar diretamente no código-fonte, então vamos movê-
621621
Já temos uma classe ideal para fazer isso em `fast_zero/settings.py`. Alteraremos essa classe para incluir estas constantes.
622622

623623
```python title="fast_zero/settings.py" linenums="1"
624+
from pydantic import Field
624625
from pydantic_settings import BaseSettings, SettingsConfigDict
625626

626627

@@ -629,10 +630,10 @@ class Settings(BaseSettings):
629630
env_file='.env', env_file_encoding='utf-8'
630631
)
631632

632-
DATABASE_URL: str
633-
SECRET_KEY: str
634-
ALGORITHM: str
635-
ACCESS_TOKEN_EXPIRE_MINUTES: int
633+
DATABASE_URL: str = Field(init=False)
634+
SECRET_KEY: str = Field(init=False)
635+
ALGORITHM: str = Field(init=False)
636+
ACCESS_TOKEN_EXPIRE_MINUTES: int = Field(init=False)
636637
```
637638

638639
Agora, precisamos adicionar estes valores ao nosso arquivo `.env`.

aulas/11.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -509,11 +509,7 @@ Este processo garante que as migrações do banco de dados são realizadas autom
509509
model_config = SettingsConfigDict(
510510
env_file='.env', env_file_encoding='utf-8', extra='ignore'
511511
)
512-
513-
DATABASE_URL: str
514-
SECRET_KEY: str
515-
ALGORITHM: str
516-
ACCESS_TOKEN_EXPIRE_MINUTES: int
512+
# ...
517513
```
518514

519515
Com essa configuração, o Pydantic irá ignorar quaisquer variáveis no `.env` que não sejam explicitamente declaradas na classe `Settings`, evitando assim conflitos e erros inesperados.
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from pydantic import Field
12
from pydantic_settings import BaseSettings, SettingsConfigDict
23

34

@@ -6,4 +7,4 @@ class Settings(BaseSettings):
67
env_file='.env', env_file_encoding='utf-8'
78
)
89

9-
DATABASE_URL: str
10+
DATABASE_URL: str = Field(init=False)
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from pydantic import Field
12
from pydantic_settings import BaseSettings, SettingsConfigDict
23

34

@@ -6,4 +7,4 @@ class Settings(BaseSettings):
67
env_file='.env', env_file_encoding='utf-8'
78
)
89

9-
DATABASE_URL: str
10+
DATABASE_URL: str = Field(init=False)
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from pydantic import Field
12
from pydantic_settings import BaseSettings, SettingsConfigDict
23

34

@@ -6,4 +7,4 @@ class Settings(BaseSettings):
67
env_file='.env', env_file_encoding='utf-8'
78
)
89

9-
DATABASE_URL: str
10+
DATABASE_URL: str = Field(init=False)
Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from pydantic import Field
12
from pydantic_settings import BaseSettings, SettingsConfigDict
23

34

@@ -6,7 +7,7 @@ class Settings(BaseSettings):
67
env_file='.env', env_file_encoding='utf-8'
78
)
89

9-
DATABASE_URL: str
10-
SECRET_KEY: str
11-
ALGORITHM: str
12-
ACCESS_TOKEN_EXPIRE_MINUTES: int
10+
DATABASE_URL: str = Field(init=False)
11+
SECRET_KEY: str = Field(init=False)
12+
ALGORITHM: str = Field(init=False)
13+
ACCESS_TOKEN_EXPIRE_MINUTES: int = Field(init=False)
Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from pydantic import Field
12
from pydantic_settings import BaseSettings, SettingsConfigDict
23

34

@@ -6,7 +7,7 @@ class Settings(BaseSettings):
67
env_file='.env', env_file_encoding='utf-8'
78
)
89

9-
DATABASE_URL: str
10-
SECRET_KEY: str
11-
ALGORITHM: str
12-
ACCESS_TOKEN_EXPIRE_MINUTES: int
10+
DATABASE_URL: str = Field(init=False)
11+
SECRET_KEY: str = Field(init=False)
12+
ALGORITHM: str = Field(init=False)
13+
ACCESS_TOKEN_EXPIRE_MINUTES: int = Field(init=False)
Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from pydantic import Field
12
from pydantic_settings import BaseSettings, SettingsConfigDict
23

34

@@ -6,7 +7,7 @@ class Settings(BaseSettings):
67
env_file='.env', env_file_encoding='utf-8'
78
)
89

9-
DATABASE_URL: str
10-
SECRET_KEY: str
11-
ALGORITHM: str
12-
ACCESS_TOKEN_EXPIRE_MINUTES: int
10+
DATABASE_URL: str = Field(init=False)
11+
SECRET_KEY: str = Field(init=False)
12+
ALGORITHM: str = Field(init=False)
13+
ACCESS_TOKEN_EXPIRE_MINUTES: int = Field(init=False)
Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from pydantic import Field
12
from pydantic_settings import BaseSettings, SettingsConfigDict
23

34

@@ -6,7 +7,7 @@ class Settings(BaseSettings):
67
env_file='.env', env_file_encoding='utf-8'
78
)
89

9-
DATABASE_URL: str
10-
SECRET_KEY: str
11-
ALGORITHM: str
12-
ACCESS_TOKEN_EXPIRE_MINUTES: int
10+
DATABASE_URL: str = Field(init=False)
11+
SECRET_KEY: str = Field(init=False)
12+
ALGORITHM: str = Field(init=False)
13+
ACCESS_TOKEN_EXPIRE_MINUTES: int = Field(init=False)

0 commit comments

Comments
 (0)