magmax / python-readchar

Python library to read characters and key strokes
MIT License
143 stars 43 forks source link

include `py.typed` in package #101

Closed Cube707 closed 1 year ago

Cube707 commented 1 year ago

this should enable mypy to analyse the package and fix #100

@phoenixr-codes can you please confirm this fixes the issue? Use this to install the pre-release version:

pip install -U --pre readchar==4.0.4.dev0
phoenixr-codes commented 1 year ago

This does not fix the issue for some reason - even after upgrading mypy and clearing the cache.

Following https://mypy.readthedocs.io/en/stable/installed_packages.html#creating-pep-561-compatible-packages, it might be neccessary to set zip_safe to False.

Cube707 commented 1 year ago

hm, thats anoying. I will look into this some more...

Cube707 commented 1 year ago

@phoenixr-codes it should work now, could you please try again? Use:

pip install -U --pre readchar==4.0.4.dev1
coveralls commented 1 year ago

Coverage Status

Coverage: 94.156%. Remained the same when pulling 6a6bda2452f8293b7e83b9bdef2a81319ef81258 on py-typed into 4a69e22c8cc9bad50d942d32f359a35e5bc714ad on master.

phoenixr-codes commented 1 year ago

Still does not work. The py.typed seems to be excluded during the build.

Going to the site packages

python -c "print(__import__('site').getsitepackages()[0])"

and looking at some library's files, shows that some of them contain a py.typed file - readchar does not.

I have managed to create a library which mypy recognizes as typed by using this pyproject.toml file:

[build-system]
requires = ["setuptools", "setuptools-scm"]
build-backend = "setuptools.build_meta"

[project]
name = "typing_mypy_test"
version = "0.0.2"

[tool.setuptools.package-data]
typing_mypy_test = ["py.typed"]

[tool.setuptools]
zip-safe = false
# file: main.py
def add(a: float, b: float) -> float:
    return a + b

Directory Structure (after python -m build):

.
├── build
│   ├── bdist.linux-x86_64
│   └── lib
│       └── typing_mypy_test
│           ├── main.py
│           └── py.typed
├── dist
│   ├── typing_mypy_test-0.0.1-py3-none-any.whl
│   ├── typing_mypy_test-0.0.1.tar.gz
│   ├── typing_mypy_test-0.0.2-py3-none-any.whl
│   └── typing_mypy_test-0.0.2.tar.gz
├── pyproject.toml
├── typing_mypy_test
│   ├── main.py
│   └── py.typed
└── typing_mypy_test.egg-info
    ├── PKG-INFO
    ├── SOURCES.txt
    ├── dependency_links.txt
    ├── not-zip-safe
    └── top_level.txt
Cube707 commented 1 year ago

But I made sure that this time the file is included in both the .tar.gz and the wheel, wird.

But thanks for the hints from other packages, I will look how they handle it

Cube707 commented 1 year ago

Ok I found the problem. My release-pipeline is a bust and actually always releases master, so these changes are not in the pre-release versions... -_-

If you have the time you could try installing directly from the repo, like this:

pip install -U git+https://github.com/magmax/python-readchar@v4.0.4-dev1

I will fix the pipeline...

Cube707 commented 1 year ago

@phoenixr-codes The pipeline is fixed and the newest pre-release version now actually containes the changes (also in the versions pushed to pypi). So installing this should work:

pip install -U --pre readchar==4.0.4.dev2