Skip to content

Pypi package fails to generate code #38

@ftapajos

Description

@ftapajos

Installing package from pypi (as of 0.2.5) with asyncapi-python[codegen] fails to generate code.
If I install asyncapi-python without codegen and manually add typer (version 0.21), code generation succeeds.

Test

Using docker image python:3.13 for reproducibility.

Executed commands

root@c2656bd48fd4:/# git clone https://github.com/G-USI/asyncapi-python
root@c2656bd48fd4:/# cd asyncapi-python/examples/amqp-pub-sub/
root@c2656bd48fd4:/asyncapi-python/examples/amqp-pub-sub# make venv
root@c2656bd48fd4:/asyncapi-python/examples/amqp-pub-sub# source .venv/bin/activate
(.venv) root@c2656bd48fd4:/asyncapi-python/examples/amqp-pub-sub# pip install asyncapi-python[codegen]
(.venv) root@c2656bd48fd4:/asyncapi-python/examples/amqp-pub-sub# make generate

Result

.venv/bin/asyncapi-python-codegen spec/subscriber.asyncapi.yaml subscriber --force
╭───────────────────────────────────────────────── Traceback (most recent call last) ──────────────────────────────────────────────────╮
│ /asyncapi-python/examples/amqp-pub-sub/.venv/bin/asyncapi-python-codegen:7 in <module>                                               │
│                                                                                                                                      │
│   4 if __name__ == '__main__':                                                                                                       │
│   5 │   if sys.argv[0].endswith('.exe'):                                                                                             │
│   6 │   │   sys.argv[0] = sys.argv[0][:-4]                                                                                           │
│ ❱ 7 │   sys.exit(app())                                                                                                              │
│   8                                                                                                                                  │
│                                                                                                                                      │
│ ╭───────────────────── locals ──────────────────────╮                                                                                │
│ │ app = <typer.main.Typer object at 0x7fc43f645d30> │                                                                                │
│ │ sys = <module 'sys' (built-in)>                   │                                                                                │
│ ╰───────────────────────────────────────────────────╯                                                                                │
│                                                                                                                                      │
│ /asyncapi-python/examples/amqp-pub-sub/.venv/lib/python3.13/site-packages/typer/main.py:338 in __call__                              │
│                                                                                                                                      │
│ /asyncapi-python/examples/amqp-pub-sub/.venv/lib/python3.13/site-packages/typer/main.py:321 in __call__                              │
│                                                                                                                                      │
│ /asyncapi-python/examples/amqp-pub-sub/.venv/lib/python3.13/site-packages/typer/main.py:374 in get_command                           │
│                                                                                                                                      │
│ /asyncapi-python/examples/amqp-pub-sub/.venv/lib/python3.13/site-packages/typer/main.py:590 in get_command_from_info                 │
│                                                                                                                                      │
│ /asyncapi-python/examples/amqp-pub-sub/.venv/lib/python3.13/site-packages/typer/main.py:566 in                                       │
│ get_params_convertors_ctx_param_name_from_function                                                                                   │
│                                                                                                                                      │
│ /asyncapi-python/examples/amqp-pub-sub/.venv/lib/python3.13/site-packages/typer/main.py:900 in get_click_param                       │
│                                                                                                                                      │
│ /asyncapi-python/examples/amqp-pub-sub/.venv/lib/python3.13/site-packages/typer/core.py:427 in __init__                              │
│                                                                                                                                      │
│ /asyncapi-python/examples/amqp-pub-sub/.venv/lib/python3.13/site-packages/click/core.py:2852 in __init__                             │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
TypeError: Secondary flag is not valid for non-boolean flag.
make: *** [Makefile:15: generate] Error 1

Full log

root@c2656bd48fd4:/# git clone https://github.com/G-USI/asyncapi-python
Cloning into 'asyncapi-python'...
remote: Enumerating objects: 2760, done.
remote: Counting objects: 100% (360/360), done.
remote: Compressing objects: 100% (198/198), done.
remote: Total 2760 (delta 200), reused 255 (delta 155), pack-reused 2400 (from 1)
Receiving objects: 100% (2760/2760), 740.11 KiB | 13.22 MiB/s, done.
Resolving deltas: 100% (1579/1579), done.
root@c2656bd48fd4:/# cd asyncapi-python/examples/amqp-pub-sub/
root@c2656bd48fd4:/asyncapi-python/examples/amqp-pub-sub# make venv
python3 -m venv .venv
root@c2656bd48fd4:/asyncapi-python/examples/amqp-pub-sub# source .venv/bin/activate
(.venv) root@c2656bd48fd4:/asyncapi-python/examples/amqp-pub-sub# pip install asyncapi-python[codegen]
Collecting asyncapi-python[codegen]
  Downloading asyncapi_python-0.2.5-py3-none-any.whl.metadata (5.7 kB)
Collecting black (from asyncapi-python[codegen])
  Downloading black-25.12.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (86 kB)
Collecting datamodel-code-generator<0.27.0,>=0.26.4 (from datamodel-code-generator[http]<0.27.0,>=0.26.4; extra == "codegen"->asyncapi-python[codegen])
  Downloading datamodel_code_generator-0.26.5-py3-none-any.whl.metadata (24 kB)
Collecting jinja2<4.0.0,>=3.1.4 (from asyncapi-python[codegen])
  Downloading jinja2-3.1.6-py3-none-any.whl.metadata (2.9 kB)
Collecting pydantic>=2 (from asyncapi-python[codegen])
  Downloading pydantic-2.12.5-py3-none-any.whl.metadata (90 kB)
Collecting pytz (from asyncapi-python[codegen])
  Downloading pytz-2025.2-py2.py3-none-any.whl.metadata (22 kB)
Collecting pyyaml (from asyncapi-python[codegen])
  Downloading pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (2.4 kB)
Collecting typer<0.13.0,>=0.12.5 (from typer[all]<0.13.0,>=0.12.5; extra == "codegen"->asyncapi-python[codegen])
  Downloading typer-0.12.5-py3-none-any.whl.metadata (15 kB)
Collecting argcomplete<4.0,>=1.10 (from datamodel-code-generator<0.27.0,>=0.26.4->datamodel-code-generator[http]<0.27.0,>=0.26.4; extra == "codegen"->asyncapi-python[codegen])
  Downloading argcomplete-3.6.3-py3-none-any.whl.metadata (16 kB)
Collecting black (from asyncapi-python[codegen])
  Downloading black-26.1a1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (88 kB)
Collecting genson<2.0,>=1.2.1 (from datamodel-code-generator<0.27.0,>=0.26.4->datamodel-code-generator[http]<0.27.0,>=0.26.4; extra == "codegen"->asyncapi-python[codegen])
  Downloading genson-1.3.0-py3-none-any.whl.metadata (28 kB)
Collecting inflect<6.0,>=4.1.0 (from datamodel-code-generator<0.27.0,>=0.26.4->datamodel-code-generator[http]<0.27.0,>=0.26.4; extra == "codegen"->asyncapi-python[codegen])
  Downloading inflect-5.6.2-py3-none-any.whl.metadata (21 kB)
Collecting isort<6.0,>=4.3.21 (from datamodel-code-generator<0.27.0,>=0.26.4->datamodel-code-generator[http]<0.27.0,>=0.26.4; extra == "codegen"->asyncapi-python[codegen])
  Downloading isort-5.13.2-py3-none-any.whl.metadata (12 kB)
Collecting packaging (from datamodel-code-generator<0.27.0,>=0.26.4->datamodel-code-generator[http]<0.27.0,>=0.26.4; extra == "codegen"->asyncapi-python[codegen])
  Downloading packaging-25.0-py3-none-any.whl.metadata (3.3 kB)
Collecting httpx (from datamodel-code-generator[http]<0.27.0,>=0.26.4; extra == "codegen"->asyncapi-python[codegen])
  Downloading httpx-0.28.1-py3-none-any.whl.metadata (7.1 kB)
Collecting MarkupSafe>=2.0 (from jinja2<4.0.0,>=3.1.4->asyncapi-python[codegen])
  Downloading markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (2.7 kB)
Collecting annotated-types>=0.6.0 (from pydantic>=2->asyncapi-python[codegen])
  Downloading annotated_types-0.7.0-py3-none-any.whl.metadata (15 kB)
Collecting pydantic-core==2.41.5 (from pydantic>=2->asyncapi-python[codegen])
  Downloading pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (7.3 kB)
Collecting typing-extensions>=4.14.1 (from pydantic>=2->asyncapi-python[codegen])
  Downloading typing_extensions-4.15.0-py3-none-any.whl.metadata (3.3 kB)
Collecting typing-inspection>=0.4.2 (from pydantic>=2->asyncapi-python[codegen])
  Downloading typing_inspection-0.4.2-py3-none-any.whl.metadata (2.6 kB)
Collecting email-validator>=2.0.0 (from pydantic[email]!=2.0.0,!=2.0.1,!=2.4.0,<3.0,>=1.10.0; python_version >= "3.12" and python_version < "4.0"->datamodel-code-generator<0.27.0,>=0.26.4->datamodel-code-generator[http]<0.27.0,>=0.26.4; extra == "codegen"->asyncapi-python[codegen])
  Downloading email_validator-2.3.0-py3-none-any.whl.metadata (26 kB)
Collecting click>=8.0.0 (from typer<0.13.0,>=0.12.5->typer[all]<0.13.0,>=0.12.5; extra == "codegen"->asyncapi-python[codegen])
  Downloading click-8.3.1-py3-none-any.whl.metadata (2.6 kB)
Collecting shellingham>=1.3.0 (from typer<0.13.0,>=0.12.5->typer[all]<0.13.0,>=0.12.5; extra == "codegen"->asyncapi-python[codegen])
  Downloading shellingham-1.5.4-py2.py3-none-any.whl.metadata (3.5 kB)
Collecting rich>=10.11.0 (from typer<0.13.0,>=0.12.5->typer[all]<0.13.0,>=0.12.5; extra == "codegen"->asyncapi-python[codegen])
  Downloading rich-14.2.0-py3-none-any.whl.metadata (18 kB)
WARNING: typer 0.12.5 does not provide the extra 'all'
Collecting mypy-extensions>=0.4.3 (from black->asyncapi-python[codegen])
  Downloading mypy_extensions-1.1.0-py3-none-any.whl.metadata (1.1 kB)
Collecting pathspec>=0.9.0 (from black->asyncapi-python[codegen])
  Downloading pathspec-0.12.1-py3-none-any.whl.metadata (21 kB)
Collecting platformdirs>=2 (from black->asyncapi-python[codegen])
  Downloading platformdirs-4.5.1-py3-none-any.whl.metadata (12 kB)
Collecting pytokens>=0.3.0 (from black->asyncapi-python[codegen])
  Downloading pytokens-0.3.0-py3-none-any.whl.metadata (2.0 kB)
Collecting dnspython>=2.0.0 (from email-validator>=2.0.0->pydantic[email]!=2.0.0,!=2.0.1,!=2.4.0,<3.0,>=1.10.0; python_version >= "3.12" and python_version < "4.0"->datamodel-code-generator<0.27.0,>=0.26.4->datamodel-code-generator[http]<0.27.0,>=0.26.4; extra == "codegen"->asyncapi-python[codegen])
  Downloading dnspython-2.8.0-py3-none-any.whl.metadata (5.7 kB)
Collecting idna>=2.0.0 (from email-validator>=2.0.0->pydantic[email]!=2.0.0,!=2.0.1,!=2.4.0,<3.0,>=1.10.0; python_version >= "3.12" and python_version < "4.0"->datamodel-code-generator<0.27.0,>=0.26.4->datamodel-code-generator[http]<0.27.0,>=0.26.4; extra == "codegen"->asyncapi-python[codegen])
  Downloading idna-3.11-py3-none-any.whl.metadata (8.4 kB)
Collecting markdown-it-py>=2.2.0 (from rich>=10.11.0->typer<0.13.0,>=0.12.5->typer[all]<0.13.0,>=0.12.5; extra == "codegen"->asyncapi-python[codegen])
  Downloading markdown_it_py-4.0.0-py3-none-any.whl.metadata (7.3 kB)
Collecting pygments<3.0.0,>=2.13.0 (from rich>=10.11.0->typer<0.13.0,>=0.12.5->typer[all]<0.13.0,>=0.12.5; extra == "codegen"->asyncapi-python[codegen])
  Downloading pygments-2.19.2-py3-none-any.whl.metadata (2.5 kB)
Collecting mdurl~=0.1 (from markdown-it-py>=2.2.0->rich>=10.11.0->typer<0.13.0,>=0.12.5->typer[all]<0.13.0,>=0.12.5; extra == "codegen"->asyncapi-python[codegen])
  Downloading mdurl-0.1.2-py3-none-any.whl.metadata (1.6 kB)
Collecting anyio (from httpx->datamodel-code-generator[http]<0.27.0,>=0.26.4; extra == "codegen"->asyncapi-python[codegen])
  Downloading anyio-4.12.0-py3-none-any.whl.metadata (4.3 kB)
Collecting certifi (from httpx->datamodel-code-generator[http]<0.27.0,>=0.26.4; extra == "codegen"->asyncapi-python[codegen])
  Downloading certifi-2025.11.12-py3-none-any.whl.metadata (2.5 kB)
Collecting httpcore==1.* (from httpx->datamodel-code-generator[http]<0.27.0,>=0.26.4; extra == "codegen"->asyncapi-python[codegen])
  Downloading httpcore-1.0.9-py3-none-any.whl.metadata (21 kB)
Collecting h11>=0.16 (from httpcore==1.*->httpx->datamodel-code-generator[http]<0.27.0,>=0.26.4; extra == "codegen"->asyncapi-python[codegen])
  Downloading h11-0.16.0-py3-none-any.whl.metadata (8.3 kB)
Downloading asyncapi_python-0.2.5-py3-none-any.whl (40 kB)
Downloading datamodel_code_generator-0.26.5-py3-none-any.whl (114 kB)
Downloading argcomplete-3.6.3-py3-none-any.whl (43 kB)
Downloading genson-1.3.0-py3-none-any.whl (21 kB)
Downloading inflect-5.6.2-py3-none-any.whl (33 kB)
Downloading isort-5.13.2-py3-none-any.whl (92 kB)
Downloading jinja2-3.1.6-py3-none-any.whl (134 kB)
Downloading pydantic-2.12.5-py3-none-any.whl (463 kB)
Downloading pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 18.7 MB/s  0:00:00
Downloading typer-0.12.5-py3-none-any.whl (47 kB)
Downloading annotated_types-0.7.0-py3-none-any.whl (13 kB)
Downloading black-26.1a1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.8 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 27.9 MB/s  0:00:00
Downloading click-8.3.1-py3-none-any.whl (108 kB)
Downloading email_validator-2.3.0-py3-none-any.whl (35 kB)
Downloading dnspython-2.8.0-py3-none-any.whl (331 kB)
Downloading idna-3.11-py3-none-any.whl (71 kB)
Downloading markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (22 kB)
Downloading mypy_extensions-1.1.0-py3-none-any.whl (5.0 kB)
Downloading packaging-25.0-py3-none-any.whl (66 kB)
Downloading pathspec-0.12.1-py3-none-any.whl (31 kB)
Downloading platformdirs-4.5.1-py3-none-any.whl (18 kB)
Downloading pytokens-0.3.0-py3-none-any.whl (12 kB)
Downloading pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (801 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 801.6/801.6 kB 21.7 MB/s  0:00:00
Downloading rich-14.2.0-py3-none-any.whl (243 kB)
Downloading pygments-2.19.2-py3-none-any.whl (1.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 14.0 MB/s  0:00:00
Downloading markdown_it_py-4.0.0-py3-none-any.whl (87 kB)
Downloading mdurl-0.1.2-py3-none-any.whl (10.0 kB)
Downloading shellingham-1.5.4-py2.py3-none-any.whl (9.8 kB)
Downloading typing_extensions-4.15.0-py3-none-any.whl (44 kB)
Downloading typing_inspection-0.4.2-py3-none-any.whl (14 kB)
Downloading httpx-0.28.1-py3-none-any.whl (73 kB)
Downloading httpcore-1.0.9-py3-none-any.whl (78 kB)
Downloading h11-0.16.0-py3-none-any.whl (37 kB)
Downloading anyio-4.12.0-py3-none-any.whl (113 kB)
Downloading certifi-2025.11.12-py3-none-any.whl (159 kB)
Downloading pytz-2025.2-py2.py3-none-any.whl (509 kB)
Installing collected packages: pytz, genson, typing-extensions, shellingham, pyyaml, pytokens, pygments, platformdirs, pathspec, packaging, mypy-extensions, mdurl, MarkupSafe, isort, inflect, idna, h11, dnspython, click, certifi, argcomplete, annotated-types, typing-inspection, pydantic-core, markdown-it-py, jinja2, httpcore, email-validator, black, anyio, rich, pydantic, httpx, typer, asyncapi-python, datamodel-code-generator
Successfully installed MarkupSafe-3.0.3 annotated-types-0.7.0 anyio-4.12.0 argcomplete-3.6.3 asyncapi-python-0.2.5 black-26.1a1 certifi-2025.11.12 click-8.3.1 datamodel-code-generator-0.26.5 dnspython-2.8.0 email-validator-2.3.0 genson-1.3.0 h11-0.16.0 httpcore-1.0.9 httpx-0.28.1 idna-3.11 inflect-5.6.2 isort-5.13.2 jinja2-3.1.6 markdown-it-py-4.0.0 mdurl-0.1.2 mypy-extensions-1.1.0 packaging-25.0 pathspec-0.12.1 platformdirs-4.5.1 pydantic-2.12.5 pydantic-core-2.41.5 pygments-2.19.2 pytokens-0.3.0 pytz-2025.2 pyyaml-6.0.3 rich-14.2.0 shellingham-1.5.4 typer-0.12.5 typing-extensions-4.15.0 typing-inspection-0.4.2
(.venv) root@c2656bd48fd4:/asyncapi-python/examples/amqp-pub-sub# make generate
.venv/bin/asyncapi-python-codegen spec/subscriber.asyncapi.yaml subscriber --force
╭───────────────────────────────────────────────── Traceback (most recent call last) ──────────────────────────────────────────────────╮
│ /asyncapi-python/examples/amqp-pub-sub/.venv/bin/asyncapi-python-codegen:7 in <module>                                               │
│                                                                                                                                      │
│   4 if __name__ == '__main__':                                                                                                       │
│   5 │   if sys.argv[0].endswith('.exe'):                                                                                             │
│   6 │   │   sys.argv[0] = sys.argv[0][:-4]                                                                                           │
│ ❱ 7 │   sys.exit(app())                                                                                                              │
│   8                                                                                                                                  │
│                                                                                                                                      │
│ ╭───────────────────── locals ──────────────────────╮                                                                                │
│ │ app = <typer.main.Typer object at 0x7fc43f645d30> │                                                                                │
│ │ sys = <module 'sys' (built-in)>                   │                                                                                │
│ ╰───────────────────────────────────────────────────╯                                                                                │
│                                                                                                                                      │
│ /asyncapi-python/examples/amqp-pub-sub/.venv/lib/python3.13/site-packages/typer/main.py:338 in __call__                              │
│                                                                                                                                      │
│ /asyncapi-python/examples/amqp-pub-sub/.venv/lib/python3.13/site-packages/typer/main.py:321 in __call__                              │
│                                                                                                                                      │
│ /asyncapi-python/examples/amqp-pub-sub/.venv/lib/python3.13/site-packages/typer/main.py:374 in get_command                           │
│                                                                                                                                      │
│ /asyncapi-python/examples/amqp-pub-sub/.venv/lib/python3.13/site-packages/typer/main.py:590 in get_command_from_info                 │
│                                                                                                                                      │
│ /asyncapi-python/examples/amqp-pub-sub/.venv/lib/python3.13/site-packages/typer/main.py:566 in                                       │
│ get_params_convertors_ctx_param_name_from_function                                                                                   │
│                                                                                                                                      │
│ /asyncapi-python/examples/amqp-pub-sub/.venv/lib/python3.13/site-packages/typer/main.py:900 in get_click_param                       │
│                                                                                                                                      │
│ /asyncapi-python/examples/amqp-pub-sub/.venv/lib/python3.13/site-packages/typer/core.py:427 in __init__                              │
│                                                                                                                                      │
│ /asyncapi-python/examples/amqp-pub-sub/.venv/lib/python3.13/site-packages/click/core.py:2852 in __init__                             │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
TypeError: Secondary flag is not valid for non-boolean flag.
make: *** [Makefile:15: generate] Error 1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions