pyBADA 0.1.3__tar.gz → 0.1.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. pybada-0.1.5/.github/workflows/lint.yml +35 -0
  2. pybada-0.1.5/.pre-commit-config.yaml +9 -0
  3. {pybada-0.1.3 → pybada-0.1.5}/PKG-INFO +16 -7
  4. {pybada-0.1.3 → pybada-0.1.5}/README.md +12 -2
  5. {pybada-0.1.3 → pybada-0.1.5}/docs/source/_static/css/custom.css +12 -0
  6. {pybada-0.1.3 → pybada-0.1.5}/examples/ac_trajectory.py +0 -1
  7. {pybada-0.1.3 → pybada-0.1.5}/examples/ac_trajectory_GPS.py +0 -3
  8. {pybada-0.1.3 → pybada-0.1.5}/examples/geodesic.py +1 -2
  9. {pybada-0.1.3 → pybada-0.1.5}/examples/heli_trajectory.py +0 -2
  10. {pybada-0.1.3 → pybada-0.1.5}/examples/initial_mass.py +8 -10
  11. {pybada-0.1.3 → pybada-0.1.5}/examples/optimum_speed_altitude.py +0 -2
  12. {pybada-0.1.3 → pybada-0.1.5}/pyproject.toml +27 -22
  13. {pybada-0.1.3 → pybada-0.1.5}/src/pyBADA/TCL.py +56 -49
  14. {pybada-0.1.3 → pybada-0.1.5}/src/pyBADA/aircraft.py +39 -40
  15. {pybada-0.1.3 → pybada-0.1.5}/src/pyBADA/atmosphere.py +79 -72
  16. {pybada-0.1.3 → pybada-0.1.5}/src/pyBADA/bada3.py +271 -245
  17. {pybada-0.1.3 → pybada-0.1.5}/src/pyBADA/bada4.py +460 -337
  18. {pybada-0.1.3 → pybada-0.1.5}/src/pyBADA/badaH.py +338 -239
  19. {pybada-0.1.3 → pybada-0.1.5}/src/pyBADA/configuration.py +31 -21
  20. {pybada-0.1.3 → pybada-0.1.5}/src/pyBADA/constants.py +0 -1
  21. {pybada-0.1.3 → pybada-0.1.5}/src/pyBADA/conversions.py +11 -23
  22. {pybada-0.1.3 → pybada-0.1.5}/src/pyBADA/flightTrajectory.py +95 -63
  23. {pybada-0.1.3 → pybada-0.1.5}/src/pyBADA/geodesic.py +119 -82
  24. {pybada-0.1.3 → pybada-0.1.5}/src/pyBADA/magnetic.py +12 -7
  25. {pybada-0.1.3 → pybada-0.1.5}/src/pyBADA/trajectoryPrediction.py +17 -13
  26. {pybada-0.1.3 → pybada-0.1.5}/tests/load_test.py +0 -1
  27. pybada-0.1.3/.pre-commit-config.yaml +0 -6
  28. {pybada-0.1.3 → pybada-0.1.5}/.github/workflows/pytest.yml +0 -0
  29. {pybada-0.1.3 → pybada-0.1.5}/.github/workflows/release.yml +0 -0
  30. {pybada-0.1.3 → pybada-0.1.5}/.github/workflows/sphinx.yml +0 -0
  31. {pybada-0.1.3 → pybada-0.1.5}/.gitignore +0 -0
  32. {pybada-0.1.3 → pybada-0.1.5}/AUTHORS +0 -0
  33. {pybada-0.1.3 → pybada-0.1.5}/LICENCE.txt +0 -0
  34. {pybada-0.1.3 → pybada-0.1.5}/docs/Makefile +0 -0
  35. {pybada-0.1.3 → pybada-0.1.5}/docs/source/API_reference/TCL.rst +0 -0
  36. {pybada-0.1.3 → pybada-0.1.5}/docs/source/API_reference/aircraft.rst +0 -0
  37. {pybada-0.1.3 → pybada-0.1.5}/docs/source/API_reference/atmosphere.rst +0 -0
  38. {pybada-0.1.3 → pybada-0.1.5}/docs/source/API_reference/bada3.rst +0 -0
  39. {pybada-0.1.3 → pybada-0.1.5}/docs/source/API_reference/bada4.rst +0 -0
  40. {pybada-0.1.3 → pybada-0.1.5}/docs/source/API_reference/badaH.rst +0 -0
  41. {pybada-0.1.3 → pybada-0.1.5}/docs/source/API_reference/configuration.rst +0 -0
  42. {pybada-0.1.3 → pybada-0.1.5}/docs/source/API_reference/constants.rst +0 -0
  43. {pybada-0.1.3 → pybada-0.1.5}/docs/source/API_reference/conversions.rst +0 -0
  44. {pybada-0.1.3 → pybada-0.1.5}/docs/source/API_reference/flightTrajectory.rst +0 -0
  45. {pybada-0.1.3 → pybada-0.1.5}/docs/source/API_reference/geodesic.rst +0 -0
  46. {pybada-0.1.3 → pybada-0.1.5}/docs/source/API_reference/magnetic.rst +0 -0
  47. {pybada-0.1.3 → pybada-0.1.5}/docs/source/API_reference/trajectoryPrediction.rst +0 -0
  48. {pybada-0.1.3 → pybada-0.1.5}/docs/source/_static/default_thumbnail.png +0 -0
  49. {pybada-0.1.3 → pybada-0.1.5}/docs/source/_static/pyBADA_architecture.png +0 -0
  50. {pybada-0.1.3 → pybada-0.1.5}/docs/source/_templates/footer.html +0 -0
  51. {pybada-0.1.3 → pybada-0.1.5}/docs/source/architecture.rst +0 -0
  52. {pybada-0.1.3 → pybada-0.1.5}/docs/source/conf.py +0 -0
  53. {pybada-0.1.3 → pybada-0.1.5}/docs/source/getting-started.rst +0 -0
  54. {pybada-0.1.3 → pybada-0.1.5}/docs/source/history.rst +0 -0
  55. {pybada-0.1.3 → pybada-0.1.5}/docs/source/index.rst +0 -0
  56. {pybada-0.1.3 → pybada-0.1.5}/docs/source/pyBADA.rst +0 -0
  57. {pybada-0.1.3 → pybada-0.1.5}/docs/source/userManual.rst +0 -0
  58. {pybada-0.1.3 → pybada-0.1.5}/docs/source/user_manual/examples.rst +0 -0
  59. {pybada-0.1.3 → pybada-0.1.5}/docs/source/user_manual/introduction.rst +0 -0
  60. {pybada-0.1.3 → pybada-0.1.5}/examples/BADAData.py +0 -0
  61. {pybada-0.1.3 → pybada-0.1.5}/examples/GALLERY_HEADER.rst +0 -0
  62. {pybada-0.1.3 → pybada-0.1.5}/examples/file_parser.py +0 -0
  63. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/BADA.GPF +0 -0
  64. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/BZJT__.APF +0 -0
  65. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/BZJT__.OPF +0 -0
  66. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/BZJT__.PTD +0 -0
  67. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/BZJT__.PTF +0 -0
  68. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/GA____.APF +0 -0
  69. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/GA____.OPF +0 -0
  70. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/GA____.PTD +0 -0
  71. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/GA____.PTF +0 -0
  72. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/J2H___.APF +0 -0
  73. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/J2H___.OPF +0 -0
  74. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/J2H___.PTD +0 -0
  75. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/J2H___.PTF +0 -0
  76. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/J2M___.APF +0 -0
  77. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/J2M___.OPF +0 -0
  78. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/J2M___.PTD +0 -0
  79. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/J2M___.PTF +0 -0
  80. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/J4H___.APF +0 -0
  81. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/J4H___.OPF +0 -0
  82. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/J4H___.PTD +0 -0
  83. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/J4H___.PTF +0 -0
  84. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/ReleaseSummary +0 -0
  85. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/SYNONYM.NEW +0 -0
  86. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/TP2M__.APF +0 -0
  87. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/TP2M__.OPF +0 -0
  88. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/TP2M__.PTD +0 -0
  89. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA3/DUMMY/TP2M__.PTF +0 -0
  90. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/ACM_BADA4.xsd +0 -0
  91. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST.ATF +0 -0
  92. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST.xml +0 -0
  93. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA+20.PTD +0 -0
  94. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA+20.PTF +0 -0
  95. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA.PTD +0 -0
  96. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA.PTF +0 -0
  97. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP.ATF +0 -0
  98. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP.xml +0 -0
  99. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA+20.PTD +0 -0
  100. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA+20.PTF +0 -0
  101. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA.PTD +0 -0
  102. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA.PTF +0 -0
  103. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TBP/LRC.OPT +0 -0
  104. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TBP/MEC.OPT +0 -0
  105. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TBP/MRC.OPT +0 -0
  106. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TBP/OPTALT.OPT +0 -0
  107. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN.ATF +0 -0
  108. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN.xml +0 -0
  109. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA+20.PTD +0 -0
  110. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA+20.PTF +0 -0
  111. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA.PTD +0 -0
  112. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA.PTF +0 -0
  113. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/ECON.OPT +0 -0
  114. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/LRC.OPT +0 -0
  115. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/MEC.OPT +0 -0
  116. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/MRC.OPT +0 -0
  117. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TWIN/OPTALT.OPT +0 -0
  118. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus.ATF +0 -0
  119. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus.xml +0 -0
  120. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA+20.PTD +0 -0
  121. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA+20.PTF +0 -0
  122. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA.PTD +0 -0
  123. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA.PTF +0 -0
  124. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/ECON.OPT +0 -0
  125. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/LRC.OPT +0 -0
  126. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/MEC.OPT +0 -0
  127. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/MRC.OPT +0 -0
  128. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/OPTALT.OPT +0 -0
  129. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/GPF.xml +0 -0
  130. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADA4/DUMMY/GPF_BADA4.xsd +0 -0
  131. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADAH/DUMMY/DUMH/DUMH.ATF +0 -0
  132. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADAH/DUMMY/DUMH/DUMH.xml +0 -0
  133. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA+20.PTD +0 -0
  134. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA+20.PTF +0 -0
  135. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA.PTD +0 -0
  136. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA.PTF +0 -0
  137. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADAH/DUMMY/DUMH/LRC.OPT +0 -0
  138. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADAH/DUMMY/DUMH/MEC.OPT +0 -0
  139. {pybada-0.1.3 → pybada-0.1.5}/src/aircraft/BADAH/DUMMY/DUMH/MRC.OPT +0 -0
  140. {pybada-0.1.3 → pybada-0.1.5}/src/data/magneticDeclinationGridData.json +0 -0
  141. {pybada-0.1.3 → pybada-0.1.5}/src/pyBADA/__init__.py +0 -0
@@ -0,0 +1,35 @@
1
+ name: Run linters
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches:
7
+ - main
8
+
9
+ jobs:
10
+ test:
11
+ name: Lint code
12
+ runs-on: ubuntu-latest
13
+
14
+ steps:
15
+ - name: Checkout repository
16
+ uses: actions/checkout@v3
17
+
18
+ - name: Set up Python
19
+ uses: actions/setup-python@v4
20
+ with:
21
+ python-version: "3.12"
22
+
23
+ - name: Install dependencies
24
+ run: |
25
+ python -m pip install --upgrade pip
26
+ pip install .
27
+ pip install .[dev]
28
+
29
+ - name: Run Ruff lint
30
+ run: ruff check --output-format=github .
31
+
32
+ - name: Run Ruff format
33
+ run: ruff format --check .
34
+
35
+
@@ -0,0 +1,9 @@
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ # Ruff version.
4
+ rev: v0.11.5
5
+ hooks:
6
+ # Run the linter.
7
+ - id: ruff
8
+ # Run the formatter.
9
+ - id: ruff-format
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyBADA
3
- Version: 0.1.3
4
- Summary: pyBADA
3
+ Version: 0.1.5
4
+ Summary: Aircraft performance modelling, trajectory prediction and optimisation, and visualisation with EUROCONTROL's BADA.
5
5
  Project-URL: Homepage, https://github.com/eurocontrol-bada/pybada
6
- Author-email: Henrich Glaser-Opitz <henrich.glaser-opitz@eurocontrol.int>
6
+ Author-email: Henrich Glaser-Opitz <henrich.glaser-opitz@eurocontrol.int>, Antonio Vivace <antonio.vivace@eurocontrol.int>
7
7
  License: EUPL-1.2
8
8
  License-File: AUTHORS
9
9
  License-File: LICENCE.txt
@@ -16,14 +16,13 @@ Requires-Dist: scipy>=1.15.2
16
16
  Requires-Dist: simplekml>=1.3.6
17
17
  Requires-Dist: xlsxwriter>=3.2.2
18
18
  Provides-Extra: dev
19
- Requires-Dist: black==25.1.0; extra == 'dev'
20
19
  Requires-Dist: build; extra == 'dev'
21
- Requires-Dist: flake8==7.1.2; extra == 'dev'
22
20
  Requires-Dist: folium==0.19.5; extra == 'dev'
23
21
  Requires-Dist: matplotlib==3.10.1; extra == 'dev'
24
22
  Requires-Dist: pre-commit==4.1.0; extra == 'dev'
25
23
  Requires-Dist: pytest==8.3.5; extra == 'dev'
26
24
  Requires-Dist: readthedocs-sphinx-search>=0.3.2; extra == 'dev'
25
+ Requires-Dist: ruff==0.11.5; extra == 'dev'
27
26
  Requires-Dist: sphinx-gallery==0.19.0; extra == 'dev'
28
27
  Requires-Dist: sphinx-rtd-theme==3.0.2; extra == 'dev'
29
28
  Requires-Dist: sphinx==8.2.3; extra == 'dev'
@@ -32,6 +31,7 @@ Description-Content-Type: text/markdown
32
31
 
33
32
  # pyBADA
34
33
 
34
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
35
35
  <a href="https://github.com/eurocontrol-bada/pybada/blob/main/LICENCE.txt"><img alt="License: EUPL" src="https://img.shields.io/badge/license-EUPL-3785D1.svg"></a>
36
36
  <a href="https://pypi.org/project/pyBADA"><img alt="Released on PyPi" src="https://img.shields.io/pypi/v/pyBADA.svg"></a>
37
37
  ![Python 3.12](https://img.shields.io/badge/Python-3.12-3776AB.svg?logo=python&logoColor=white)
@@ -54,7 +54,7 @@ Examples, the user manual and the API reference can be found at the [pyBADA docu
54
54
  # Clone the repository
55
55
  git clone https://github.com/eurocontrol-bada/pybada
56
56
 
57
- # Optionally, set up a virtual env and activate it
57
+ # Set up a virtual env and activate it
58
58
  python3 -m venv env
59
59
  source env/bin/activate
60
60
 
@@ -62,9 +62,18 @@ source env/bin/activate
62
62
  pip install .
63
63
  # Install a couple of packages for formatting, linting and building the docs
64
64
  pip install .[dev]
65
+ # Install pre-commit
66
+ pre-commit install
65
67
 
66
68
  # Run unit tests
67
69
  python3 -m pytest tests/
70
+
71
+ # Format code
72
+ ruff format
73
+
74
+ # Lint code
75
+ ruff check
76
+
68
77
  # Build the docs
69
78
  cd docs
70
79
  make html
@@ -78,6 +87,6 @@ You won't receive support for it, but you can pass the flag `--ignore-requires-p
78
87
 
79
88
  ## License
80
89
 
81
- BADA and pyBADA are developed and maintained by [EUROCONTROL](https://www.eurocontrol.int/).
90
+ BADA and pyBADA are developed and maintained by [EUROCONTROL](https://www.eurocontrol.int/model/bada).
82
91
 
83
92
  This project is released under the European Union Public License v1.2 - see the [LICENSE](https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12) file for details.
@@ -1,5 +1,6 @@
1
1
  # pyBADA
2
2
 
3
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
3
4
  <a href="https://github.com/eurocontrol-bada/pybada/blob/main/LICENCE.txt"><img alt="License: EUPL" src="https://img.shields.io/badge/license-EUPL-3785D1.svg"></a>
4
5
  <a href="https://pypi.org/project/pyBADA"><img alt="Released on PyPi" src="https://img.shields.io/pypi/v/pyBADA.svg"></a>
5
6
  ![Python 3.12](https://img.shields.io/badge/Python-3.12-3776AB.svg?logo=python&logoColor=white)
@@ -22,7 +23,7 @@ Examples, the user manual and the API reference can be found at the [pyBADA docu
22
23
  # Clone the repository
23
24
  git clone https://github.com/eurocontrol-bada/pybada
24
25
 
25
- # Optionally, set up a virtual env and activate it
26
+ # Set up a virtual env and activate it
26
27
  python3 -m venv env
27
28
  source env/bin/activate
28
29
 
@@ -30,9 +31,18 @@ source env/bin/activate
30
31
  pip install .
31
32
  # Install a couple of packages for formatting, linting and building the docs
32
33
  pip install .[dev]
34
+ # Install pre-commit
35
+ pre-commit install
33
36
 
34
37
  # Run unit tests
35
38
  python3 -m pytest tests/
39
+
40
+ # Format code
41
+ ruff format
42
+
43
+ # Lint code
44
+ ruff check
45
+
36
46
  # Build the docs
37
47
  cd docs
38
48
  make html
@@ -46,6 +56,6 @@ You won't receive support for it, but you can pass the flag `--ignore-requires-p
46
56
 
47
57
  ## License
48
58
 
49
- BADA and pyBADA are developed and maintained by [EUROCONTROL](https://www.eurocontrol.int/).
59
+ BADA and pyBADA are developed and maintained by [EUROCONTROL](https://www.eurocontrol.int/model/bada).
50
60
 
51
61
  This project is released under the European Union Public License v1.2 - see the [LICENSE](https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12) file for details.
@@ -12,4 +12,16 @@
12
12
  background-image: linear-gradient(150deg,#004B8D 0%,#2990EA 100%);
13
13
  padding-top: 2em;
14
14
  padding-bottom: 2.5em;
15
+ }
16
+
17
+ code {
18
+ font-size: 100%;
19
+ }
20
+
21
+ .highlight pre {
22
+ font-size: 14px !important;
23
+ }
24
+
25
+ .rst-content code, .rst-content tt, code {
26
+ font-size: 90%;
15
27
  }
@@ -16,7 +16,6 @@ from pyBADA.flightTrajectory import FlightTrajectory as FT
16
16
  from pyBADA.bada3 import Bada3Aircraft
17
17
  from pyBADA.bada4 import Bada4Aircraft
18
18
  from pyBADA.bada4 import Parser as Bada4Parser
19
- from pyBADA.bada3 import Parser as Bada3Parser
20
19
 
21
20
 
22
21
  @dataclass
@@ -7,7 +7,6 @@ Example of BADA3 and BADA4 trajectory including geodesic calculations using TCL
7
7
 
8
8
  from dataclasses import dataclass
9
9
  import matplotlib.pyplot as plt
10
- import os
11
10
 
12
11
  from pyBADA import atmosphere as atm
13
12
  from pyBADA import conversions as conv
@@ -15,10 +14,8 @@ from pyBADA import TCL as TCL
15
14
  from pyBADA.flightTrajectory import FlightTrajectory as FT
16
15
  from pyBADA.magnetic import Grid
17
16
 
18
- from pyBADA.bada3 import Bada3Aircraft
19
17
  from pyBADA.bada4 import Bada4Aircraft
20
18
  from pyBADA.bada4 import Parser as Bada4Parser
21
- from pyBADA.bada3 import Parser as Bada3Parser
22
19
 
23
20
 
24
21
  @dataclass
@@ -2,14 +2,13 @@
2
2
  Geodesic Calculation
3
3
  ====================
4
4
 
5
- Example of using the geodesic module and comparision
5
+ Example of using the geodesic module and comparision
6
6
  between Haversine and Vincenty implementation
7
7
 
8
8
  """
9
9
 
10
10
  import folium
11
11
 
12
- from pyBADA import conversions as conv
13
12
  from pyBADA import geodesic as geo
14
13
 
15
14
 
@@ -9,8 +9,6 @@ from math import tan, pi
9
9
  from dataclasses import dataclass
10
10
  import matplotlib.pyplot as plt
11
11
 
12
- from pyBADA import atmosphere as atm
13
- from pyBADA import conversions as conv
14
12
  from pyBADA import constants as const
15
13
  from pyBADA import TCL as TCL
16
14
  from pyBADA.flightTrajectory import FlightTrajectory as FT
@@ -13,16 +13,15 @@ from pyBADA import conversions as conv
13
13
 
14
14
 
15
15
  # calculate estimations for the fuel flow, and aircraft initial mass
16
- AC = Bada3Aircraft(badaVersion='DUMMY', acName="J2M")
16
+ AC = Bada3Aircraft(badaVersion="DUMMY", acName="J2M")
17
17
 
18
-
19
- deltaTemp = 0 # deviation from ISA temperature [K or deg C]
20
- M = 0.7 # Mach number [-]
21
- altitude = conv.ft2m(30000) # cruise altitude[m]
22
- distance = conv.nm2m(100) # flown distance [NM]
23
- payload = 80 # payload mass [% of the maximum payload mass]
24
- fuelReserve = 3600 # reserve of the fuel [s]
25
- flightPlanInitialMass = None # planned initial/takeoff mass [kg]
18
+ deltaTemp = 0 # deviation from ISA temperature [K or deg C]
19
+ M = 0.7 # Mach number [-]
20
+ altitude = conv.ft2m(30000) # cruise altitude[m]
21
+ distance = conv.nm2m(100) # flown distance [NM]
22
+ payload = 80 # payload mass [% of the maximum payload mass]
23
+ fuelReserve = 3600 # reserve of the fuel [s]
24
+ flightPlanInitialMass = None # planned initial/takeoff mass [kg]
26
25
 
27
26
  # fuel flow in cruise
28
27
  cruiseFuelFlow = TP.cruiseFuelConsumption(
@@ -61,4 +60,3 @@ initMass = TP.getInitialMass(
61
60
  print(f"cruiseFuelFlow: {cruiseFuelFlow} [kg/s]")
62
61
  print(f"breguetLeducInitialMass: {breguetLeducInitialMass} [kg]")
63
62
  print(f"initMass: {initMass} [kg]")
64
-
@@ -10,8 +10,6 @@ from pyBADA import conversions as conv
10
10
 
11
11
  from pyBADA.bada4 import Bada4Aircraft
12
12
  from pyBADA.badaH import BadaHAircraft
13
- from pyBADA.bada4 import Parser as Bada4Parser
14
- from pyBADA.badaH import Parser as BadaHParser
15
13
 
16
14
  badaVersion = "DUMMY"
17
15
 
@@ -4,11 +4,12 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "pyBADA"
7
- version = "0.1.3"
7
+ version = "0.1.5"
8
8
  authors = [
9
- { name="Henrich Glaser-Opitz", email="henrich.glaser-opitz@eurocontrol.int" }
9
+ { name="Henrich Glaser-Opitz", email="henrich.glaser-opitz@eurocontrol.int" },
10
+ { name="Antonio Vivace", email="antonio.vivace@eurocontrol.int" }
10
11
  ]
11
- description = "pyBADA"
12
+ description = "Aircraft performance modelling, trajectory prediction and optimisation, and visualisation with EUROCONTROL's BADA."
12
13
  readme = "README.md"
13
14
  requires-python = ">=3.12"
14
15
  classifiers = [
@@ -27,8 +28,7 @@ license = { text = "EUPL-1.2" }
27
28
  # Some additional deps not needed to run the package but to develop on it
28
29
  # linter, formatter, to build the docs, ..
29
30
  [project.optional-dependencies]
30
- dev = ["black==25.1.0",
31
- "flake8==7.1.2",
31
+ dev = [
32
32
  "sphinx-rtd-theme==3.0.2",
33
33
  "Sphinx==8.2.3",
34
34
  "pre-commit==4.1.0",
@@ -38,29 +38,34 @@ dev = ["black==25.1.0",
38
38
  "pytest==8.3.5",
39
39
  "build",
40
40
  "twine",
41
- "readthedocs-sphinx-search>=0.3.2"
41
+ "readthedocs-sphinx-search>=0.3.2",
42
+ "ruff==0.11.5",
42
43
  ]
43
44
 
44
45
  [project.urls]
45
46
  "Homepage" = "https://github.com/eurocontrol-bada/pybada"
46
47
 
47
- [tool.black]
48
- target-version = ['py312']
48
+ [tool.ruff.format]
49
+ docstring-code-format = true
50
+
51
+ [tool.ruff]
52
+ target-version = 'py312'
49
53
  line-length = 79
50
- include = '\.pyi?$'
51
- exclude = '''
52
- /(
53
- \.git
54
- | \.hg
55
- | \.mypy_cache
56
- | \.tox
57
- | \.venv
58
- | _build
59
- | buck-out
60
- | docs
61
- | dist
62
- )/
63
- '''
54
+ exclude = [
55
+ ".git",
56
+ ".hg",
57
+ ".mypy_cache",
58
+ ".tox",
59
+ ".venv",
60
+ "_build",
61
+ "buck-out",
62
+ "docs",
63
+ "dist",
64
+ ]
65
+
66
+ [tool.ruff.lint]
67
+ select = ["E", "F401"]
68
+ ignore = ["E501"]
64
69
 
65
70
  [tool.hatch.build.targets.wheel]
66
71
  packages = ["src/pyBADA"]
@@ -1,16 +1,12 @@
1
- # -*- coding: utf-8 -*-
2
- """
3
- Trajectory Computation Light (TCL) for BADAH/BADAE/BADA3/BADA4 aircraft performance module
4
- """
1
+ """Trajectory Computation Light (TCL) for BADAH/BADAE/BADA3/BADA4 aircraft
2
+ performance module."""
5
3
 
6
- import os
7
4
  import numpy as np
8
5
  from pyBADA.geodesic import Vincenty as vincenty
9
6
  from pyBADA.geodesic import RhumbLine as rhumb
10
7
  from pyBADA.geodesic import Turn as turn
11
8
 
12
9
  from dataclasses import dataclass
13
- import importlib.util
14
10
  import itertools
15
11
  import warnings
16
12
 
@@ -57,10 +53,9 @@ def constantSpeedLevel(
57
53
  magneticDeclinationGrid=None,
58
54
  **kwargs,
59
55
  ):
60
- """
61
- Calculates the time, fuel consumption, and other parameters for a level flight
62
- segment at a constant speed for a given aircraft in the BADA model. It supports step-climb,
63
- constant heading (true or magnetic), and turns.
56
+ """Calculates the time, fuel consumption, and other parameters for a level
57
+ flight segment at a constant speed for a given aircraft in the BADA model.
58
+ It supports step-climb, constant heading (true or magnetic), and turns.
64
59
 
65
60
  The function handles different BADA families (BADA3, BADA4, BADAH, BADAE), and computes various
66
61
  parameters such as altitude, speed, fuel consumption, power, heading, and mass based on aircraft
@@ -176,7 +171,7 @@ def constantSpeedLevel(
176
171
  magneticHeading = trueHeading - magneticDeclination
177
172
  elif magneticHeading is not None and trueHeading is None:
178
173
  # fly MAGNETIC Heading
179
- if constantHeading == True:
174
+ if constantHeading is True:
180
175
  headingToFly = "MAGNETIC"
181
176
  trueHeading = magneticHeading + magneticDeclination
182
177
  else:
@@ -536,7 +531,6 @@ def constantSpeedLevel(
536
531
  and Lon_i is not None
537
532
  and (HDGMagnetic_i is not None or HDGTrue is not None)
538
533
  ):
539
-
540
534
  if headingToFly == "TRUE":
541
535
  if not turnFlight:
542
536
  if not constantHeading:
@@ -1190,9 +1184,10 @@ def constantSpeedROCD(
1190
1184
  magneticDeclinationGrid=None,
1191
1185
  **kwargs,
1192
1186
  ):
1193
- """
1194
- Computes the time, fuel consumption, and other parameters required for an aircraft to climb or descend
1195
- from a given initial altitude (Hp_init) to a final altitude (Hp_final) at a constant speed and rate of climb/descent (ROCD).
1187
+ """Computes the time, fuel consumption, and other parameters required for
1188
+ an aircraft to climb or descend from a given initial altitude (Hp_init) to
1189
+ a final altitude (Hp_final) at a constant speed and rate of climb/descent
1190
+ (ROCD).
1196
1191
 
1197
1192
  The function handles multiple BADA families (BADA3, BADA4, BADAH, BADAE), computing various parameters
1198
1193
  such as altitude, speed, fuel consumption, power, heading, and mass based on the aircraft's performance
@@ -1309,7 +1304,7 @@ def constantSpeedROCD(
1309
1304
  magneticHeading = trueHeading - magneticDeclination
1310
1305
  elif magneticHeading is not None and trueHeading is None:
1311
1306
  # fly MAGNETIC Heading
1312
- if constantHeading == True:
1307
+ if constantHeading is True:
1313
1308
  headingToFly = "MAGNETIC"
1314
1309
  trueHeading = magneticHeading + magneticDeclination
1315
1310
  else:
@@ -2229,10 +2224,10 @@ def constantSpeedROCD_time(
2229
2224
  magneticDeclinationGrid=None,
2230
2225
  **kwargs,
2231
2226
  ):
2232
- """
2233
- Computes the time, fuel consumption, and performance parameters required for an aircraft to
2234
- perform a climb or descent based on a set amount of time, while maintaining a constant speed and constant
2235
- rate of climb/descent (ROCD).
2227
+ """Computes the time, fuel consumption, and performance parameters
2228
+ required for an aircraft to perform a climb or descent based on a set
2229
+ amount of time, while maintaining a constant speed and constant rate of
2230
+ climb/descent (ROCD).
2236
2231
 
2237
2232
  The function supports various BADA families (BADA3, BADA4, BADAH, BADAE), with different handling for mass changes,
2238
2233
  aerodynamic configurations, and energy consumption. It calculates parameters such as fuel consumption, power
@@ -2343,7 +2338,7 @@ def constantSpeedROCD_time(
2343
2338
  magneticHeading = trueHeading - magneticDeclination
2344
2339
  elif magneticHeading is not None and trueHeading is None:
2345
2340
  # fly MAGNETIC Heading
2346
- if constantHeading == True:
2341
+ if constantHeading is True:
2347
2342
  headingToFly = "MAGNETIC"
2348
2343
  trueHeading = magneticHeading + magneticDeclination
2349
2344
  else:
@@ -3246,9 +3241,10 @@ def constantSpeedSlope(
3246
3241
  magneticDeclinationGrid=None,
3247
3242
  **kwargs,
3248
3243
  ):
3249
- """
3250
- Calculates time, fuel consumption, and other parameters required for an aircraft to perform a climb or descent
3251
- from an initial altitude (Hp_init) to a final altitude (Hp_final) while maintaining a constant speed and a constant slope.
3244
+ """Calculates time, fuel consumption, and other parameters required for an
3245
+ aircraft to perform a climb or descent from an initial altitude (Hp_init)
3246
+ to a final altitude (Hp_final) while maintaining a constant speed and a
3247
+ constant slope.
3252
3248
 
3253
3249
  It uses different models for BADA (Base of Aircraft Data) families (BADA3, BADA4, BADAH, BADAE) to compute key flight parameters
3254
3250
  such as energy consumption, rate of climb/descent (ROCD), fuel burn, mass changes, and power requirements. The function also supports
@@ -3359,7 +3355,7 @@ def constantSpeedSlope(
3359
3355
  magneticHeading = trueHeading - magneticDeclination
3360
3356
  elif magneticHeading is not None and trueHeading is None:
3361
3357
  # fly MAGNETIC Heading
3362
- if constantHeading == True:
3358
+ if constantHeading is True:
3363
3359
  headingToFly = "MAGNETIC"
3364
3360
  trueHeading = magneticHeading + magneticDeclination
3365
3361
  else:
@@ -4277,8 +4273,9 @@ def constantSpeedSlope_time(
4277
4273
  magneticDeclinationGrid=None,
4278
4274
  **kwargs,
4279
4275
  ):
4280
- """
4281
- Computes the time, fuel, and trajectory parameters required by an aircraft to climb or descend at constant speed and slope over a given duration.
4276
+ """Computes the time, fuel, and trajectory parameters required by an
4277
+ aircraft to climb or descend at constant speed and slope over a given
4278
+ duration.
4282
4279
 
4283
4280
  This function models a trajectory with constant speed (either CAS, TAS, or Mach) and a specified slope (degrees). The aircraft's dynamics are modeled based on BADA family data (BADA3, BADA4, BADAH, BADAE), supporting various aircraft types including electric models. It also accounts for turns, heading changes, and wind effects.
4284
4281
 
@@ -4388,7 +4385,7 @@ def constantSpeedSlope_time(
4388
4385
  magneticHeading = trueHeading - magneticDeclination
4389
4386
  elif magneticHeading is not None and trueHeading is None:
4390
4387
  # fly MAGNETIC Heading
4391
- if constantHeading == True:
4388
+ if constantHeading is True:
4392
4389
  headingToFly = "MAGNETIC"
4393
4390
  trueHeading = magneticHeading + magneticDeclination
4394
4391
  else:
@@ -5300,9 +5297,10 @@ def constantSpeedRating(
5300
5297
  initRating=None,
5301
5298
  **kwargs,
5302
5299
  ):
5303
- """
5304
- Calculates time, fuel consumption, and other parameters required for an aircraft to perform a climb or descent
5305
- from an initial altitude (Hp_init) to a final altitude (Hp_final) while maintaining a constant speed and engine rating.
5300
+ """Calculates time, fuel consumption, and other parameters required for an
5301
+ aircraft to perform a climb or descent from an initial altitude (Hp_init)
5302
+ to a final altitude (Hp_final) while maintaining a constant speed and
5303
+ engine rating.
5306
5304
 
5307
5305
  It uses different models for BADA (Base of Aircraft Data) families (BADA3, BADA4, BADAH, BADAE) to compute key flight parameters
5308
5306
  such as fuel burn, rate of climb/descent (ROCD), thrust, drag, and energy requirements. The function also supports
@@ -5413,7 +5411,7 @@ def constantSpeedRating(
5413
5411
  magneticHeading = trueHeading - magneticDeclination
5414
5412
  elif magneticHeading is not None and trueHeading is None:
5415
5413
  # fly MAGNETIC Heading
5416
- if constantHeading == True:
5414
+ if constantHeading is True:
5417
5415
  headingToFly = "MAGNETIC"
5418
5416
  trueHeading = magneticHeading + magneticDeclination
5419
5417
  else:
@@ -5813,7 +5811,12 @@ def constantSpeedRating(
5813
5811
  CL = AC.CL(M=M_i, delta=delta, mass=mass_i, nz=nz)
5814
5812
  # compute drag coefficient
5815
5813
  CD = AC.CD(
5816
- M=M_i, CL=CL, HLid=HLid_i, LG=LG_i, speedBrakes=speedBrakes
5814
+ M=M_i,
5815
+ CL=CL,
5816
+ HLid=HLid_i,
5817
+ LG=LG_i,
5818
+ speedBrakes=speedBrakes,
5819
+ expedite=expedite,
5817
5820
  )
5818
5821
  # compute drag force
5819
5822
  Drag = AC.D(M=M_i, delta=delta, CD=CD)
@@ -6244,9 +6247,9 @@ def constantSpeedRating_time(
6244
6247
  initRating=None,
6245
6248
  **kwargs,
6246
6249
  ):
6247
- """
6248
- Calculates the time, fuel consumption, and other flight parameters required for an aircraft to perform
6249
- a climb or descent at constant speed and engine rating for a specified duration.
6250
+ """Calculates the time, fuel consumption, and other flight parameters
6251
+ required for an aircraft to perform a climb or descent at constant speed
6252
+ and engine rating for a specified duration.
6250
6253
 
6251
6254
  It uses different models for BADA (Base of Aircraft Data) families (BADA3, BADA4, BADAH, BADAE) to compute key parameters
6252
6255
  such as rate of climb/descent (ROCD), thrust, drag, fuel burn, and power requirements. The function also supports complex
@@ -6359,7 +6362,7 @@ def constantSpeedRating_time(
6359
6362
  magneticHeading = trueHeading - magneticDeclination
6360
6363
  elif magneticHeading is not None and trueHeading is None:
6361
6364
  # fly MAGNETIC Heading
6362
- if constantHeading == True:
6365
+ if constantHeading is True:
6363
6366
  headingToFly = "MAGNETIC"
6364
6367
  trueHeading = magneticHeading + magneticDeclination
6365
6368
  else:
@@ -6750,7 +6753,12 @@ def constantSpeedRating_time(
6750
6753
  CL = AC.CL(M=M_i, delta=delta, mass=mass_i, nz=nz)
6751
6754
  # compute drag coefficient
6752
6755
  CD = AC.CD(
6753
- M=M_i, CL=CL, HLid=HLid_i, LG=LG_i, speedBrakes=speedBrakes
6756
+ M=M_i,
6757
+ CL=CL,
6758
+ HLid=HLid_i,
6759
+ LG=LG_i,
6760
+ speedBrakes=speedBrakes,
6761
+ expedite=expedite,
6754
6762
  )
6755
6763
  # compute drag force
6756
6764
  Drag = AC.D(M=M_i, delta=delta, CD=CD)
@@ -7178,10 +7186,10 @@ def accDec(
7178
7186
  magneticDeclinationGrid=None,
7179
7187
  **kwargs,
7180
7188
  ):
7181
- """
7182
- Calculates the time, fuel consumption, and other key flight parameters required for an aircraft
7183
- to perform an acceleration or deceleration from an initial speed (v_init) to a final speed (v_final)
7184
- during the climb, cruise, or descent phases of flight.
7189
+ """Calculates the time, fuel consumption, and other key flight parameters
7190
+ required for an aircraft to perform an acceleration or deceleration from
7191
+ an initial speed (v_init) to a final speed (v_final) during the climb,
7192
+ cruise, or descent phases of flight.
7185
7193
 
7186
7194
  The flight parameters are calculated using different models for the BADA (Base of Aircraft Data) families (BADA3, BADA4, BADAH, BADAE).
7187
7195
  The function can also accommodate different control laws, vertical evolution phases, wind conditions, and complex flight dynamics like turns.
@@ -7304,7 +7312,7 @@ def accDec(
7304
7312
  magneticHeading = trueHeading - magneticDeclination
7305
7313
  elif magneticHeading is not None and trueHeading is None:
7306
7314
  # fly MAGNETIC Heading
7307
- if constantHeading == True:
7315
+ if constantHeading is True:
7308
7316
  headingToFly = "MAGNETIC"
7309
7317
  trueHeading = magneticHeading + magneticDeclination
7310
7318
  else:
@@ -8460,10 +8468,10 @@ def accDec_time(
8460
8468
  magneticDeclinationGrid=None,
8461
8469
  **kwargs,
8462
8470
  ):
8463
- """
8464
- Calculates the time, fuel consumption, and other key flight parameters required for an aircraft
8465
- to perform an acceleration or deceleration from an initial speed (v_init) over a set period of time
8466
- during the climb, cruise, or descent phases of flight.
8471
+ """Calculates the time, fuel consumption, and other key flight parameters
8472
+ required for an aircraft to perform an acceleration or deceleration from
8473
+ an initial speed (v_init) over a set period of time during the climb,
8474
+ cruise, or descent phases of flight.
8467
8475
 
8468
8476
  The flight parameters are calculated using different models for the BADA (Base of Aircraft Data) families (BADA3, BADA4, BADAH, BADAE).
8469
8477
  The function can also accommodate different control laws, vertical evolution phases, wind conditions, and complex flight dynamics like turns.
@@ -8587,7 +8595,7 @@ def accDec_time(
8587
8595
  magneticHeading = trueHeading - magneticDeclination
8588
8596
  elif magneticHeading is not None and trueHeading is None:
8589
8597
  # fly MAGNETIC Heading
8590
- if constantHeading == True:
8598
+ if constantHeading is True:
8591
8599
  headingToFly = "MAGNETIC"
8592
8600
  trueHeading = magneticHeading + magneticDeclination
8593
8601
  else:
@@ -8978,7 +8986,6 @@ def accDec_time(
8978
8986
  if P_i < Pmin:
8979
8987
  P_i = Pmin
8980
8988
  if ESFc is not None:
8981
-
8982
8989
  ROCD_i = (
8983
8990
  conv.m2ft(
8984
8991
  AC.ROCD(