@@ -22,32 +22,28 @@ jobs:
2222    name : test 
2323    runs-on : ${{ matrix.os }} 
2424    strategy :
25-       #  Allow other matrix jobs to complete if 1 fails
26-       fail-fast : false 
2725      matrix :
2826        python-version :
2927          - " 3.10" 
3028          - " 3.11" 
3129          - " 3.12" 
30+           - " 3.13" 
3231        os :
3332          - ubuntu-latest 
3433          - windows-latest 
3534          - macos-latest 
36- 
3735    steps :
3836      - uses : actions/checkout@v4 
39- 
40-       - name : Set up Python ${{ matrix.python-version }} 
41-         uses : actions/setup-python@v5 
37+       - uses : actions/setup-python@v5 
4238        with :
4339          python-version : ${{ matrix.python-version }} 
44-            cache :  " pip " 
45- 
46-       -  name :  Install dependencies 
47-          run :  pip install .[validation] -r requirements-dev.txt 
48- 
49-       - name : Execute  test suite 
50-         run : ./scripts/test 
40+       -  uses :  astral-sh/setup-uv@v3 
41+          with : 
42+            enable-cache :  true 
43+       -  name :  Sync 
44+          run :  uv sync --all-extras 
45+       - name : test 
46+         run : source .venv/bin/activate &&  ./scripts/test
5147        shell : bash 
5248        env :
5349          TMPDIR : " ${{ matrix.os == 'windows-latest' && 'D:\\ a\\ _temp' || '' }}" 
@@ -57,38 +53,31 @@ jobs:
5753    runs-on : ubuntu-latest 
5854    steps :
5955      - uses : actions/checkout@v4 
60- 
61-       - name : Set up Python 3.10 
62-         uses : actions/setup-python@v5 
56+       - uses : actions/setup-python@v5 
6357        with :
6458          python-version : " 3.10" 
65-           cache : " pip" 
66- 
59+       - uses : astral-sh/setup-uv@v3 
60+         with :
61+           enable-cache : true 
6762      - name : Install with dependencies 
68-         run : pip install .[validation] -r requirements-dev.txt 
69- 
63+         run : uv sync --all-extras 
7064      - name : Run coverage with orjson 
71-         run : pytest tests --cov 
72- 
65+         run : uv run pytest tests --cov 
7366      - name : Uninstall orjson 
74-         run : pip uninstall -y orjson 
75- 
67+         run : uv pip uninstall -y orjson 
7668      - name : Run coverage without orjson, appending results 
77-         run : pytest tests --cov --cov-append 
78- 
69+         run : uv run pytest tests --cov --cov-append 
7970      - name : Prepare ./coverage.xml 
8071        #  Ignore the configured fail-under to ensure we upload the coverage report. We
8172        #  will trigger a failure for coverage drops in a later job
82-         run : coverage xml --fail-under 0 
83- 
73+         run : uv run coverage xml --fail-under 0 
8474      - name : Upload All coverage to Codecov 
8575        uses : codecov/codecov-action@v4 
8676        if : ${{ env.GITHUB_REPOSITORY }} == 'stac-utils/pystac' 
8777        with :
8878          token : ${{ secrets.CODECOV_TOKEN }} 
8979          file : ./coverage.xml 
9080          fail_ci_if_error : false 
91- 
9281      - name : Check for coverage drop 
9382        #  This will use the configured fail-under, causing this job to fail if the
9483        #  coverage drops.
@@ -97,59 +86,41 @@ jobs:
9786  lint :
9887    runs-on : ubuntu-latest 
9988    strategy :
100-       #  Allow other matrix jobs to complete if 1 fails
101-       fail-fast : false 
10289      matrix :
10390        python-version :
10491          - " 3.10" 
10592          - " 3.11" 
10693          - " 3.12" 
107- 
94+           -  " 3.13 " 
10895    steps :
10996      - uses : actions/checkout@v4 
110- 
111-       - name : Set up Python ${{ matrix.python-version }} 
112-         uses : actions/setup-python@v5 
97+       - uses : actions/setup-python@v5 
11398        with :
11499          python-version : ${{ matrix.python-version }} 
115-            cache :  " pip " 
116- 
117-       -  name :  Install with test dependencies 
118-          run :  pip install . -r requirements-dev.txt 
119- 
100+       -  uses :  astral-sh/setup-uv@v3 
101+          with : 
102+            enable-cache :  true 
103+       -  name :  Sync 
104+          run :  uv sync 
120105      - name : Execute linters & type checkers 
121-         run : pre-commit run --all-files 
106+         run : uv  pre-commit run --all-files
122107
123108  without-orjson :
124109    runs-on : ubuntu-latest 
125110    steps :
126111      - uses : actions/checkout@v4 
127- 
128112      - uses : actions/setup-python@v5 
129113        with :
130114          python-version : " 3.10" 
131- 
132-       - name : Install 
133-         run : pip install .[validation] -r requirements-dev.txt 
134- 
115+       - uses : astral-sh/setup-uv@v3 
116+         with :
117+           enable-cache : true 
118+       - name : Sync 
119+         run : uv sync 
135120      - name : Uninstall orjson 
136-         run : pip uninstall -y orjson 
137- 
121+         run : uv pip uninstall -y orjson 
138122      - name : Run tests 
139-         run : pytest tests 
140- 
141-   check-all-dependencies :
142-     runs-on : ubuntu-latest 
143-     steps :
144-       - uses : actions/checkout@v4 
145- 
146-       - uses : actions/setup-python@v5 
147-         with :
148-           python-version : " 3.10" 
149-           cache : " pip" 
150- 
151-       - name : Install all dependencies 
152-         run : pip install .[orjson,urllib3,validation,jinja2] 
123+         run : uv run pytest tests 
153124
154125  check-benchmarks :
155126    #  This checks to make sure any API changes haven't broken any of the
@@ -161,9 +132,11 @@ jobs:
161132      - uses : actions/setup-python@v5 
162133        with :
163134          python-version : " 3.10" 
164-           cache : " pip" 
165-       - name : Install pystac 
166-         run : pip install . -r requirements-dev.txt 
135+       - uses : astral-sh/setup-uv@v3 
136+         with :
137+           enable-cache : true 
138+       - name : Sync 
139+         run : uv sync 
167140      - name : Set asv machine 
168141        run : asv machine --yes 
169142      - name : Check benchmarks 
@@ -176,10 +149,12 @@ jobs:
176149      - uses : actions/setup-python@v5 
177150        with :
178151          python-version : " 3.10" 
179-           cache : " pip" 
152+       - uses : astral-sh/setup-uv@v3 
153+         with :
154+           enable-cache : true 
180155      - name : Install pandoc 
181156        run : sudo apt-get install pandoc 
182157      - name : Install pystac 
183-         run : pip install . -r  docs/requirements-docs.txt 
158+         run : uv sync --no-dev && uv sync --package  docs --inexact 
184159      - name : Check docs 
185160        run : make -C docs html SPHINXOPTS="-W --keep-going" 
0 commit comments