Skip to content

Commit

Permalink
expand docs for typings
Browse files Browse the repository at this point in the history
  • Loading branch information
devkral committed Nov 15, 2024
1 parent 6a3c468 commit ce879c1
Showing 1 changed file with 20 additions and 4 deletions.
24 changes: 20 additions & 4 deletions docs/specials.md
Original file line number Diff line number Diff line change
Expand Up @@ -226,24 +226,40 @@ __all__ = ["settings"]

Monkay is fully typed and its main class Monkay is a Generic supporting 2 type parameters:

`INSTANCE` and `SETTINGS`
`INSTANCE` and `SETTINGS`.

Monkay features also a protocol type for extensions: `ExtensionProtocol`.
This is protocol is runtime checkable and has also support for both paramers.

Here a combined example:


```python
from pydantic_settings import BaseSettings
from monkay import Monkay
from monkay import Monkay, ExtensionProtocol

class Instance: ...


class Settings(BaseSettings): ...
# providing Instance and Settings is entirely optional here
@dataclass
class Extension(ExtensionProtocol["Instance", "Settings"]):
name: str = "hello"

def apply(self, monkay_instance: Monkay) -> None:
"""Do something here"""


class Settings(BaseSettings):
extensions: list[ExtensionProtocol["Instance", "Settings"]] =[Extension()]


# type Monkay more strict
monkay = Monkay[Instance, Settings](
globals(),
# provide settings object via class
settings_path=Settings,
with_extensions=True,
settings_extensions_name="extensions"
)

```

0 comments on commit ce879c1

Please sign in to comment.