[ 
https://issues.apache.org/jira/browse/FLINK-39578?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Florian Vazelle updated FLINK-39578:
------------------------------------
    Description: 
PyFlink currently does not include a {{py.typed}} marker file in its 
distributed wheel. As a result, static type checkers like {{mypy}} treat the 
package as untyped, even though type annotations are present in the source code.

This prevents users from benefiting from type checking when using PyFlink, as 
{{mypy}} ignores inline type hints unless the package explicitly declares 
itself as typed per [PEP 561|https://peps.python.org/pep-0561/].

*Steps to Reproduce:*
{code:bash}
$ uv init test
$ cd test/
$ uv add apache-flink
$ uv add mypy --group dev
{code}
Edit the {{{}main.py{}}}: 
{code:python}
from pyflink.datastream.functions import FlatMapFunction

class Filter(FlatMapFunction):
    def flat_map(self, event):
        if event:
            yield event
{code}
{code:bash}
$ uv run mypy .
main.py:1: error: Skipping analyzing "pyflink.datastream.functions": module is 
installed, but missing library stubs or py.typed marker  [import-untyped]
main.py:1: note: See 
https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports
{code}
*Expected Behavior:*
PyFlink should be recognized as a typed package, allowing mypy to analyze its 
type annotations.

*Suggested Fix:*
Include an empty {{py.typed}} file in the pyflink package and ensure it is 
packaged in the wheel.

  was:
PyFlink currently does not include a {{{{{}py.typed{}}}}} marker file in its 
distributed wheel. As a result, static type checkers like {{mypy}} treat the 
package as untyped, even though type annotations are present in the source code.

This prevents users from benefiting from type checking when using PyFlink, as 
{{mypy}} ignores inline type hints unless the package explicitly declares 
itself as typed per [PEP 561|https://peps.python.org/pep-0561/].

*Steps to Reproduce:*
{code:java}
uv init test
cd test/
$ uv add apache-flink
$ uv add mypy --group dev
{code}
Edit the main.py: 
 
{code:java}
from pyflink.datastream.functions import FlatMapFunction

class Filter(FlatMapFunction):
    def flat_map(self, event):
        if event:
            yield event
{code}
 
{code:java}
$ uv run mypy .
main.py:1: error: Skipping analyzing "pyflink.datastream.functions": module is 
installed, but missing library stubs or py.typed marker  [import-untyped]
main.py:1: note: See 
https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports{code}


> Missing py.typed in PyFlink wheel prevents type checking with mypy
> ------------------------------------------------------------------
>
>                 Key: FLINK-39578
>                 URL: https://issues.apache.org/jira/browse/FLINK-39578
>             Project: Flink
>          Issue Type: Bug
>          Components: API / Python
>            Reporter: Florian Vazelle
>            Priority: Minor
>
> PyFlink currently does not include a {{py.typed}} marker file in its 
> distributed wheel. As a result, static type checkers like {{mypy}} treat the 
> package as untyped, even though type annotations are present in the source 
> code.
> This prevents users from benefiting from type checking when using PyFlink, as 
> {{mypy}} ignores inline type hints unless the package explicitly declares 
> itself as typed per [PEP 561|https://peps.python.org/pep-0561/].
> *Steps to Reproduce:*
> {code:bash}
> $ uv init test
> $ cd test/
> $ uv add apache-flink
> $ uv add mypy --group dev
> {code}
> Edit the {{{}main.py{}}}: 
> {code:python}
> from pyflink.datastream.functions import FlatMapFunction
> class Filter(FlatMapFunction):
>     def flat_map(self, event):
>         if event:
>             yield event
> {code}
> {code:bash}
> $ uv run mypy .
> main.py:1: error: Skipping analyzing "pyflink.datastream.functions": module 
> is installed, but missing library stubs or py.typed marker  [import-untyped]
> main.py:1: note: See 
> https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports
> {code}
> *Expected Behavior:*
> PyFlink should be recognized as a typed package, allowing mypy to analyze its 
> type annotations.
> *Suggested Fix:*
> Include an empty {{py.typed}} file in the pyflink package and ensure it is 
> packaged in the wheel.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to