SHARPlib 1.0.0rc0__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 (69) hide show
  1. sharplib-1.0.0rc0/.clang-format +226 -0
  2. sharplib-1.0.0rc0/.github/workflows/cmake.yml +102 -0
  3. sharplib-1.0.0rc0/.github/workflows/doxygen-gh-pages.yml +18 -0
  4. sharplib-1.0.0rc0/.github/workflows/python.yml +56 -0
  5. sharplib-1.0.0rc0/.github/workflows/wheels.yml +102 -0
  6. sharplib-1.0.0rc0/.gitignore +59 -0
  7. sharplib-1.0.0rc0/.gitlab-ci.yml +54 -0
  8. sharplib-1.0.0rc0/.gitmodules +12 -0
  9. sharplib-1.0.0rc0/CMakeLists.txt +103 -0
  10. sharplib-1.0.0rc0/Doxyfile +2712 -0
  11. sharplib-1.0.0rc0/LICENSE +32 -0
  12. sharplib-1.0.0rc0/PKG-INFO +140 -0
  13. sharplib-1.0.0rc0/README.md +113 -0
  14. sharplib-1.0.0rc0/cmake/GitVersion.cmake +97 -0
  15. sharplib-1.0.0rc0/data/test_snds/20160524_2302_EF3_37.57_-100.13_108_613967.snd +44 -0
  16. sharplib-1.0.0rc0/data/test_snds/2023-04-19_19_72357.pq +0 -0
  17. sharplib-1.0.0rc0/data/test_snds/2023-04-20_00_72357.pq +0 -0
  18. sharplib-1.0.0rc0/data/test_snds/ddc.parquet +0 -0
  19. sharplib-1.0.0rc0/examples/C++/compile.sh +4 -0
  20. sharplib-1.0.0rc0/examples/C++/main.cpp +254 -0
  21. sharplib-1.0.0rc0/include/SHARPlib/algorithms.h +135 -0
  22. sharplib-1.0.0rc0/include/SHARPlib/constants.h +90 -0
  23. sharplib-1.0.0rc0/include/SHARPlib/interp.h +192 -0
  24. sharplib-1.0.0rc0/include/SHARPlib/layer.h +572 -0
  25. sharplib-1.0.0rc0/include/SHARPlib/params/convective.h +308 -0
  26. sharplib-1.0.0rc0/include/SHARPlib/params/fire.h +55 -0
  27. sharplib-1.0.0rc0/include/SHARPlib/params/winter.h +43 -0
  28. sharplib-1.0.0rc0/include/SHARPlib/parcel.h +518 -0
  29. sharplib-1.0.0rc0/include/SHARPlib/thermo.h +681 -0
  30. sharplib-1.0.0rc0/include/SHARPlib/version.h.in +17 -0
  31. sharplib-1.0.0rc0/include/SHARPlib/winds.h +421 -0
  32. sharplib-1.0.0rc0/pyproject.toml +77 -0
  33. sharplib-1.0.0rc0/src/SHARPlib/interp.cpp +207 -0
  34. sharplib-1.0.0rc0/src/SHARPlib/layer.cpp +179 -0
  35. sharplib-1.0.0rc0/src/SHARPlib/params/convective.cpp +353 -0
  36. sharplib-1.0.0rc0/src/SHARPlib/params/fire.cpp +64 -0
  37. sharplib-1.0.0rc0/src/SHARPlib/params/winter.cpp +34 -0
  38. sharplib-1.0.0rc0/src/SHARPlib/parcel.cpp +166 -0
  39. sharplib-1.0.0rc0/src/SHARPlib/thermo.cpp +561 -0
  40. sharplib-1.0.0rc0/src/SHARPlib/winds.cpp +132 -0
  41. sharplib-1.0.0rc0/src/nanobind/CMakeLists.txt +32 -0
  42. sharplib-1.0.0rc0/src/nanobind/_version.py +21 -0
  43. sharplib-1.0.0rc0/src/nanobind/calc.cpp +26 -0
  44. sharplib-1.0.0rc0/src/nanobind/constants_bindings.h +50 -0
  45. sharplib-1.0.0rc0/src/nanobind/interp_bindings.h +114 -0
  46. sharplib-1.0.0rc0/src/nanobind/layer_bindings.h +368 -0
  47. sharplib-1.0.0rc0/src/nanobind/params_bindings.h +372 -0
  48. sharplib-1.0.0rc0/src/nanobind/parcel_bindings.h +516 -0
  49. sharplib-1.0.0rc0/src/nanobind/sharplib_types.h +17 -0
  50. sharplib-1.0.0rc0/src/nanobind/thermo_bindings.h +1512 -0
  51. sharplib-1.0.0rc0/src/nanobind/winds_bindings.h +519 -0
  52. sharplib-1.0.0rc0/tests/benchmark/CMakeLists.txt +51 -0
  53. sharplib-1.0.0rc0/tests/benchmark/bench_algorithms.cpp +217 -0
  54. sharplib-1.0.0rc0/tests/benchmark/bench_interp.cpp +173 -0
  55. sharplib-1.0.0rc0/tests/benchmark/bench_parcel.cpp +58 -0
  56. sharplib-1.0.0rc0/tests/python/test_interp.py +86 -0
  57. sharplib-1.0.0rc0/tests/python/test_layer.py +219 -0
  58. sharplib-1.0.0rc0/tests/python/test_params.py +308 -0
  59. sharplib-1.0.0rc0/tests/python/test_parcel.py +202 -0
  60. sharplib-1.0.0rc0/tests/python/test_thermo.py +454 -0
  61. sharplib-1.0.0rc0/tests/python/test_winds.py +174 -0
  62. sharplib-1.0.0rc0/tests/unit/CMakeLists.txt +56 -0
  63. sharplib-1.0.0rc0/tests/unit/doctest.h +7106 -0
  64. sharplib-1.0.0rc0/tests/unit/test_algorithms.cpp +98 -0
  65. sharplib-1.0.0rc0/tests/unit/test_interp.cpp +146 -0
  66. sharplib-1.0.0rc0/tests/unit/test_layer.cpp +215 -0
  67. sharplib-1.0.0rc0/tests/unit/test_parcel.cpp +238 -0
  68. sharplib-1.0.0rc0/tests/unit/test_thermo.cpp +119 -0
  69. sharplib-1.0.0rc0/tests/unit/test_winds.cpp +180 -0
@@ -0,0 +1,226 @@
1
+ ---
2
+ Language: Cpp
3
+ # BasedOnStyle: Google
4
+ AccessModifierOffset: -1
5
+ AlignAfterOpenBracket: Align
6
+ AlignArrayOfStructures: None
7
+ AlignConsecutiveMacros: None
8
+ AlignConsecutiveAssignments: None
9
+ AlignConsecutiveBitFields: None
10
+ AlignConsecutiveDeclarations: None
11
+ AlignEscapedNewlines: Left
12
+ AlignOperands: Align
13
+ AlignTrailingComments: true
14
+ AllowAllArgumentsOnNextLine: true
15
+ AllowAllParametersOfDeclarationOnNextLine: true
16
+ AllowShortEnumsOnASingleLine: true
17
+ AllowShortBlocksOnASingleLine: Never
18
+ AllowShortCaseLabelsOnASingleLine: false
19
+ AllowShortFunctionsOnASingleLine: All
20
+ AllowShortLambdasOnASingleLine: All
21
+ AllowShortIfStatementsOnASingleLine: WithoutElse
22
+ AllowShortLoopsOnASingleLine: true
23
+ AlwaysBreakAfterDefinitionReturnType: None
24
+ AlwaysBreakAfterReturnType: None
25
+ AlwaysBreakBeforeMultilineStrings: true
26
+ AlwaysBreakTemplateDeclarations: Yes
27
+ AttributeMacros:
28
+ - __capability
29
+ BinPackArguments: true
30
+ BinPackParameters: true
31
+ BraceWrapping:
32
+ AfterCaseLabel: false
33
+ AfterClass: false
34
+ AfterControlStatement: Never
35
+ AfterEnum: false
36
+ AfterFunction: false
37
+ AfterNamespace: false
38
+ AfterObjCDeclaration: false
39
+ AfterStruct: false
40
+ AfterUnion: false
41
+ AfterExternBlock: false
42
+ BeforeCatch: false
43
+ BeforeElse: false
44
+ BeforeLambdaBody: false
45
+ BeforeWhile: false
46
+ IndentBraces: false
47
+ SplitEmptyFunction: true
48
+ SplitEmptyRecord: true
49
+ SplitEmptyNamespace: true
50
+ BreakBeforeBinaryOperators: None
51
+ BreakBeforeConceptDeclarations: true
52
+ BreakBeforeBraces: Attach
53
+ BreakBeforeInheritanceComma: false
54
+ BreakInheritanceList: BeforeColon
55
+ BreakBeforeTernaryOperators: true
56
+ BreakConstructorInitializersBeforeComma: false
57
+ BreakConstructorInitializers: BeforeColon
58
+ BreakAfterJavaFieldAnnotations: false
59
+ BreakStringLiterals: true
60
+ ColumnLimit: 80
61
+ CommentPragmas: '^ IWYU pragma:'
62
+ QualifierAlignment: Leave
63
+ CompactNamespaces: false
64
+ ConstructorInitializerIndentWidth: 4
65
+ ContinuationIndentWidth: 4
66
+ Cpp11BracedListStyle: true
67
+ DeriveLineEnding: true
68
+ DerivePointerAlignment: true
69
+ DisableFormat: false
70
+ EmptyLineAfterAccessModifier: Never
71
+ EmptyLineBeforeAccessModifier: LogicalBlock
72
+ ExperimentalAutoDetectBinPacking: false
73
+ PackConstructorInitializers: NextLine
74
+ BasedOnStyle: ''
75
+ ConstructorInitializerAllOnOneLineOrOnePerLine: false
76
+ AllowAllConstructorInitializersOnNextLine: true
77
+ FixNamespaceComments: true
78
+ ForEachMacros:
79
+ - foreach
80
+ - Q_FOREACH
81
+ - BOOST_FOREACH
82
+ IfMacros:
83
+ - KJ_IF_MAYBE
84
+ IncludeBlocks: Regroup
85
+ IncludeCategories:
86
+ - Regex: '^<ext/.*\.h>'
87
+ Priority: 2
88
+ SortPriority: 0
89
+ CaseSensitive: false
90
+ - Regex: '^<.*\.h>'
91
+ Priority: 1
92
+ SortPriority: 0
93
+ CaseSensitive: false
94
+ - Regex: '^<.*'
95
+ Priority: 2
96
+ SortPriority: 0
97
+ CaseSensitive: false
98
+ - Regex: '.*'
99
+ Priority: 3
100
+ SortPriority: 0
101
+ CaseSensitive: false
102
+ IncludeIsMainRegex: '([-_](test|unittest))?$'
103
+ IncludeIsMainSourceRegex: ''
104
+ IndentAccessModifiers: false
105
+ IndentCaseLabels: true
106
+ IndentCaseBlocks: false
107
+ IndentGotoLabels: true
108
+ IndentPPDirectives: None
109
+ IndentExternBlock: AfterExternBlock
110
+ IndentRequires: false
111
+ IndentWidth: 4
112
+ IndentWrappedFunctionNames: false
113
+ InsertTrailingCommas: None
114
+ JavaScriptQuotes: Leave
115
+ JavaScriptWrapImports: true
116
+ KeepEmptyLinesAtTheStartOfBlocks: false
117
+ LambdaBodyIndentation: Signature
118
+ MacroBlockBegin: ''
119
+ MacroBlockEnd: ''
120
+ MaxEmptyLinesToKeep: 1
121
+ NamespaceIndentation: None
122
+ ObjCBinPackProtocolList: Never
123
+ ObjCBlockIndentWidth: 2
124
+ ObjCBreakBeforeNestedBlockParam: true
125
+ ObjCSpaceAfterProperty: false
126
+ ObjCSpaceBeforeProtocolList: true
127
+ PenaltyBreakAssignment: 2
128
+ PenaltyBreakBeforeFirstCallParameter: 1
129
+ PenaltyBreakComment: 300
130
+ PenaltyBreakFirstLessLess: 120
131
+ PenaltyBreakOpenParenthesis: 0
132
+ PenaltyBreakString: 1000
133
+ PenaltyBreakTemplateDeclaration: 10
134
+ PenaltyExcessCharacter: 1000000
135
+ PenaltyReturnTypeOnItsOwnLine: 200
136
+ PenaltyIndentedWhitespace: 0
137
+ PointerAlignment: Left
138
+ PPIndentWidth: -1
139
+ RawStringFormats:
140
+ - Language: Cpp
141
+ Delimiters:
142
+ - cc
143
+ - CC
144
+ - cpp
145
+ - Cpp
146
+ - CPP
147
+ - 'c++'
148
+ - 'C++'
149
+ CanonicalDelimiter: ''
150
+ BasedOnStyle: google
151
+ - Language: TextProto
152
+ Delimiters:
153
+ - pb
154
+ - PB
155
+ - proto
156
+ - PROTO
157
+ EnclosingFunctions:
158
+ - EqualsProto
159
+ - EquivToProto
160
+ - PARSE_PARTIAL_TEXT_PROTO
161
+ - PARSE_TEST_PROTO
162
+ - PARSE_TEXT_PROTO
163
+ - ParseTextOrDie
164
+ - ParseTextProtoOrDie
165
+ - ParseTestProto
166
+ - ParsePartialTestProto
167
+ CanonicalDelimiter: pb
168
+ BasedOnStyle: google
169
+ ReferenceAlignment: Pointer
170
+ ReflowComments: true
171
+ RemoveBracesLLVM: false
172
+ SeparateDefinitionBlocks: Leave
173
+ ShortNamespaceLines: 1
174
+ SortIncludes: CaseSensitive
175
+ SortJavaStaticImport: Before
176
+ SortUsingDeclarations: true
177
+ SpaceAfterCStyleCast: false
178
+ SpaceAfterLogicalNot: false
179
+ SpaceAfterTemplateKeyword: true
180
+ SpaceBeforeAssignmentOperators: true
181
+ SpaceBeforeCaseColon: false
182
+ SpaceBeforeCpp11BracedList: false
183
+ SpaceBeforeCtorInitializerColon: true
184
+ SpaceBeforeInheritanceColon: true
185
+ SpaceBeforeParens: ControlStatements
186
+ SpaceBeforeParensOptions:
187
+ AfterControlStatements: true
188
+ AfterForeachMacros: true
189
+ AfterFunctionDefinitionName: false
190
+ AfterFunctionDeclarationName: false
191
+ AfterIfMacros: true
192
+ AfterOverloadedOperator: false
193
+ BeforeNonEmptyParentheses: false
194
+ SpaceAroundPointerQualifiers: Default
195
+ SpaceBeforeRangeBasedForLoopColon: true
196
+ SpaceInEmptyBlock: false
197
+ SpaceInEmptyParentheses: false
198
+ SpacesBeforeTrailingComments: 2
199
+ SpacesInAngles: Never
200
+ SpacesInConditionalStatement: false
201
+ SpacesInContainerLiterals: true
202
+ SpacesInCStyleCastParentheses: false
203
+ SpacesInLineCommentPrefix:
204
+ Minimum: 1
205
+ Maximum: -1
206
+ SpacesInParentheses: false
207
+ SpacesInSquareBrackets: false
208
+ SpaceBeforeSquareBrackets: false
209
+ BitFieldColonSpacing: Both
210
+ Standard: Auto
211
+ StatementAttributeLikeMacros:
212
+ - Q_EMIT
213
+ StatementMacros:
214
+ - Q_UNUSED
215
+ - QT_REQUIRE_VERSION
216
+ TabWidth: 8
217
+ UseCRLF: false
218
+ UseTab: Never
219
+ WhitespaceSensitiveMacros:
220
+ - STRINGIZE
221
+ - PP_STRINGIZE
222
+ - BOOST_PP_STRINGIZE
223
+ - NS_SWIFT_NAME
224
+ - CF_SWIFT_NAME
225
+ ...
226
+
@@ -0,0 +1,102 @@
1
+ name: C++ CI (Linux, MacOS, Windows)
2
+
3
+ on:
4
+ push:
5
+ branches: [ "main", "develop" ]
6
+ pull_request:
7
+ branches: [ "main", "develop" ]
8
+
9
+ env:
10
+ # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
11
+ BUILD_TYPE: Release
12
+
13
+ jobs:
14
+ build:
15
+ # The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
16
+ # You can convert this to a matrix build if you need cross-platform coverage.
17
+ # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
18
+ # runs-on: ubuntu-latest
19
+ runs-on: ${{ matrix.os }}
20
+
21
+ strategy:
22
+ # Ensures all matrix combinations runs if one fails
23
+ fail-fast: false
24
+
25
+ # Set up our build-matrix
26
+ # 1) Linux GCC
27
+ # 2) Linux Clang
28
+ # 3) MaxOS Clang
29
+ # 4) Windows MSVC
30
+ matrix:
31
+ os: [ubuntu-latest, macos-latest, windows-latest]
32
+ build_type: [Release]
33
+ cpp_compiler: [g++, clang++, cl]
34
+ include:
35
+ - os: ubuntu-latest
36
+ cpp_compiler: g++
37
+ - os: ubuntu-latest
38
+ cpp_compiler: clang++
39
+ - os: macos-latest
40
+ cpp_compiler: g++
41
+ - os: macos-latest
42
+ cpp_compiler: clang++
43
+ - os: windows-latest
44
+ cpp_compiler: cl
45
+ exclude:
46
+ - os: ubuntu-latest
47
+ cpp_compiler: cl
48
+ - os: macos-latest
49
+ cpp_compiler: cl
50
+ - os: windows-latest
51
+ cpp_compiler: g++
52
+ - os: windows-latest
53
+ cpp_compiler: clang++
54
+
55
+
56
+
57
+ steps:
58
+ - name: Set reusable strings
59
+ id: strings
60
+ shell: bash
61
+ run: |
62
+ echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT"
63
+
64
+ - name: Checkout
65
+ uses: actions/checkout@v4
66
+ with:
67
+ submodules: 'true'
68
+ fetch-tags: 'true'
69
+ fetch-depth: 0
70
+
71
+ - name: Change submodule URLs to HTTPS
72
+ run: |
73
+ git submodule foreach '
74
+ git config submodule.$name.url https://github.com/$urlPath
75
+ '
76
+ - name: Submodules and Dependencies
77
+ run: |
78
+ git config --global --add safe.directory ${{ github.workspace }}
79
+ git submodule update --init --recursive
80
+
81
+ - name: Configure CMake
82
+ # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
83
+ # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
84
+ run: >
85
+ cmake -B ${{ steps.strings.outputs.build-output-dir }}
86
+ -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }}
87
+ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
88
+ -S ${{ github.workspace }}
89
+
90
+
91
+ - name: Build
92
+ # Build your program with the given configuration
93
+ run: |
94
+ cmake --build ${{ steps.strings.outputs.build-output-dir }}
95
+ cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} --target SHARPlib_tests
96
+
97
+ - name: Test
98
+ working-directory: ${{ steps.strings.outputs.build-output-dir }}
99
+ # Execute tests defined by the CMake configuration.
100
+ # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
101
+ run: ctest -C ${{ matrix.build_type }}
102
+
@@ -0,0 +1,18 @@
1
+ name: Build Docs
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ jobs:
9
+ deploy:
10
+ runs-on: ubuntu-latest
11
+ permissions:
12
+ contents: write
13
+ steps:
14
+ - uses: DenverCoder1/doxygen-github-pages-action@v2.0.0
15
+ with:
16
+ github_token: ${{ secrets.GITHUB_TOKEN }}
17
+ folder: docs/html
18
+ config_file: Doxyfile
@@ -0,0 +1,56 @@
1
+ name: Python CI (Linux, MacOS, Windows)
2
+
3
+ on:
4
+ push:
5
+ branches: ["main", "develop"]
6
+ pull_request:
7
+ branches: ["main", "develop"]
8
+
9
+ jobs:
10
+ build:
11
+ runs-on: ${{ matrix.os }}
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ os: [ubuntu-latest, macos-latest, windows-latest]
16
+ python-version: ["3.10", "3.11", "3.12", "3.13"]
17
+ steps:
18
+ - name: Set windows environment variables
19
+ if: startsWith(matrix.os, 'windows')
20
+ shell: pwsh
21
+ run: |
22
+ echo "NUGET_PACKAGES=D:\nuget\packages" >> $ENV:GITHUB_ENV
23
+ echo "DOTNET_ROOT=D:\tools\dotnet" >> $ENV:GITHUB_ENV
24
+ echo "DOTNET_INSTALL_DIR=D:\tools\dotnet" >> $ENV:GITHUB_ENV
25
+ echo "LocalAppData=D:\a\_LocalAppData" >> $ENV:GITHUB_ENV
26
+ echo "TEMP=D:\a\_temp" >> $ENV:GITHUB_ENV
27
+ echo "TMP=D:\a\_temp" >> $ENV:GITHUB_ENV
28
+
29
+ - name: Checkout
30
+ uses: actions/checkout@v4
31
+ with:
32
+ submodules: 'true'
33
+ fetch-tags: 'true'
34
+ fetch-depth: 0
35
+
36
+ - name: Change submodule URLs to HTTPS
37
+ run: |
38
+ git submodule foreach '
39
+ git config submodule.$name.url https://github.com/$urlPath
40
+ '
41
+ - name: Submodules and Dependencies
42
+ run: |
43
+ git config --global --add safe.directory ${{ github.workspace }}
44
+ git submodule update --init --recursive
45
+
46
+ - uses: actions/setup-python@v5
47
+ with:
48
+ python-version: ${{ matrix.python-version }}
49
+
50
+ - name: Build and install
51
+ run: |
52
+ python -m pip install pytest pandas fastparquet
53
+ pip install --verbose .
54
+
55
+ - name: Test
56
+ run: python -m pytest
@@ -0,0 +1,102 @@
1
+ name: Build Wheels
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ pull_request:
6
+ release:
7
+ types:
8
+ - published
9
+
10
+ jobs:
11
+ build_wheels:
12
+ name: Build wheels for ${{ matrix.os }}
13
+ runs-on: ${{ matrix.runs-on }}
14
+ strategy:
15
+ matrix:
16
+ os: [ linux-intel, linux-arm, windows, macOS-intel, macOS-arm ]
17
+ include:
18
+ - archs: auto
19
+ platform: auto
20
+ - os: linux-intel
21
+ runs-on: ubuntu-latest
22
+ - os: linux-arm
23
+ runs-on: ubuntu-24.04-arm
24
+ - os: windows
25
+ runs-on: windows-latest
26
+ - os: macos-intel
27
+ # macos-13 was the last x86_64 runner
28
+ runs-on: macos-13
29
+ - os: macos-arm
30
+ # macos-14+ (including latest) are ARM64 runners
31
+ runs-on: macos-latest
32
+ archs: auto,universal2
33
+
34
+ steps:
35
+ - uses: actions/checkout@v4
36
+ with:
37
+ submodules: 'true'
38
+ fetch-tags: 'true'
39
+ fetch-depth: 0
40
+
41
+ - name: Change submodule URLs to HTTPS
42
+ run: |
43
+ git submodule foreach '
44
+ git config submodule.$name.url https://github.com/$urlPath
45
+ '
46
+ - name: Submodules and Dependencies
47
+ run: |
48
+ git config --global --add safe.directory ${{ github.workspace }}
49
+ git submodule update --init --recursive
50
+
51
+ - name: Build wheels
52
+ uses: pypa/cibuildwheel@v2.23.3
53
+ env:
54
+ CIBW_PLATFORM: ${{ matrix.platform }}
55
+ CIBW_ARCHS: ${{ matrix.archs }}
56
+ # Can also be configured directly, using `with:`
57
+ # with:
58
+ # package-dir: .
59
+ # output-dir: wheelhouse
60
+ # config-file: "{package}/pyproject.toml"
61
+
62
+ - uses: actions/upload-artifact@v4
63
+ with:
64
+ name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}
65
+ path: ./wheelhouse/*.whl
66
+
67
+ build_sdist:
68
+ name: Build source distribution
69
+ runs-on: ubuntu-latest
70
+ steps:
71
+ - uses: actions/checkout@v4
72
+
73
+ - name: Build sdist
74
+ run: pipx run build --sdist
75
+
76
+ - uses: actions/upload-artifact@v4
77
+ with:
78
+ name: cibw-sdist
79
+ path: dist/*.tar.gz
80
+
81
+ upload_pypi:
82
+ needs: [build_wheels, build_sdist]
83
+ runs-on: ubuntu-latest
84
+ environment:
85
+ name: pypi
86
+ url: https://test.pypi.org/p/SHARPlib
87
+ permissions:
88
+ id-token: write
89
+ if: github.event_name == 'release' && github.event.action == 'published'
90
+ # or, alternatively, upload to PyPI on every tag starting with 'v' (remove on: release above to use this)
91
+ # if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
92
+ steps:
93
+ - uses: actions/download-artifact@v4
94
+ with:
95
+ # unpacks all CIBW artifacts into dist/
96
+ pattern: cibw-*
97
+ path: dist
98
+ merge-multiple: true
99
+
100
+ - uses: pypa/gh-action-pypi-publish@release/v1
101
+ #with:
102
+ #repository-url: https://test.pypi.org/legacy/
@@ -0,0 +1,59 @@
1
+ # Prerequisites
2
+ *.d
3
+
4
+ # Compiled Object files
5
+ *.slo
6
+ *.lo
7
+ *.o
8
+ *.obj
9
+
10
+ # Precompiled Headers
11
+ *.gch
12
+ *.pch
13
+
14
+ # Compiled Dynamic libraries
15
+ *.so
16
+ *.dylib
17
+ *.dll
18
+
19
+ # Fortran module files
20
+ *.mod
21
+ *.smod
22
+
23
+ # Compiled Static libraries
24
+ *.lai
25
+ *.la
26
+ *.a
27
+ *.lib
28
+
29
+ ## CMake stuff
30
+ CMakeCahce.txt
31
+ install_manifest.txt
32
+ Makefile
33
+ CMakeLists.txt.user
34
+ CMakeCache.txt
35
+ CMakeFiles
36
+ CMakeScripts
37
+ Testing
38
+ Makefile
39
+ cmake_install.cmake
40
+ install_manifest.txt
41
+ compile_commands.json
42
+ CTestTestfile.cmake
43
+ _deps
44
+
45
+ # Executables
46
+ *.exe
47
+ *.out
48
+ *.app
49
+
50
+ # Ignore the build directory
51
+ build
52
+ .cache
53
+
54
+ # Ignore built docs
55
+ docs/html
56
+ docs/latex
57
+
58
+ # Python
59
+ __pycache__
@@ -0,0 +1,54 @@
1
+ # Use the official RHEL8 Universal Baseline Image (UBI)
2
+ # to build and test SHARPlib using CMake.
3
+
4
+ variables:
5
+ BUILD_DIR: "buid_${COMPILER}"
6
+ CMAKE_BUILD_OPTIONS: "-j 4 --target SHARPlib_tests"
7
+
8
+ stages:
9
+ - security
10
+ - build
11
+ - test
12
+
13
+ sast:
14
+ stage: security
15
+ variables:
16
+ SAST_EXCLUDED_PATHS: "build, docs, tests, examples"
17
+
18
+ include:
19
+ - template: Security/SAST.gitlab-ci.yml
20
+
21
+ # Set up a Linux build matrix that includes
22
+ # information on the image, setup/install
23
+ # dependencies, etc
24
+ .parallel-linux:
25
+ image: redhat/ubi8
26
+ before_script:
27
+ - dnf update -y && dnf install -y cmake make gcc gcc-c++ clang git
28
+ - git submodule update --init --recursive
29
+ parallel:
30
+ matrix:
31
+ - COMPILER: [g++, clang++]
32
+
33
+ ## The CMake build step
34
+ build-linux:
35
+ extends: .parallel-linux
36
+ stage: build
37
+ script:
38
+ - echo "BUILDING $COMPILER"
39
+ - cmake -B ${BUILD_DIR} . -DCMAKE_CXX_COMPILER=$COMPILER
40
+ - cmake --build ${BUILD_DIR} $CMAKE_BUILD_OPTIONS
41
+ artifacts:
42
+ expire_in: 5 mins
43
+ paths:
44
+ - ${BUILD_DIR}
45
+
46
+ # run tests using the binary built before
47
+ test-linux:
48
+ extends: .parallel-linux
49
+ stage: test
50
+ script:
51
+ - echo "TESTING $COMPILER"
52
+ - cd ${BUILD_DIR}
53
+ - ctest --verbose
54
+
@@ -0,0 +1,12 @@
1
+ [submodule "docs/doxygen-awesome-css"]
2
+ path = docs/doxygen-awesome-css
3
+ url = https://github.com/jothepro/doxygen-awesome-css.git
4
+ [submodule "external/fmt"]
5
+ path = external/fmt
6
+ url = https://github.com/fmtlib/fmt.git
7
+ [submodule "external/benchmark"]
8
+ path = external/benchmark
9
+ url = https://github.com/google/benchmark.git
10
+ [submodule "external/nanobind"]
11
+ path = external/nanobind
12
+ url = https://github.com/wjakob/nanobind