Skip to content

Add py.typed marker for PEP 561 support (#116) - #125

Closed
Tarcio0211 wants to merge 2 commits into
permitio:mainfrom
Tarcio0211:main
Closed

Tarcio0211 wants to merge 2 commits into
permitio:mainfrom
Tarcio0211:main

Conversation

@Tarcio0211

Copy link
Copy Markdown
Contributor

Issue: #116

What this PR does:

  • Adds an empty py.typed file to the permit package.
  • Updates package_data in setup.py to include py.typed in the distribution.

Why:
This resolves the mypy error Skipping analyzing 'permit': missing library stubs or py.typed marker reported in issue #116. Now mypy correctly recognizes permit as a typed package.

Testing:

  • Verified locally that mypy no longer ignores the permit package.
  • Installed in editable mode (pip install -e .) to confirm the marker is included.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds PEP 561 typing support metadata so type checkers (e.g., mypy) recognize permit as a typed package rather than reporting it as “missing library stubs or py.typed marker”.

Changes:

  • Adds an empty permit/py.typed marker file.
  • Updates setup.py to include py.typed in the distributed package via package_data.

Reviewed changes

Copilot reviewed 1 out of 2 changed files in this pull request and generated no comments.

File Description
setup.py Includes permit/py.typed in package distribution metadata (package_data).
permit/py.typed Adds the PEP 561 marker file to declare the package as typed.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@zeevmoney

Copy link
Copy Markdown
Member

Thanks @Tarcio0211 for picking this up. The marker is exactly the right end state, and your packaging change does put py.typed in the wheel.

When we tested it against the current code, though, declaring the package typed made things worse for type-checker users on its own. mypy and pyright started flagging correct code:

  • optional model fields read as required;
  • the sync client (permit.sync.Permit) was typed as returning coroutines;
  • API methods that accept dicts at runtime rejected them in their annotations.

On a small sample app, that turned 3 import errors, which users can silence, into more than 20 errors on valid code.

#126, now merged to main and shipping in permit 3.0.0, fixes those typing problems and ships py.typed together with them. Your change is included in it, and you're credited as co-author on the commit. So I'm closing this PR as incorporated. Thanks again for the contribution!

@zeevmoney zeevmoney closed this Sep 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants