Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
fetch-depth: 0 # required for setuptools-scm

Expand All @@ -35,7 +35,7 @@ jobs:
# run: coverage-badge -o coverage.svg
#
# - name: Upload coverage badge
# uses: actions/upload-artifact@v4
# uses: actions/upload-artifact@v6
# with:
# name: coverage.svg
# path: coverage.svg
2 changes: 1 addition & 1 deletion .github/workflows/mkdocs-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
fetch-depth: 0 # required for setuptools-scm

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/mypy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
fetch-depth: 0 # required for setuptools-scm

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pylint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
fetch-depth: 0 # required for setuptools-scm

Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/pypi-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ jobs:

runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
fetch-depth: 0 # required for setuptools-scm

Expand All @@ -68,7 +68,7 @@ jobs:
github-token: ${{ github.token }}

- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: "3.12"

Expand All @@ -91,7 +91,7 @@ jobs:
shell: bash

- name: Upload artifacts
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: dist-${{ matrix.os }}
path: ./dist
Expand Down Expand Up @@ -122,7 +122,7 @@ jobs:
shell: bash

- name: Upload artifacts
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: dist
path: ./dist
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/pytest-reusable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
runs-on: ${{ inputs.os }} # The runner's OS is provided by the 'os' input

steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
name: Checkout Repository Code # A clear name for this foundational step
with:
fetch-depth: 0 # Required for setuptools-scm
Expand Down Expand Up @@ -77,7 +77,7 @@ jobs:
continue-on-error: true

- name: Upload Valgrind log artifact 📤
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
if: ${{ always() && inputs.stress_test == true && startsWith(inputs.engine_name, 'cythonized_') }}
with:
name: valgrind-stress-test-log-${{ inputs.os }}-py${{ inputs.python_version }}-${{ inputs.engine_name }}
Expand Down Expand Up @@ -107,7 +107,7 @@ jobs:

- name: Upload build artifacts 📤
if: success() && inputs.build_wheels == true
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: dist-${{ inputs.os }}-py${{ inputs.python_version }}
path: dist/
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ruff.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
fetch-depth: 0 # required for setuptools-scm

Expand Down
12 changes: 11 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [2.2.9] - 2026-03-16
[:simple-github: GitHub release][2.2.9]

### Changed
- Updated CI dependencies versions
- Updated a list of package dependencies in pyproject.toml

### Fixed
- Fixed `Unit.Joule` conversion factor in `Energy` class returning incorrect foot-pounds to Joules values.
- Types annotations codestyle fix
- Security fix for vulnerability described at (https://github.com/o-murphy/py-ballisticcalc/security/dependabot/1)

## [2.2.8] - 2026-01-26
[:simple-github: GitHub release][2.2.8]
Expand Down Expand Up @@ -525,7 +534,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Issue #141
- Trajectories that bend backwards

[Unreleased]: https://github.com/o-murphy/py-ballisticcalc/compare/v2.2.8...HEAD
[Unreleased]: https://github.com/o-murphy/py-ballisticcalc/compare/v2.2.9...HEAD
[2.2.9]: https://github.com/o-murphy/py-ballisticcalc/releases/tag/v2.2.9
[2.2.8]: https://github.com/o-murphy/py-ballisticcalc/releases/tag/v2.2.8
[2.2.7]: https://github.com/o-murphy/py-ballisticcalc/releases/tag/v2.2.7
[2.2.6.post1]: https://github.com/o-murphy/py-ballisticcalc/releases/tag/v2.2.6.post1
Expand Down
6 changes: 3 additions & 3 deletions py_ballisticcalc.exts/uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

40 changes: 20 additions & 20 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ requires = [
"setuptools",
"setuptools-scm[toml]>=9.2",
"setuptools_dynamic_dependencies",
"tomli; python_version<'3.11'"
"tomli>=2.4.0; python_version<'3.11'"
]
build-backend = "setuptools.build_meta"

Expand Down Expand Up @@ -38,8 +38,8 @@ classifiers = [
"Programming Language :: Python :: Implementation :: CPython",
]
dependencies = [
"typing_extensions>= 4.12.2",
"tomli>=2.2.1; python_version<'3.11'",
"typing_extensions>= 4.15.0",
"tomli>=2.4.0; python_version<'3.11'",
"Deprecated>=1.2.18",
]

Expand Down Expand Up @@ -118,7 +118,7 @@ fallback_version = "0.0.0.dev0"
[tool.setuptools_dynamic_dependencies.optional-dependencies]
exts = ["py_ballisticcalc.exts=={version}"]
charts = [
"matplotlib>=3.10.7",
"matplotlib>=3.10.8",
"pillow>=11.3.0; python_version>='3.13' and sys_platform == 'win32'", # minimal wheel required for matplotlib with python 3.13+ in windows
"pandas>=2.3.3",
"numpy>=2.2.6",
Expand All @@ -131,11 +131,11 @@ scipy = [
"scipy>=1.15.3",
]
dev = [
"Cython>=3.1.4",
"build>=1.3.0",
"Cython>=3.2.4",
"build>=1.4.0",

# math and data
"matplotlib>=3.10.7",
"matplotlib>=3.10.8",
"pillow>=11.3.0; python_version>='3.13' and sys_platform == 'win32'", # minimal wheel required for matplotlib with python 3.13+ in windows
"pandas>=2.3.3",
"numpy>=2.2.6",
Expand All @@ -148,17 +148,17 @@ dev = [

# code standards
"mypy>=1.18.2",
"pylint>=4.0.1",
"pylint>=4.0.5",
"pytest>=8.4.2",
"pytest-cov>=7.0.0",
"pytest-xdist>=3.8.0",
"ruff>=0.14.0",
"cython-lint>=0.18.1",
"pre-commit>=4.5.0",
"ruff>=0.15.6",
"cython-lint>=0.19.0",
"pre-commit>=4.5.1",

# stubs
"scipy-stubs>=1.16.2.3; python_version>='3.11'",
"types-deprecated>=1.2.15.20250304",
"types-deprecated>=1.3.1.20260130",
"pandas-stubs>=2.3.2.250926",
]
docs = [
Expand All @@ -180,11 +180,11 @@ docs = [
# Duplication of "dev" group here is required to support `uv sync --dev`
# Previous declaration sufficient if we standardize on `uv pip install -e .[dev]`
dev = [
"Cython>=3.1.4",
"build>=1.3.0",
"Cython>=3.2.4",
"build>=1.4.0",

# math and data
"matplotlib>=3.10.7",
"matplotlib>=3.10.8",
"pillow>=11.3.0; python_version>='3.13' and sys_platform == 'win32'", # minimal wheel required for matplotlib with python 3.13+ in windows
"pandas>=2.3.3",
"numpy>=2.2.6",
Expand All @@ -197,17 +197,17 @@ dev = [

# code standards
"mypy>=1.18.2",
"pylint>=4.0.1",
"pylint>=4.0.5",
"pytest>=8.4.2",
"pytest-cov>=7.0.0",
"pytest-xdist>=3.8.0",
"ruff>=0.14.0",
"cython-lint>=0.18.1",
"pre-commit>=4.5.0",
"ruff>=0.15.6",
"cython-lint>=0.19.0",
"pre-commit>=4.5.1",

# stubs
"scipy-stubs>=1.16.2.3; python_version>='3.11'",
"types-deprecated>=1.2.15.20250304",
"types-deprecated>=1.3.1.20260130",
"pandas-stubs>=2.3.2.250926",
]
test = [
Expand Down
3 changes: 1 addition & 2 deletions scripts/benchmark.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
import sys
from dataclasses import dataclass, asdict
from pathlib import Path
from typing import Optional
from collections.abc import Sequence

# Local imports (package must be importable)
Expand Down Expand Up @@ -252,7 +251,7 @@ def iter_engine_names() -> list[str]:
return [ep.name for ep in Calculator.iter_engines()]


def main(argv: Optional[Sequence[str]] = None) -> int:
def main(argv: Sequence[str] | None = None) -> int:
parser = get_parser()
ns: argparse.Namespace = parser.parse_args(argv)

Expand Down
3 changes: 1 addition & 2 deletions tests/test_calc_serialization.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from dataclasses import dataclass
from functools import partial
from typing import Optional

import pytest

Expand Down Expand Up @@ -59,7 +58,7 @@ def create_shot(self):
@dataclass
class CachingWrapper(BaseCalcWrapper):
engine: object
_calc: Optional[Calculator] = None
_calc: Calculator | None = None

def __post_init__(self):
self._calc = create_zero_velocity_calc(self.engine)
Expand Down
Loading