Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
eef04fe
Add support for workspaces
ofek Jun 2, 2024
0058046
Merge remote-tracking branch 'refs/remotes/origin/master' into worksp…
cjames23 Sep 22, 2025
9fc0f41
Fix not all reqs convert to deps issue
cjames23 Sep 22, 2025
c0152b2
Additional fixes for Requirements to Dependency conversion, fix tests…
cjames23 Sep 25, 2025
4dc4339
Fixing tests and typing issues found during workspaces dev.
cjames23 Sep 26, 2025
203b30e
Fix failing tests, handle subprocess buffering causing output issues …
cjames23 Sep 26, 2025
ef09d2a
Remove unused type-ignore comments
cjames23 Sep 26, 2025
9079b2a
Remove 3.8 from test workflows.
cjames23 Sep 26, 2025
83b119d
Drop 3.8 in classifiers and add changelogs to history docs.
cjames23 Sep 26, 2025
74d0daa
Fix requires-python for hatch
cjames23 Sep 26, 2025
4260722
Fix history doc for unreleased changes
cjames23 Sep 27, 2025
f448239
Fix: self test needed to have an additional arg, history doc formatting
cjames23 Sep 27, 2025
9c7a880
Update docs/history/hatch.md
cjames23 Sep 27, 2025
9d83042
Update docs/history/hatchling.md
cjames23 Sep 27, 2025
0a4b9af
Fix: formatting
cjames23 Sep 27, 2025
6215222
Merge remote-tracking branch 'origin/master'
cjames23 Sep 27, 2025
00f6c98
Merge remote-tracking branch 'origin/master' into workspaces
cjames23 Sep 27, 2025
6f07123
Add Workspace config model and tests for workspace support.
cjames23 Oct 3, 2025
e089124
Add workspace aware project discovery
cjames23 Oct 3, 2025
49640c1
Add support for workspaces
ofek Jun 2, 2024
2e82dc2
Fix not all reqs convert to deps issue
cjames23 Sep 22, 2025
1251148
Additional fixes for Requirements to Dependency conversion, fix tests…
cjames23 Sep 25, 2025
405a31b
Fixing tests and typing issues found during workspaces dev.
cjames23 Sep 26, 2025
29d8169
Drop 3.8 in classifiers and add changelogs to history docs.
cjames23 Sep 26, 2025
53f0a70
Fix history doc for unreleased changes
cjames23 Sep 27, 2025
ecb2bad
Fix: self test needed to have an additional arg, history doc formatting
cjames23 Sep 27, 2025
a81b13e
Fix: formatting
cjames23 Sep 27, 2025
6d3bd15
Add Workspace config model and tests for workspace support.
cjames23 Oct 3, 2025
c76dcd5
Add workspace aware project discovery
cjames23 Oct 3, 2025
5146231
Formatting changes and minor clean up
cjames23 Oct 5, 2025
ba36be5
Clean up merge conflicts with rebase and formatting
cjames23 Oct 5, 2025
98cd0e6
Merge remote-tracking branch 'origin/workspaces' into workspaces
cjames23 Oct 5, 2025
91e117c
Fix circular dependency, add properties to WorkspaceConfig,
cjames23 Oct 8, 2025
176faee
Utilize new workspace support for CI
cjames23 Oct 8, 2025
7c48bf9
Fix broad exception issue and other ruff errors
cjames23 Oct 8, 2025
8be9965
Change type for WorkspaceMember last_modified
cjames23 Oct 8, 2025
fa5272a
Move to using hatch env create to dogfood workspace support
cjames23 Oct 8, 2025
2ebe183
Revert workflow changes.
cjames23 Oct 8, 2025
88138e5
Fix member discovery issues.
cjames23 Oct 9, 2025
8416d4a
Fix formatting for dependencies block
cjames23 Oct 9, 2025
da10a4f
Handle case where project level workspace is not configured only envi…
cjames23 Oct 9, 2025
9a54b4d
Fix docs missing reference, update doc dependencies to handle depreca…
cjames23 Oct 9, 2025
af09e9a
Dogfooding workspaces with CI
cjames23 Oct 10, 2025
8261fce
Dogfood testing workspaces in CI
cjames23 Oct 10, 2025
aaa232c
Remove unnecessary scripts for dogfooding
cjames23 Oct 10, 2025
56e809b
Fix to ensure env creation happens before verifying hatchling
cjames23 Oct 10, 2025
89d105e
Revert changes for CI
cjames23 Oct 10, 2025
5502734
Change error type to enable dogfooding workspaces in CI
cjames23 Oct 14, 2025
1a5d7ae
Add back dependency on hatchling
cjames23 Oct 14, 2025
f55f61a
Add conflict logic for workspace members that are also declared depen…
cjames23 Oct 22, 2025
a136f72
Fix formatting for changes
cjames23 Oct 22, 2025
718be5e
Fix typing issues for project config
cjames23 Oct 22, 2025
b140f13
Fix bug for logic handling conflicts
cjames23 Oct 22, 2025
36570a8
Chore: Formatting
cjames23 Oct 22, 2025
07b4b90
Merge branch 'master' into workspaces
cjames23 Oct 22, 2025
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/build-hatch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ jobs:
run: |-
uv pip install --system build
uv pip install --system .
uv pip install --system ./backend
hatch env create
# Windows installers don't accept non-integer versions so we ubiquitously
# perform the following transformation: X.Y.Z.devN -> X.Y.Z.N
Expand Down Expand Up @@ -166,7 +166,7 @@ jobs:
- name: Install Hatch
run: |-
uv pip install --system -e .
uv pip install --system -e ./backend
hatch env create
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
Expand Down
1 change: 0 additions & 1 deletion .github/workflows/cli.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ jobs:
- name: Install ourself
run: |
uv pip install --system .
uv pip install --system ./backend
- name: Benchmark
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
- name: Install ourself
run: |
uv pip install --system -e .
uv pip install --system -e ./backend
hatch env create
- name: Configure Git for GitHub Actions bot
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
- name: Install ourself
run: |
uv pip install --system -e .
uv pip install --system -e ./backend
hatch env create
- name: Display full version
run: hatch version
Expand Down
148 changes: 74 additions & 74 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,125 +24,125 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install uv
uses: astral-sh/setup-uv@v3
- name: Install uv
uses: astral-sh/setup-uv@v3

- name: Install ourself
run: |
uv pip install --system -e .
uv pip install --system -e ./backend
- name: Install ourself
run: |
uv pip install --system -e .
hatch env create

- name: Run static analysis
run: hatch fmt --check
- name: Run static analysis
run: hatch fmt --check

- name: Check types
run: hatch run types:check
- name: Check types
run: hatch run types:check

- name: Run tests
run: hatch test --python ${{ matrix.python-version }} --cover-quiet --randomize --parallel --retries 5 --retry-delay 3
- name: Run tests
run: hatch test --python ${{ matrix.python-version }} --cover-quiet --randomize --parallel --retries 5 --retry-delay 3

- name: Disambiguate coverage filename
run: mv .coverage ".coverage.${{ matrix.os }}.${{ matrix.python-version }}"
- name: Disambiguate coverage filename
run: mv .coverage ".coverage.${{ matrix.os }}.${{ matrix.python-version }}"

- name: Upload coverage data
uses: actions/upload-artifact@v4
with:
include-hidden-files: true
name: coverage-${{ matrix.os }}-${{ matrix.python-version }}
path: .coverage*
- name: Upload coverage data
uses: actions/upload-artifact@v4
with:
include-hidden-files: true
name: coverage-${{ matrix.os }}-${{ matrix.python-version }}
path: .coverage*

coverage:
name: Report coverage
runs-on: ubuntu-latest
needs:
- run
- run

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v4

- name: Install Hatch
uses: pypa/hatch@install
- name: Install Hatch
uses: pypa/hatch@install

- name: Trigger build for auto-generated files
run: hatch build --hooks-only
- name: Trigger build for auto-generated files
run: hatch build --hooks-only

- name: Download coverage data
uses: actions/download-artifact@v4
with:
pattern: coverage-*
merge-multiple: true
- name: Download coverage data
uses: actions/download-artifact@v4
with:
pattern: coverage-*
merge-multiple: true

- name: Combine coverage data
run: hatch run coverage:combine
- name: Combine coverage data
run: hatch run coverage:combine

- name: Export coverage reports
run: |
hatch run coverage:report-xml
hatch run coverage:report-uncovered-html
- name: Export coverage reports
run: |
hatch run coverage:report-xml
hatch run coverage:report-uncovered-html

- name: Upload uncovered HTML report
uses: actions/upload-artifact@v4
with:
name: uncovered-html-report
path: htmlcov
- name: Upload uncovered HTML report
uses: actions/upload-artifact@v4
with:
name: uncovered-html-report
path: htmlcov

- name: Generate coverage summary
run: hatch run coverage:generate-summary
- name: Generate coverage summary
run: hatch run coverage:generate-summary

- name: Write coverage summary report
if: github.event_name == 'pull_request'
run: hatch run coverage:write-summary-report
- name: Write coverage summary report
if: github.event_name == 'pull_request'
run: hatch run coverage:write-summary-report

- name: Update coverage pull request comment
if: github.event_name == 'pull_request' && !github.event.pull_request.head.repo.fork
uses: marocchino/sticky-pull-request-comment@v2
with:
path: coverage-report.md
- name: Update coverage pull request comment
if: github.event_name == 'pull_request' && !github.event.pull_request.head.repo.fork
uses: marocchino/sticky-pull-request-comment@v2
with:
path: coverage-report.md

downstream:
name: Downstream builds with Python ${{ matrix.python-version }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install tools
run: pip install --upgrade -r backend/tests/downstream/requirements.txt
- name: Install tools
run: pip install --upgrade -r backend/tests/downstream/requirements.txt

- name: Build downstream projects
run: python backend/tests/downstream/integrate.py
- name: Build downstream projects
run: python backend/tests/downstream/integrate.py

# https://github.com/marketplace/actions/alls-green#why
check: # This job does nothing and is only used for the branch protection
if: always()

needs:
- coverage
- downstream
- coverage
- downstream

runs-on: ubuntu-latest

steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
4 changes: 4 additions & 0 deletions docs/history/hatchling.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),

- Drop support for Python 3.8

***Changed:***

- Drop support for Python 3.8

## [1.27.0](https://github.com/pypa/hatch/releases/tag/hatchling-v1.27.0) - 2024-11-26 ## {: #hatchling-v1.27.0 }

***Added:***
Expand Down
1 change: 1 addition & 0 deletions docs/meta/authors.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,4 @@
- Olga Matoula [:material-github:](https://github.com/olgarithms) [:material-twitter:](https://twitter.com/olgarithms_)
- Philip Blair [:material-email:](mailto:[email protected])
- Robert Rosca [:material-github:](https://github.com/robertrosca)
- Cary Hawkins [:material-github](https://github.com/cjames23)
1 change: 1 addition & 0 deletions docs/plugins/environment/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ All environment types should [offer support](#hatch.env.plugin.interface.Environ
- dependencies_in_sync
- sync_dependencies
- dependency_hash
- project_dependencies
- project_root
- sep
- pathsep
Expand Down
22 changes: 10 additions & 12 deletions hatch.toml
Original file line number Diff line number Diff line change
@@ -1,25 +1,24 @@

[envs.hatch-static-analysis]
config-path = "ruff_defaults.toml"

[envs.default]
installer = "uv"
post-install-commands = [
"uv pip install {verbosity:flag:-1} -e ./backend",

[envs.workspace-test]
dependencies = [
"pytest",
]

[envs.hatch-test]
extra-dependencies = [
"filelock",
"flit-core",
"hatchling",
"pyfakefs",
"trustme",
# Hatchling dynamic dependency
"editables",
]
post-install-commands = [
"pip install {verbosity:flag:-1} -e ./backend",
]
extra-args = ["--dist", "worksteal"]

[envs.hatch-test.extra-scripts]
Expand Down Expand Up @@ -53,18 +52,19 @@ dependencies = [
"mkdocs-minify-plugin~=0.8.0",
"mkdocs-git-revision-date-localized-plugin~=1.2.5",
"mkdocs-git-committers-plugin-2~=2.3.0",
"mkdocstrings-python~=1.10.3",
"mkdocstrings[python]~=0.26.0",
"mkdocs-redirects~=1.2.1",
"mkdocs-glightbox~=0.4.0",
"mike~=2.1.1",
"mkdocs-autorefs>=1.0.0",
# Extensions
"mkdocs-click~=0.8.1",
"pymdown-extensions~=10.8.1",
# Necessary for syntax highlighting in code blocks
"pygments~=2.18.0",
# Validation
"linkchecker~=10.5.0",
"griffe<1.0",
"griffe>=1.0.0",
]
pre-install-commands = [
"python scripts/install_mkdocs_material_insiders.py",
Expand All @@ -86,7 +86,7 @@ ci-build = "mike deploy --config-file {env:MKDOCS_CONFIG} --update-aliases {args
validate = "linkchecker --config .linkcheckerrc site"
# https://github.com/linkchecker/linkchecker/issues/678
build-check = [
"build --no-directory-urls",
"python -W ignore::DeprecationWarning -m mkdocs build --no-directory-urls",
"validate",
]

Expand Down Expand Up @@ -125,9 +125,7 @@ update-ruff = [
[envs.release]
detached = true
installer = "uv"
dependencies = [
"hatchling",
]

[envs.release.scripts]
bump = "python scripts/bump.py {args}"
github = "python scripts/release_github.py {args}"
5 changes: 4 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ classifiers = [
]
dependencies = [
"click>=8.0.6",
"hatchling>=1.24.2",
"hatchling>=1.27.0",
"httpx>=0.22.0",
"hyperlink>=21.0.0",
"keyring>=23.5.0",
Expand Down Expand Up @@ -68,6 +68,9 @@ Source = "https://github.com/pypa/hatch"
[project.scripts]
hatch = "hatch.cli:main"

[tool.hatch.workspace]
members = ["backend/"]

[tool.hatch.version]
source = "vcs"

Expand Down
Loading