Describe the bug
Installation fails on Python 3.13 due to conflicting numpy version requirements between tensorflow>=2.20 and perch-hoplite (used in the embeddings feature). The pyproject.toml currently specifies requires-python = ">=3.11" which allows Python 3.13, but the documentation states "Requires Python 3.10 or 3.11" - this mismatch causes installation failures for users on Python 3.13.
To Reproduce
Steps to reproduce the behavior:
For the CLI:
- Use Python 3.13.x
- Clone the repository:
git clone https://github.com/birdnet-team/BirdNET-Analyzer.git
- Navigate to directory:
cd BirdNET-Analyzer
- Attempt installation:
uv sync or pip install .
- See dependency resolution error
Expected behavior
Installation should either:
- Succeed on Python 3.13, or
- Clearly prevent installation with an appropriate error message indicating Python 3.13 is not supported
Error Output
No solution found when resolving dependencies for split (markers: python_full_version >= '3.13'):
Because your project depends on tensorflow>=2.20 and only tensorflow<=2.20.0 is available,
we can conclude that your project depends on tensorflow==2.20.
And because tensorflow==2.20.0 depends on ml-dtypes>=0.5.1 and ml-dtypes>=0.5.1 depends on
numpy{python_full_version >= '3.13'}>=2.1.0, we can conclude that your project requires numpy>=2.1.0.
And because perch-hoplite>=0.1.1 depends on numpy>=2.0,<2.1 and only the following versions
of perch-hoplite are available: perch-hoplite<=0.1.1, perch-hoplite==0.1.3
we can conclude that your project and perch-hoplite>=0.1.1 are incompatible.
Desktop (please complete the following information):
- OS: Linux (also affects Windows/macOS)
- Python Version: 3.13.5
- BirdNET-Analyzer Version: 2.4.0 (latest)
Root Cause
The issue is a numpy version conflict on Python 3.13:
- TensorFlow 2.20 on Python 3.13 requires
numpy>=2.1.0
- perch-hoplite requires
numpy>=2.0,<2.1
These requirements are mutually exclusive.
Proposed Solution
Update pyproject.toml line 13 to explicitly exclude Python 3.13 until dependencies support it:
requires-python = ">=3.11,<3.13"
Workaround
Manually edit pyproject.toml to change requires-python = ">=3.11" to requires-python = ">=3.11,<3.13", then installation succeeds on Python 3.12.
Additional context
Python 3.13 was released in October 2024. This issue will likely resolve as upstream dependencies (TensorFlow, perch-hoplite) add Python 3.13 support. In the meantime, explicitly constraining the Python version would prevent user confusion and match the existing documentation.
Describe the bug
Installation fails on Python 3.13 due to conflicting numpy version requirements between
tensorflow>=2.20andperch-hoplite(used in the embeddings feature). Thepyproject.tomlcurrently specifiesrequires-python = ">=3.11"which allows Python 3.13, but the documentation states "Requires Python 3.10 or 3.11" - this mismatch causes installation failures for users on Python 3.13.To Reproduce
Steps to reproduce the behavior:
For the CLI:
git clone https://github.com/birdnet-team/BirdNET-Analyzer.gitcd BirdNET-Analyzeruv syncorpip install .Expected behavior
Installation should either:
Error Output
Desktop (please complete the following information):
Root Cause
The issue is a numpy version conflict on Python 3.13:
numpy>=2.1.0numpy>=2.0,<2.1These requirements are mutually exclusive.
Proposed Solution
Update
pyproject.tomlline 13 to explicitly exclude Python 3.13 until dependencies support it:Workaround
Manually edit
pyproject.tomlto changerequires-python = ">=3.11"torequires-python = ">=3.11,<3.13", then installation succeeds on Python 3.12.Additional context
Python 3.13 was released in October 2024. This issue will likely resolve as upstream dependencies (TensorFlow, perch-hoplite) add Python 3.13 support. In the meantime, explicitly constraining the Python version would prevent user confusion and match the existing documentation.