Thanks for the suggestions. I will rename all the classes to simplify.

I am still having issues with packaging. I have been unable to figure out if it is a bug or a config file problem of some sort.

I moved the files out of the src directory to the src/birdbrain_python_libary_2 directory as you suggsted to follow conventions. Left the config files pointing to that directory, but when using the packge locally with: "pip install -e ." in the root directory of the project, the sys.path does not get set correctly. Here is the dialog:

>>> import sys
>>> print(sys.path)
['', '/Users/fmorton/.pyenv/versions/3.13.2/lib/python313.zip', '/Users/fmorton/.pyenv/versions/3.13.2/lib/python3.13', '/Users/fmorton/.pyenv/versions/3.13.2/lib/python3.13/lib-dynload', '/Users/fmorton/.pyenv/versions/3.13.2/lib/python3.13/site-packages', '/Users/fmorton/GitHub/Birdbrain-Python-Library-2/src']
>>> from BirdBrain import Hummingbird
... 
Traceback (most recent call last):
  File "<python-input-3>", line 1, in <module>
    from BirdBrain import Hummingbird
ModuleNotFoundError: No module named 'BirdBrain'

"pip list" correctly shows: birdbrain-python-library-2      0.9.29       /Users/fmorton/GitHub/Birdbrain-Python-Library-2

You see that the "src" top-level directory is in the sys.path, not the project directory within the 'src' directory.

Also see if I define the src/birdbrain_python_library_2 using $PYTHONPATH, everything works as hoped. Here is the dialog after adding it to the $PYTHONPATH:

bash-3.2$ python
Python 3.13.2 (main, Apr  8 2025, 12:02:13) [Clang 17.0.0 (clang-1700.0.13.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.path)
['', '/Users/fmorton/GitHub/BirdBrain-Python-Library-2/src/birdbrain_python_library_2', '/Users/fmorton', '/Users/fmorton/.pyenv/versions/3.13.2/lib/python313.zip', '/Users/fmorton/.pyenv/versions/3.13.2/lib/python3.13', '/Users/fmorton/.pyenv/versions/3.13.2/lib/python3.13/lib-dynload', '/Users/fmorton/.pyenv/versions/3.13.2/lib/python3.13/site-packages', '/Users/fmorton/GitHub/Birdbrain-Python-Library-2/src']
>>> from BirdBrain import Hummingbird
>>> 

Somehow, the sys.path is not being set correctly.


To further complicate, if I go ahead and push the package to pypi, you will notice that nothing at all gets put in sys.path when loading the package with "pip":

bash-3.2$ python
Python 3.13.2 (main, Apr  8 2025, 12:02:13) [Clang 17.0.0 (clang-1700.0.13.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.path)
['', '/Users/fmorton/.pyenv/versions/3.13.2/lib/python313.zip', '/Users/fmorton/.pyenv/versions/3.13.2/lib/python3.13', '/Users/fmorton/.pyenv/versions/3.13.2/lib/python3.13/lib-dynload', '/Users/fmorton/.pyenv/versions/3.13.2/lib/python3.13/site-packages']
>>> from BirdBrain import Hummingbird
Traceback (most recent call last):
  File "<python-input-2>", line 1, in <module>
    from BirdBrain import Hummingbird
ModuleNotFoundError: No module named 'BirdBrain'
>>> 


But, if I manually add the src/birdbrain_python_library_2 to $PYTHONPATH, all works as expected (as well as the entire test suite):

bash-3.2$ python
Python 3.13.2 (main, Apr  8 2025, 12:02:13) [Clang 17.0.0 (clang-1700.0.13.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.path)
['', '/Users/fmorton/.pyenv/versions/3.13.2/lib/python3.13/site-packages/birdbrain_python_library_2', '/Users/fmorton', '/Users/fmorton/.pyenv/versions/3.13.2/lib/python313.zip', '/Users/fmorton/.pyenv/versions/3.13.2/lib/python3.13', '/Users/fmorton/.pyenv/versions/3.13.2/lib/python3.13/lib-dynload', '/Users/fmorton/.pyenv/versions/3.13.2/lib/python3.13/site-packages']
>>> from BirdBrain import Hummingbird
>>> 

I have to think there is something missing from the config files or there is a bug somewhere. Should the package be found since it is in the site-packages directory?

Glad to try out any suggestions.
