Skip to content

Commit 41605ba

Browse files
authored
Merge pull request #15 from CalebBell/ci_updates
Ci updates
2 parents 2a182d2 + 2cbfeb7 commit 41605ba

File tree

11 files changed

+67
-36
lines changed

11 files changed

+67
-36
lines changed

.github/workflows/build-multiarch.yml

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -33,25 +33,12 @@ jobs:
3333
- arch: aarch64
3434
distro: ubuntu_latest
3535
- arch: riscv64
36-
distro: ubuntu_latest
36+
distro: ubuntu_devel
3737
- arch: s390x
3838
distro: ubuntu_latest
3939
- arch: ppc64le
4040
distro: ubuntu_latest
4141

42-
- arch: armv7
43-
distro: ubuntu22.04
44-
- arch: aarch64
45-
distro: ubuntu22.04
46-
# - arch: riscv64
47-
# distro: ubuntu22.04
48-
- arch: s390x
49-
distro: ubuntu22.04
50-
- arch: ppc64le
51-
distro: ubuntu22.04
52-
# ubuntu with riscv64 has three failures and a crash on test_SolverInterface_basics in scipy's root function; also test_is_poly_positive and test_bend_rounded_Miller_Re_correction
53-
# ubuntu20.04 is too old, fluids dropped support with numpy 2.0 compat
54-
5542
- arch: armv6
5643
distro: alpine_latest
5744
- arch: armv7
@@ -98,4 +85,4 @@ jobs:
9885
python3 -m pip install wheel --break-system-packages
9986
pip3 install -r requirements_test_multiarch.txt --break-system-packages
10087
fi
101-
python3 -m pytest . -v -m "not online and not thermo and not numba"
88+
python3 -m pytest . -v -m "not online and not thermo and not numba"

.ruff.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ select = ["ALL"]
1919
extend-ignore = [
2020
"FBT001", # boolean positional argument
2121
"PD008", # .at with pandas is fine with me
22+
"PD011", # Use .values instead of .to_numpy() - I prefer not to copy arrays
2223
"RUF059", # Allow unused variables
2324
"FIX002", # TODO are OK
2425
"FIX004", # HACK is OK
@@ -110,6 +111,7 @@ extend-ignore = [
110111
"RET",
111112
"RSE102",
112113
"RUF001",
114+
"RUF003", # greek characters are used in this project e.g. for allotropes
113115
"RUF005", # this one is not micropython compatible
114116
"S101",
115117
"S110",

Changelog.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,46 @@
22

33
## [Unreleased]
44

5+
## [1.1.0] - 2025-10-19
6+
7+
### Added
8+
9+
- Python 3.13 and 3.13t (free-threaded) support with PYTHON_GIL=0 configuration
10+
- Pre-commit configuration with Ruff, mdformat, and file validators
11+
- New GitHub Actions workflows for pre-commit checks and security scanning
12+
- Packaging compatibility workflows for cx_Freeze, PyInstaller, and py2exe
13+
- Standalone test scripts and demo builders for verifying packaged distributions
14+
- Coverage HTML artifact uploads to all test workflows
15+
- Concurrency controls to workflows to cancel redundant builds
16+
- Justfile for streamlined development tasks (setup, docs, test, typecheck, lint)
17+
- Security scanning with pip-audit and bandit
18+
19+
### Changed
20+
21+
- Minimum Python version raised from 3.6 to 3.8
22+
- Updated actions to latest versions (setup-qemu v3, run-on-arch v3)
23+
- Updated macOS CI runners (macos-13 → macos-15-intel, added macos-latest for ARM)
24+
- Extensive code quality improvements with Ruff linting across entire codebase:
25+
- String quote normalization to double quotes
26+
- Removed unused imports and variables
27+
- Improved code formatting and PEP 8 compliance
28+
- Better type hints compatibility
29+
- Merged type hints across the codebase with improved accuracy
30+
- Updated copyright year to 2025
31+
- Fixed numerous typos across documentation files
32+
- Improved Sphinx configuration for Python 3.13 compatibility
33+
- Enhanced docstring and markdown formatting
34+
- Updated README to reflect Python 3.8+ requirement
35+
36+
### Removed
37+
38+
- Dropped Python 3.6 and 3.7 support
39+
- Removed obsolete platform-specific exclusions
40+
41+
### Security
42+
43+
- Added automated security scanning workflow documented in SECURITY.md
44+
545
## [1.0.7] - 2024-11-10
646

747
### Changed

Justfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ docs:
3535
@echo "✅ Docs built in _build/html"
3636

3737
## 🧪 test: Run the test suite with pytest.
38-
test:
38+
test *ARGS:
3939
@echo ">>> Running pytest..."
40-
@{{VENV_PYTEST}} -n auto
40+
@{{VENV_PYTEST}} -n auto {{ARGS}}
4141

4242
## 📊 test-cov: Run tests with coverage report.
4343
test-cov:

ht/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,5 +133,5 @@ def __getattr__(name):
133133
return ht.numba_vectorized
134134
raise AttributeError(f"module {__name__} has no attribute {name}")
135135

136-
__version__ = "1.0.7"
136+
__version__ = "1.1.0"
137137

ht/hx.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
from fluids.constants import Btu, degree_Fahrenheit, foot, hour, inch
2929
from fluids.numerics import bisect, brenth, factorial, gamma, horner, iv, quad, secant
3030
from fluids.numerics import numpy as np
31-
from fluids.piping import BWG_SI, BWG_integers
31+
from fluids.piping import BWG_SI, BWG_gauges
3232

3333
__all__: list[str] = [
3434
"DBundle_for_Ntubes_HEDH",
@@ -4309,7 +4309,7 @@ def F_LMTD_Fakheri(Thi: int, Tho: float, Tci: int, Tco: float, shells: int=1) ->
43094309
#
43104310
#for tup in TEMA_Full_Tubing:
43114311
# Do, BWG = tup[0]/1000., tup[1]
4312-
# t = BWG_SI[BWG_integers.index(BWG)]
4312+
# t = BWG_SI[BWG_gauges.index(BWG)]
43134313
# Di = Do-2*t
43144314
# print t*1000, Di*1000
43154315
#
@@ -4334,43 +4334,43 @@ def get_tube_TEMA(NPS=None, BWG=None, Do=None, Di=None, tmin=None):
43344334
if not check_tubing_TEMA(NPS, BWG):
43354335
raise ValueError("NPS and BWG Specified are not listed in TEMA")
43364336
Do = 0.0254*NPS
4337-
t = BWG_SI[BWG_integers.index(BWG)]
4337+
t = BWG_SI[BWG_gauges.index(BWG)]
43384338
Di = Do-2*t
43394339
elif Do and BWG:
43404340
NPS = Do/.0254
43414341
if not check_tubing_TEMA(NPS, BWG):
43424342
raise ValueError("NPS and BWG Specified are not listed in TEMA")
4343-
t = BWG_SI[BWG_integers.index(BWG)]
4343+
t = BWG_SI[BWG_gauges.index(BWG)]
43444344
Di = Do-2*t
43454345
elif BWG and Di:
4346-
t = BWG_SI[BWG_integers.index(BWG)] # Will fail if BWG not int
4346+
t = BWG_SI[BWG_gauges.index(BWG)] # Will fail if BWG not int
43474347
Do = t*2 + Di
43484348
NPS = Do/.0254
43494349
if not check_tubing_TEMA(NPS, BWG):
43504350
raise ValueError("NPS and BWG Specified are not listed in TEMA")
43514351
elif NPS and Di:
43524352
Do = 0.0254*NPS
43534353
t = (Do - Di)/2
4354-
BWG = [BWG_integers[BWG_SI.index(t)]]
4354+
BWG = [BWG_gauges[BWG_SI.index(t)]]
43554355
if not check_tubing_TEMA(NPS, BWG):
43564356
raise ValueError("NPS and BWG Specified are not listed in TEMA")
43574357
elif Di and Do:
43584358
NPS = Do/.0254
43594359
t = (Do - Di)/2
4360-
BWG = [BWG_integers[BWG_SI.index(t)]]
4360+
BWG = [BWG_gauges[BWG_SI.index(t)]]
43614361
if not check_tubing_TEMA(NPS, BWG):
43624362
raise ValueError("NPS and BWG Specified are not listed in TEMA")
43634363
# Begin Fuzzy matching
43644364
elif NPS and tmin:
43654365
Do = 0.0254*NPS
4366-
ts = [BWG_SI[BWG_integers.index(BWG)] for BWG in TEMA_tubing[NPS]]
4366+
ts = [BWG_SI[BWG_gauges.index(BWG)] for BWG in TEMA_tubing[NPS]]
43674367
ts.reverse() # Small to large
43684368
if tmin > ts[-1]:
43694369
raise ValueError("Specified minimum thickness is larger than available in TEMA")
43704370
for t in ts: # Runs if at least 1 of the thicknesses are the right size.
43714371
if tmin <= t:
43724372
break
4373-
BWG = [BWG_integers[BWG_SI.index(t)]]
4373+
BWG = [BWG_gauges[BWG_SI.index(t)]]
43744374
Di = Do-2*t
43754375
elif Do and tmin:
43764376
NPS = Do/.0254
@@ -4380,7 +4380,7 @@ def get_tube_TEMA(NPS=None, BWG=None, Do=None, Di=None, tmin=None):
43804380
elif NPS:
43814381
BWG = TEMA_tubing[NPS][0] # Pick the first listed size
43824382
Do = 0.0254*NPS
4383-
t = BWG_SI[BWG_integers.index(BWG)]
4383+
t = BWG_SI[BWG_gauges.index(BWG)]
43844384
Di = Do-2*t
43854385
else:
43864386
raise ValueError("Insufficient information provided")

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
fluids>=1.1.0
1+
fluids>=1.2.0
22
scipy>=1.6.0

requirements_docs.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,4 @@ jacobi
2525
numdifftools
2626
mpmath
2727
pandas
28-
fluids>=1.1.0
28+
fluids>=1.2.0

requirements_test.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ IPython
1313
sphinx
1414
wheel
1515
mpmath
16-
fluids>=1.1.0
16+
fluids>=1.2.0
1717
matplotlib
1818
ruff
1919
mypy

requirements_test_multiarch.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
pytest
2+
pytest-cov
23
sympy
3-
fuzzywuzzy
4+
thefuzz
45
pint
56
pytz
67
IPython
78
sphinx
89
wheel
910
mpmath
10-
fluids>=1.1.0
11+
fluids>=1.2.0

0 commit comments

Comments
 (0)