hatch-pip-compile
                                
                                
                                
                                    hatch-pip-compile copied to clipboard
                            
                            
                            
                        matrix environments with parent environment with different python version raise an error
This can be problematic in CI/CD where you run hatch run +py={{ matrix.python }} matrix:cov and have hatch.python set to a differing version than your current matrix version
[tool.hatch.envs.default]
pip-compile-constraint = "default"
type = "pip-compile"
python = "3.11"
[tool.hatch.envs.test]
dependencies = [
  "pytest",
  "pytest-cov"
]
[tool.hatch.envs.test.scripts]
cov = [
  "pytest --cov-config=pyproject.toml --cov {args:tests}"
]
[tool.hatch.envs.matrix]
template = "test"
[[tool.hatch.envs.matrix.matrix]]
python = ["3.8", "3.9", "3.10", "3.11", "3.12"]
In the above example you must have the 3.11 environment available to use pip-compile environments from a matrix because default is a constraint environment
AttributeError: 'NoneType' object has no attribute 'executable'
https://github.com/juftin/hatch-pip-compile/actions/runs/7117731072/job/19379122673?pr=28
See how this is handled here: https://github.com/juftin/hatch-pip-compile/blob/238fd44410ece0b53f5f2eb059ae85406a3aba45/.github/workflows/tests.yaml#L41-L49
IMO this isn't a bug - but this should probably be documented
The way that it's handled in this repo means we generate a lockfile for each Python version - if you wanted one lockfile for all python versions you could handle it like this and forget the hatch matrix entirely:
[tool.hatch.envs.default]
type = "pip-compile"
python = "3.11"
[tool.hatch.envs.test]
template = "test"
dependencies = [
  "pytest",
  "pytest-cov"
]
type = "pip-compile"
pip-compile-constraint = "default"
[tool.hatch.envs.test.scripts]
cov = [
  "pytest --cov-config=pyproject.toml --cov {args:tests}"
]