Skip to content

[Bug]: env_nested_delimiter Is Not Implemented #48

Description

@FatJun

Description

env_nested_delimiter Is Not Implemented in code base

Steps to Reproduce

  1. Install msgspec-ext
  2. Try to use env_nested_delimiter from readme and docs
  3. Get shocked
  4. Go to source and make sure that env_nested_delimiter is not implemented
  5. Open an issue on GitHub

Expected Behavior

To Be Implemented

Actual Behavior

Not To Be Implemented

Code Example

from functools import cache, cached_property
from typing import Literal, Self
from urllib.parse import quote, urlunsplit

from msgspec_ext import (
    BaseSettings,
    SecretStr,
    SettingsConfigDict,
)

type _Scheme = Literal["postgresql", "postgresql+asyncpg"]

class PostgresConnection(BaseSettings):
    username: SecretStr
    password: SecretStr
    host: SecretStr
    port: int
    db: SecretStr

    @cached_property
    def adsn(self) -> str:
        return self._build_dsn("postgresql+asyncpg")

    @cached_property
    def dsn(self) -> str:
        return self._build_dsn("postgresql")

    def _build_dsn(self, scheme: str) -> str:
        userinfo = f"{quote(self.username)}:{quote(self.password)}"
        netloc = f"{userinfo}@{self.host}:{self.port}"
        return urlunsplit((scheme, netloc, self.db, "", ""))


class DatabaseConnections(BaseSettings):
    postgres: PostgresConnection


class AppSettings(BaseSettings):
    model_config = SettingsConfigDict(
        env_file=".env",
        env_nested_delimiter="__",
    )

    database: DatabaseConnections

    @classmethod
    @cache
    def get_settings(cls) -> Self:
        return cls()

msgspec-ext Version

0.5.0

Python Version

3.13

Operating System

Windows 11

Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions