cpdocs 0.3.6__tar.gz → 0.3.7__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 (168) hide show
  1. {cpdocs-0.3.6 → cpdocs-0.3.7}/PKG-INFO +1 -1
  2. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/__init__.py +1 -1
  3. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/contract.py +1 -1
  4. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/languages/fortran/extract.py +1 -1
  5. {cpdocs-0.3.6 → cpdocs-0.3.7}/test/test_examples.py +25 -0
  6. {cpdocs-0.3.6 → cpdocs-0.3.7}/.github/workflows/docs.yml +0 -0
  7. {cpdocs-0.3.6 → cpdocs-0.3.7}/.github/workflows/test.yml +0 -0
  8. {cpdocs-0.3.6 → cpdocs-0.3.7}/.gitignore +0 -0
  9. {cpdocs-0.3.6 → cpdocs-0.3.7}/.reuse/templates/bordered.jinja2 +0 -0
  10. {cpdocs-0.3.6 → cpdocs-0.3.7}/LICENSES/Apache-2.0.txt +0 -0
  11. {cpdocs-0.3.6 → cpdocs-0.3.7}/REUSE.toml +0 -0
  12. {cpdocs-0.3.6 → cpdocs-0.3.7}/docs/api/index.md +0 -0
  13. {cpdocs-0.3.6 → cpdocs-0.3.7}/docs/cpdocs.yml +0 -0
  14. {cpdocs-0.3.6 → cpdocs-0.3.7}/docs/web/examples/index.md +0 -0
  15. {cpdocs-0.3.6 → cpdocs-0.3.7}/docs/web/explanation/architecture.md +0 -0
  16. {cpdocs-0.3.6 → cpdocs-0.3.7}/docs/web/explanation/feature-sets.md +0 -0
  17. {cpdocs-0.3.6 → cpdocs-0.3.7}/docs/web/how-to/ci.md +0 -0
  18. {cpdocs-0.3.6 → cpdocs-0.3.7}/docs/web/how-to/feature-sets.md +0 -0
  19. {cpdocs-0.3.6 → cpdocs-0.3.7}/docs/web/how-to/generated-headers.md +0 -0
  20. {cpdocs-0.3.6 → cpdocs-0.3.7}/docs/web/how-to/other-build-systems.md +0 -0
  21. {cpdocs-0.3.6 → cpdocs-0.3.7}/docs/web/how-to/properdocs.md +0 -0
  22. {cpdocs-0.3.6 → cpdocs-0.3.7}/docs/web/index.md +0 -0
  23. {cpdocs-0.3.6 → cpdocs-0.3.7}/docs/web/reference/api.md +0 -0
  24. {cpdocs-0.3.6 → cpdocs-0.3.7}/docs/web/reference/cli.md +0 -0
  25. {cpdocs-0.3.6 → cpdocs-0.3.7}/docs/web/reference/cmake.md +0 -0
  26. {cpdocs-0.3.6 → cpdocs-0.3.7}/docs/web/reference/comments.md +0 -0
  27. {cpdocs-0.3.6 → cpdocs-0.3.7}/docs/web/reference/configuration.md +0 -0
  28. {cpdocs-0.3.6 → cpdocs-0.3.7}/docs/web/reference/contract.md +0 -0
  29. {cpdocs-0.3.6 → cpdocs-0.3.7}/docs/web/reference/extraction.md +0 -0
  30. {cpdocs-0.3.6 → cpdocs-0.3.7}/docs/web/reference/links.md +0 -0
  31. {cpdocs-0.3.6 → cpdocs-0.3.7}/docs/web/tutorials/first-reference.md +0 -0
  32. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/basic-cpp/.gitignore +0 -0
  33. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/basic-cpp/CMakeLists.txt +0 -0
  34. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/basic-cpp/docs/api/index.md +0 -0
  35. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/basic-cpp/docs/cpdocs.yml +0 -0
  36. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/basic-cpp/docs/web/api.md +0 -0
  37. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/basic-cpp/docs/web/index.md +0 -0
  38. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/basic-cpp/include/acme/math.hpp +0 -0
  39. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/basic-cpp/properdocs.yml +0 -0
  40. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/basic-cpp/readme.md +0 -0
  41. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/basic-cpp/src/math.cpp +0 -0
  42. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/c-basic/.gitignore +0 -0
  43. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/c-basic/CMakeLists.txt +0 -0
  44. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/c-basic/docs/api/index.md +0 -0
  45. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/c-basic/docs/cpdocs.yml +0 -0
  46. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/c-basic/docs/web/api.md +0 -0
  47. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/c-basic/docs/web/index.md +0 -0
  48. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/c-basic/include/ring/ring.h +0 -0
  49. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/c-basic/properdocs.yml +0 -0
  50. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/c-basic/readme.md +0 -0
  51. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/c-basic/src/ring.c +0 -0
  52. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/cpp-features/.gitignore +0 -0
  53. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/cpp-features/CMakeLists.txt +0 -0
  54. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/cpp-features/docs/api/index.md +0 -0
  55. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/cpp-features/docs/cpdocs-minibuild.yml +0 -0
  56. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/cpp-features/docs/cpdocs.yml +0 -0
  57. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/cpp-features/docs/web/api.md +0 -0
  58. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/cpp-features/docs/web/index.md +0 -0
  59. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/cpp-features/include/demo/solver.hpp +0 -0
  60. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/cpp-features/properdocs.yml +0 -0
  61. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/cpp-features/readme.md +0 -0
  62. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/cpp-features/tools/minibuild.py +0 -0
  63. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/cpp-templates/.gitignore +0 -0
  64. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/cpp-templates/CMakeLists.txt +0 -0
  65. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/cpp-templates/docs/api/index.md +0 -0
  66. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/cpp-templates/docs/cpdocs.yml +0 -0
  67. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/cpp-templates/docs/web/api.md +0 -0
  68. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/cpp-templates/docs/web/index.md +0 -0
  69. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/cpp-templates/include/meta/meta.hpp +0 -0
  70. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/cpp-templates/properdocs.yml +0 -0
  71. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/cpp-templates/readme.md +0 -0
  72. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/fortran-basic/CMakeLists.txt +0 -0
  73. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/fortran-basic/docs/api.md +0 -0
  74. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/fortran-basic/docs/cpdocs.yml +0 -0
  75. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/fortran-basic/docs/index.md +0 -0
  76. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/fortran-basic/lib/normalize.f90 +0 -0
  77. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/fortran-basic/mod/geometry.f90 +0 -0
  78. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/fortran-basic/properdocs.yml +0 -0
  79. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/fortran-basic/readme.md +0 -0
  80. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/generated-cpp/.gitignore +0 -0
  81. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/generated-cpp/CMakeLists.txt +0 -0
  82. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/generated-cpp/docs/api/index.md +0 -0
  83. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/generated-cpp/docs/cpdocs.yml +0 -0
  84. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/generated-cpp/docs/web/api.md +0 -0
  85. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/generated-cpp/docs/web/index.md +0 -0
  86. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/generated-cpp/generated-template/generated.hpp +0 -0
  87. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/generated-cpp/include/acme/core.hpp +0 -0
  88. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/generated-cpp/properdocs.yml +0 -0
  89. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/generated-cpp/readme.md +0 -0
  90. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/generated-cpp/src/generated.cpp +0 -0
  91. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/mixed/.gitignore +0 -0
  92. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/mixed/CMakeLists.txt +0 -0
  93. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/mixed/docs/api/index.md +0 -0
  94. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/mixed/docs/cpdocs.yml +0 -0
  95. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/mixed/docs/web/api.md +0 -0
  96. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/mixed/docs/web/index.md +0 -0
  97. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/mixed/include/geom/vector.hpp +0 -0
  98. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/mixed/properdocs.yml +0 -0
  99. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/mixed/python/pygeom/__init__.py +0 -0
  100. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/mixed/readme.md +0 -0
  101. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/mixed/src/geom.cpp +0 -0
  102. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/python-basic/.gitignore +0 -0
  103. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/python-basic/docs/api/index.md +0 -0
  104. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/python-basic/docs/cpdocs.yml +0 -0
  105. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/python-basic/docs/web/api.md +0 -0
  106. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/python-basic/docs/web/index.md +0 -0
  107. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/python-basic/properdocs.yml +0 -0
  108. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/python-basic/pyproject.toml +0 -0
  109. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/python-basic/readme.md +0 -0
  110. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/python-basic/src/dice/__init__.py +0 -0
  111. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/python-basic/src/dice/_rng.py +0 -0
  112. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/python-basic/src/dice/core.py +0 -0
  113. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/rust-basic/Cargo.lock +0 -0
  114. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/rust-basic/Cargo.toml +0 -0
  115. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/rust-basic/docs/api.md +0 -0
  116. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/rust-basic/docs/cpdocs.yml +0 -0
  117. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/rust-basic/docs/index.md +0 -0
  118. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/rust-basic/properdocs.yml +0 -0
  119. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/rust-basic/readme.md +0 -0
  120. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/rust-basic/rust-toolchain.toml +0 -0
  121. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/rust-basic/src/geometry.rs +0 -0
  122. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/rust-basic/src/internal.rs +0 -0
  123. {cpdocs-0.3.6 → cpdocs-0.3.7}/examples/rust-basic/src/lib.rs +0 -0
  124. {cpdocs-0.3.6 → cpdocs-0.3.7}/properdocs.yml +0 -0
  125. {cpdocs-0.3.6 → cpdocs-0.3.7}/pyproject.toml +0 -0
  126. {cpdocs-0.3.6 → cpdocs-0.3.7}/readme.md +0 -0
  127. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/__main__.py +0 -0
  128. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/build.py +0 -0
  129. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/cli.py +0 -0
  130. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/config.py +0 -0
  131. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/languages/__init__.py +0 -0
  132. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/languages/base.py +0 -0
  133. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/languages/cpp/__init__.py +0 -0
  134. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/languages/cpp/extract.py +0 -0
  135. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/languages/cpp/render.py +0 -0
  136. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/languages/fortran/__init__.py +0 -0
  137. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/languages/fortran/render.py +0 -0
  138. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/languages/python/__init__.py +0 -0
  139. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/languages/python/extract.py +0 -0
  140. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/languages/python/render.py +0 -0
  141. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/languages/rust/__init__.py +0 -0
  142. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/languages/rust/extract.py +0 -0
  143. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/languages/rust/render.py +0 -0
  144. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/model.py +0 -0
  145. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/plugins/__init__.py +0 -0
  146. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/plugins/properdocs/__init__.py +0 -0
  147. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/plugins/properdocs/core.py +0 -0
  148. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/plugins/properdocs/plugin.py +0 -0
  149. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/providers/__init__.py +0 -0
  150. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/providers/cargo.py +0 -0
  151. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/providers/cmake.py +0 -0
  152. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/providers/contract.py +0 -0
  153. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/providers/python.py +0 -0
  154. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/rendering/__init__.py +0 -0
  155. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/rendering/common.py +0 -0
  156. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/rendering/html.py +0 -0
  157. {cpdocs-0.3.6 → cpdocs-0.3.7}/src/cpdocs/versioning.py +0 -0
  158. {cpdocs-0.3.6 → cpdocs-0.3.7}/test/conftest.py +0 -0
  159. {cpdocs-0.3.6 → cpdocs-0.3.7}/test/test_api_reference.py +0 -0
  160. {cpdocs-0.3.6 → cpdocs-0.3.7}/test/test_build.py +0 -0
  161. {cpdocs-0.3.6 → cpdocs-0.3.7}/test/test_config.py +0 -0
  162. {cpdocs-0.3.6 → cpdocs-0.3.7}/test/test_contract.py +0 -0
  163. {cpdocs-0.3.6 → cpdocs-0.3.7}/test/test_feature_set_signatures.py +0 -0
  164. {cpdocs-0.3.6 → cpdocs-0.3.7}/test/test_properdocs_core.py +0 -0
  165. {cpdocs-0.3.6 → cpdocs-0.3.7}/test/test_rust_example.py +0 -0
  166. {cpdocs-0.3.6 → cpdocs-0.3.7}/test/test_rust_provider.py +0 -0
  167. {cpdocs-0.3.6 → cpdocs-0.3.7}/test/test_versioning.py +0 -0
  168. {cpdocs-0.3.6 → cpdocs-0.3.7}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: cpdocs
3
- Version: 0.3.6
3
+ Version: 0.3.7
4
4
  Summary: Semantic, versioned API documentation for C, C++, CUDA, HIP, Fortran, Python and Rust projects
5
5
  Project-URL: Source, https://github.com/ambhora/cpdocs
6
6
  Author-email: Jayesh Badwaik <j.badwaik@fz-juelich.de>
@@ -4,4 +4,4 @@
4
4
  # --------------------------------------------------------------------------------------------------
5
5
  """Language-neutral semantic API documentation generator."""
6
6
 
7
- __version__ = "0.3.6"
7
+ __version__ = "0.3.7"
@@ -149,7 +149,7 @@ class UnitManifest:
149
149
  @dataclass(frozen=True)
150
150
  class Manifest:
151
151
  units: tuple[UnitManifest, ...]
152
- # Optional BESA metadata; feature-set enumeration depends only on features.
152
+ # Optional build-system metadata; feature-set enumeration depends only on features.
153
153
  options: tuple[dict[str, Any], ...] = ()
154
154
 
155
155
 
@@ -35,7 +35,7 @@ _ROUTINE = re.compile(
35
35
  _END_ROUTINE = re.compile(r"^\s*end\s*(?:function|subroutine)\b", re.IGNORECASE)
36
36
  _VISIBILITY = re.compile(r"^\s*(public|private)\s*(?:::\s*(.*))?$", re.IGNORECASE)
37
37
  _DECL = re.compile(r"^\s*([^!]+?)\s*::\s*(.+)$")
38
- _DOC = re.compile(r"^\s*!+[>]?[ ]?(.*)$")
38
+ _DOC = re.compile(r"^\s*(?:!>|!!)[ ]?(.*)$")
39
39
 
40
40
 
41
41
  def _source_files(roots: list[Path]) -> list[Path]:
@@ -16,6 +16,7 @@ import pytest
16
16
  from conftest import EXAMPLES, REPOSITORY, copy_example, git, init_repository, require
17
17
  from cpdocs.build import build_current
18
18
  from cpdocs.config import load_config
19
+ from cpdocs.languages.fortran.extract import extract_fortran_graph
19
20
  from cpdocs.model import stable_entity_id
20
21
 
21
22
 
@@ -150,6 +151,30 @@ def test_mixed_example_merges_cpp_and_python_units(tmp_path: Path) -> None:
150
151
  assert stable_entity_id("python", "function", "pygeom.dot") in graph.entities
151
152
 
152
153
 
154
+ def test_fortran_doc_comments_ignore_license_preamble(tmp_path: Path) -> None:
155
+ source = tmp_path / "geometry.f90"
156
+ source.write_text(
157
+ "! --------------------------------------------------\n"
158
+ "! SPDX-License-Identifier: Apache-2.0\n"
159
+ "! SPDX-FileCopyrightText: 2026 cpdocs developers\n"
160
+ "! --------------------------------------------------\n"
161
+ "!> Geometry primitives.\n"
162
+ "!! Additional detail.\n"
163
+ "module geometry\n"
164
+ "end module geometry\n",
165
+ encoding="utf-8",
166
+ )
167
+ graph = extract_fortran_graph(
168
+ project="example",
169
+ version="0",
170
+ project_root=tmp_path,
171
+ api_roots=[source],
172
+ feature_set="default",
173
+ )
174
+ module = graph.entities[stable_entity_id("fortran", "module", "geometry")]
175
+ assert module.documentation == "Geometry primitives.\nAdditional detail."
176
+
177
+
153
178
  def test_fortran_example_and_implementation_file_browser(tmp_path: Path) -> None:
154
179
  require("cmake", "ninja")
155
180
  project, graph = _build(tmp_path, "fortran-basic")
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes