fast-aircraft-design / FAST-OAD

FAST-OAD: An open source framework for rapid Overall Aircraft Design
GNU General Public License v3.0
47 stars 25 forks source link

Bug - Can't open FAST-OAD CS-25 #523

Closed nicleao closed 1 week ago

nicleao commented 2 months ago

Describe the bug Hello! I'm a new user to the FAST-OAD environment and I've been trying to open the CS-25 version following the corresponding documentation. However, the following error occurs after the command "fastoad notebooks":

To Reproduce I just installed the CS-25 version through 'pip install' and tried to open the notebooks through 'fastoad notebooks'.

Error message

Traceback (most recent call last): File "C:\Users\nicol\anaconda3\Lib\site-packages\pelix\framework.py", line 906, in installbundle module = sys.modules[name]


KeyError: 'fastoad.models.performances.mission.mission'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\Users\nicol\anaconda3\Scripts\fastoad.exe\_main_.py", line 7, in <module>
  File "C:\Users\nicol\anaconda3\Lib\site-packages\click\core.py", line 1157, in _call_
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\nicol\anaconda3\Lib\site-packages\click\core.py", line 1078, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "C:\Users\nicol\anaconda3\Lib\site-packages\click\core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\nicol\anaconda3\Lib\site-packages\click\core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\nicol\anaconda3\Lib\site-packages\click\core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\nicol\anaconda3\Lib\site-packages\fastoad\cmd\cli.py", line 309, in create_notebooks
    if manage_overwrite(
       ^^^^^^^^^^^^^^^^^
  File "C:\Users\nicol\anaconda3\Lib\site-packages\fastoad\cmd\cli_utils.py", line 67, in manage_overwrite
    written = _run_func(func, filename_func, **kwargs)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\nicol\anaconda3\Lib\site-packages\fastoad\cmd\cli_utils.py", line 80, in _run_func
    result = func(**kwargs)
             ^^^^^^^^^^^^^^
  File "C:\Users\nicol\anaconda3\Lib\site-packages\fastoad\cmd\api.py", line 104, in generate_notebooks
    folder_info_list = FastoadLoader().get_notebook_folder_list(distribution_name)
                       ^^^^^^^^^^^^^^^
  File "C:\Users\nicol\anaconda3\Lib\site-packages\fastoad\module_management\plugins.py", line 379, in __init_
    self.load()
  File "C:\Users\nicol\anaconda3\Lib\site-packages\fastoad\module_management\_plugins.py", line 492, in load
    cls._load_models(plugin_def)
  File "C:\Users\nicol\anaconda3\Lib\site-packages\fastoad\module_management\_plugins.py", line 499, in _load_models
    BundleLoader().explore_folder(
  File "C:\Users\nicol\anaconda3\Lib\site-packages\fastoad\module_management\_bundle_loader.py", line 94, in explore_folder
    bundles, failed = self._install_python_package(folder_path)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\nicol\anaconda3\Lib\site-packages\fastoad\module_management\_bundle_loader.py", line 375, in _install_python_package
    sub_bundles, sub_failed = self._install_python_package(item_package)
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\nicol\anaconda3\Lib\site-packages\fastoad\module_management\_bundle_loader.py", line 375, in _install_python_package
    sub_bundles, sub_failed = self._install_python_package(item_package)
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\nicol\anaconda3\Lib\site-packages\fastoad\module_management\_bundle_loader.py", line 370, in _install_python_package
    bundle = self.context.install_bundle(item_package[:-3])
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\nicol\anaconda3\Lib\site-packages\pelix\framework.py", line 1684, in install_bundle
    return self.__framework.install_bundle(name, path)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\nicol\anaconda3\Lib\site-packages\pelix\framework.py", line 911, in install_bundle
    module_ = importlib.import_module(name)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\nicol\anaconda3\Lib\importlib\_init_.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\Users\nicol\anaconda3\Lib\site-packages\fastoad\models\performances\mission\mission.py", line 26, in <module>
    from .routes import RangedRoute
  File "C:\Users\nicol\anaconda3\Lib\site-packages\fastoad\models\performances\mission\routes.py", line 28, in <module>
    from .segments.registered.cruise import CruiseSegment
  File "C:\Users\nicol\anaconda3\Lib\site-packages\fastoad\models\performances\mission\segments\registered\_init_.py", line 24, in <module>
    from . import (
  File "C:\Users\nicol\anaconda3\Lib\site-packages\fastoad\models\performances\mission\segments\registered\altitude_change.py", line 28, in <module>
    from fastoad.models.performances.mission.segments.time_step_base import AbstractManualThrustSegment
  File "C:\Users\nicol\anaconda3\Lib\site-packages\fastoad\models\performances\mission\segments\time_step_base.py", line 39, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\nicol\anaconda3\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\nicol\anaconda3\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\nicol\anaconda3\Lib\dataclasses.py", line 958, in _process_class
    cls_fields.append(_get_field(cls, name, type, kw_only))
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\nicol\anaconda3\Lib\dataclasses.py", line 815, in _get_field
    raise ValueError(f'mutable default {type(f.default)} for field '
ValueError: mutable default <class 'fastoad.models.performances.mission.polar_modifier.UnchangedPolar'> for field polar_modifier is not allowed: use default_factory
-----------------------------------------------------------------------

**Expected behavior**
I expected the software's UI to pop up, just like in the documentation and related articles.

**Environment**
I'm using Windows 11 with Anaconda Python 3.11.7.
- Packages: Output of `pip list --format=freeze`:
aenum==3.1.15
aiobotocore==2.7.0
aiofiles==22.1.0
aiohttp==3.9.3
aioitertools==0.7.1
aiosignal==1.2.0
aiosqlite==0.20.0
alabaster==0.7.12
altair==5.0.1
anaconda-anon-usage==0.4.3
anaconda-catalogs==0.2.0
anaconda-client==1.12.3
anaconda-cloud-auth==0.1.4
anaconda-navigator==2.5.4
anaconda-project==0.11.1
anyio==4.2.0
appdirs==1.4.4
archspec==0.2.3
argon2-cffi==21.3.0
argon2-cffi-bindings==21.2.0
arrow==1.2.3
astroid==2.14.2
astropy==5.3.4
asttokens==2.0.5
async-lru==2.0.4
atomicwrites==1.4.0
attrs==23.1.0
Automat==20.2.0
autopep8==1.6.0
Babel==2.11.0
backports.functools-lru-cache==1.6.4
backports.tempfile==1.0
backports.weakref==1.0.post1
bcrypt==3.2.0
beautifulsoup4==4.12.2
binaryornot==0.4.4
black==23.11.0
bleach==4.1.0
blinker==1.6.2
bokeh==3.3.4
boltons==23.0.0
botocore==1.31.64
Bottleneck==1.3.7
Brotli==1.0.9
build==1.2.1
cachetools==4.2.2
certifi==2024.2.2
cffi==1.16.0
chardet==4.0.0
charset-normalizer==2.0.4
click==8.1.7
cloudpickle==2.2.1
clyent==1.2.2
colorama==0.4.6
colorcet==3.0.1
comm==0.2.2
conda==24.3.0
conda-build==24.1.2
conda-content-trust==0.2.0
conda_index==0.4.0
conda-libmamba-solver==24.1.0
conda-pack==0.6.0
conda-package-handling==2.2.0
conda_package_streaming==0.9.0
conda-repo-cli==1.0.75
conda-token==0.4.0
conda-verify==3.4.2
constantly==23.10.4
contourpy==1.2.0
cookiecutter==2.5.0
cryptography==42.0.2
cssselect==1.2.0
cycler==0.11.0
cytoolz==0.12.2
dask==2023.11.0
datashader==0.16.0
debugpy==1.6.7
decorator==5.1.1
defusedxml==0.7.1
Deprecated==1.2.14
diff-match-patch==20200713
dill==0.3.7
distributed==2023.11.0
distro==1.8.0
docstring-to-markdown==0.11
docutils==0.18.1
ensure==1.0.4
entrypoints==0.4
et-xmlfile==1.1.0
executing==0.8.3
fast-oad==1.7.1
fast-oad-core==1.7.1
fast-oad-cs25==0.5.0
fastjsonschema==2.16.2
filelock==3.13.1
flake8==6.0.0
Flask==2.2.5
fonttools==4.25.0
fqdn==1.5.1
frozenlist==1.4.0
fsspec==2023.10.0
future==0.18.3
gensim==4.3.0
gitdb==4.0.7
GitPython==3.1.37
gmpy2==2.1.2
greenlet==3.0.1
h5py==3.9.0
HeapDict==1.0.1
holoviews==1.18.3
hvplot==0.9.2
hyperlink==21.0.0
idna==3.4
imagecodecs==2023.1.23
imageio==2.33.1
imagesize==1.4.1
imbalanced-learn==0.11.0
importlib-metadata==7.0.1
incremental==22.10.0
inflection==0.5.1
iniconfig==1.1.1
intake==0.6.8
intervaltree==3.1.0
iPOPO==1.0.2
ipykernel==6.28.0
ipysheet==0.7.0
ipython==8.20.0
ipython-genutils==0.2.0
ipywidgets==7.8.1
isoduration==20.11.0
isort==5.9.3
itemadapter==0.3.0
itemloaders==1.1.0
itsdangerous==2.0.1
jaraco.classes==3.2.1
jedi==0.18.1
jellyfish==1.0.1
Jinja2==3.1.3
jmespath==1.0.1
joblib==1.2.0
json5==0.9.6
jsonpatch==1.32
jsonpointer==2.1
jsonrpclib-pelix==0.4.3.2
jsonschema==4.19.2
jsonschema-specifications==2023.7.1
jupyter==1.0.0
jupyter_client==7.4.9
jupyter-console==6.6.3
jupyter_core==5.5.0
jupyter-events==0.8.0
jupyter-lsp==2.2.0
jupyter_server==2.10.0
jupyter_server_fileid==0.9.1
jupyter_server_terminals==0.4.4
jupyter_server_ydoc==0.8.0
jupyter-ydoc==0.2.5
jupyterlab==3.6.7
jupyterlab-pygments==0.1.2
jupyterlab_server==2.25.1
jupyterlab-widgets==1.1.7
keyring==23.13.1
kiwisolver==1.4.4
lazy_loader==0.3
lazy-object-proxy==1.6.0
lckr_jupyterlab_variableinspector==3.1.0
libarchive-c==2.9
libmambapy==1.5.6
linkify-it-py==2.0.0
llvmlite==0.42.0
lmdb==1.4.1
locket==1.0.0
lxml==4.9.3
lz4==4.3.2
Markdown==3.4.1
markdown-it-py==2.2.0
MarkupSafe==2.1.3
matplotlib==3.8.0
matplotlib-inline==0.1.6
mccabe==0.7.0
mdit-py-plugins==0.3.0
mdurl==0.1.0
menuinst==2.0.2
mistune==2.0.4
mkl-fft==1.3.8
mkl-random==1.2.4
mkl-service==2.4.0
more-itertools==10.1.0
mpmath==1.3.0
msgpack==1.0.3
multidict==6.0.4
multipledispatch==0.6.0
munkres==1.1.4
mypy==1.8.0
mypy-extensions==1.0.0
navigator-updater==0.4.0
nbclassic==1.0.0
nbclient==0.8.0
nbconvert==7.10.0
nbformat==5.9.2
nest-asyncio==1.6.0
networkx==3.1
nltk==3.8.1
notebook==6.5.6
notebook_shim==0.2.3
numba==0.59.0
numexpr==2.8.7
numpy==1.26.4
numpydoc==1.5.0
openmdao==3.31.1
openmdao-extensions==1.3.1
openpyxl==3.0.10
overrides==7.4.0
packaging==23.1
pandas==1.5.3
pandocfilters==1.5.0
panel==1.3.8
param==2.0.2
paramiko==2.8.1
parsel==1.8.1
parso==0.8.3
partd==1.4.1
pathlib==1.0.1
pathspec==0.10.3
patsy==0.5.3
pexpect==4.8.0
pickleshare==0.7.5
pillow==10.2.0
pip==23.3.1
pkce==1.0.3
pkginfo==1.9.6
platformdirs==3.10.0
plotly==5.9.0
pluggy==1.0.0
ply==3.11
prometheus-client==0.14.1
prompt-toolkit==3.0.43
Protego==0.1.16
protobuf==3.20.3
psutil==5.9.0
ptyprocess==0.7.0
pure-eval==0.2.2
py-cpuinfo==9.0.0
pyarrow==14.0.2
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycodestyle==2.10.0
pycosat==0.6.6
pycparser==2.21
pyct==0.5.0
pycurl==7.45.2
pydantic==1.10.12
pydeck==0.8.0
PyDispatcher==2.0.5
pydocstyle==6.3.0
pyDOE2==1.3.0
pyerfa==2.0.0
pyflakes==3.0.1
Pygments==2.15.1
PyJWT==2.4.0
pylint==2.16.2
pylint-venv==2.3.0
pyls-spyder==0.4.0
PyNaCl==1.5.0
pyodbc==5.0.1
pyOpenSSL==24.0.0
pyparsing==3.0.9
pyproject_hooks==1.0.0
PyQt5==5.15.10
PyQt5-sip==12.13.0
PyQtWebEngine==5.15.6
PySocks==1.7.1
pytest==7.4.0
python-dateutil==2.8.2
python-dotenv==0.21.0
python-json-logger==2.0.7
python-lsp-black==1.2.1
python-lsp-jsonrpc==1.0.0
python-lsp-server==1.7.2
python-slugify==5.0.2
python-snappy==0.6.1
pytoolconfig==1.2.6
pytz==2023.3.post1
pyviz_comms==3.0.0
pywavelets==1.5.0
pywin32==305.1
pywin32-ctypes==0.2.0
pywinpty==2.0.10
PyYAML==6.0.1
pyzmq==24.0.1
QDarkStyle==3.0.2
qstylizer==0.2.2
QtAwesome==1.2.2
qtconsole==5.4.2
QtPy==2.4.1
queuelib==1.6.2
referencing==0.30.2
regex==2023.10.3
requests==2.31.0
requests-file==1.5.1
requests-toolbelt==1.0.0
rfc3339-validator==0.1.4
rfc3986-validator==0.1.1
rich==13.3.5
rope==1.7.0
rpds-py==0.10.6
Rtree==1.0.1
ruamel.yaml==0.17.21
ruamel-yaml-conda==0.17.21
s3fs==2023.10.0
scikit-image==0.22.0
scikit-learn==1.2.2
scipy==1.11.4
Scrapy==2.8.0
seaborn==0.12.2
semver==2.13.0
Send2Trash==1.8.2
service-identity==18.1.0
setuptools==68.2.2
sip==6.7.12
six==1.16.0
smart-open==5.2.1
smmap==4.0.0
sniffio==1.3.0
snowballstemmer==2.2.0
sortedcontainers==2.4.0
soupsieve==2.5
Sphinx==5.0.2
sphinxcontrib-applehelp==1.0.2
sphinxcontrib-devhelp==1.0.2
sphinxcontrib-htmlhelp==2.0.0
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializinghtml==1.1.5
spyder==5.4.3
spyder-kernels==2.4.4
SQLAlchemy==2.0.25
stack-data==0.2.0
statsmodels==0.14.0
stdatm==0.4.2
streamlit==1.30.0
sympy==1.12
tables==3.9.2
tabulate==0.9.0
tblib==1.7.0
tenacity==8.2.2
terminado==0.17.1
text-unidecode==1.3
textdistance==4.2.1
threadpoolctl==2.2.0
three-merge==0.1.1
tifffile==2023.4.12
tinycss2==1.2.1
tldextract==3.2.0
toml==0.10.2
tomli==2.0.1
tomli_w==1.0.0
tomlkit==0.11.1
toolz==0.12.0
tornado==6.3.3
tqdm==4.65.0
traitlets==5.7.1
truststore==0.8.0
Twisted==23.10.0
twisted-iocpsupport==1.0.2
typing_extensions==4.9.0
tzdata==2023.3
tzlocal==2.1
uc-micro-py==1.0.1
ujson==5.4.0
Unidecode==1.2.0
uri-template==1.3.0
urllib3==2.0.7
validators==0.18.2
w3lib==2.1.2
watchdog==2.1.6
wcwidth==0.2.5
webcolors==1.13
webencodings==0.5.1
websocket-client==0.58.0
Werkzeug==2.2.3
whatthepatch==1.0.2
wheel==0.41.2
widgetsnbextension==3.6.6
win-inet-pton==1.1.0
wop==2.5.5
wrapt==1.14.1
xarray==2023.6.0
xdsmjs==2.0.0
xlwings==0.29.1
xyzservices==2022.9.0
y-py==0.6.2
yapf==0.31.0
yarl==1.9.3
ypy-websocket==0.8.4
zict==3.0.0
zipp==3.17.0
zope.interface==5.4.0
zstandard==0.19.0

**Additional context**
I'm not super familiar with Python, so excuse any obvious mistakes/errors.
christophe-david commented 1 month ago

Hello, sorry for answering this late. The first thing I can mention is that compatibility of FAST-OAD with Python 3.11 will come, but is not there yet. Therefore I would suggest to try again with a Python 3.10 environment and see if the problem persists. Please keep us informed.

christophe-david commented 1 week ago

Next update of FAST-OAD will be compatible with Python 3.11, and it is confirmed that the error message reported here was due to this incompatibility. Closing the issue.