Since v0.11.0.
The SDK ships a py.typed marker and is clean under both mypy --strict and pyright. You get real types for every public call with no stub package and no configuration.
Why the marker matters
The SDK has been annotated since early versions. Until v0.11.0 those annotations were invisible to you.
PEP 561 says a type checker must ignore an installed package’s inline annotations unless the package ships a py.typed marker file. Without it, mypy and pyright treat every import from the package as Any - so this:
type-checked as Any throughout. A typo in a method name, a wrong argument type, a misused return value - none of it was caught, and none of it appeared in your editor either.
Both westyx_nexus and nexus_openfeature carry the marker now.
What you get
get_secret_file_path returning str | None is the case that earns its keep: under --strict, passing it straight to open() is now an error, because the key may not be a file-type secret.
Checking your own code
Nothing extra to install - the marker is in the wheel:
If your project runs --strict, this SDK will not be the source of Any.
django and botocore ship no type information of their own, so the framework adapters that import them resolve to Any regardless of what this SDK does. If you use the Django adapter and want it checked, add django-stubs to your own dev dependencies. flask and fastapi are typed upstream and need nothing.
Next