← back to Exo
Add Linter
13b6043c09fba77b59ea7549821daf2decec1fb1 · 2025-06-17 07:32:33 +0100 · Arbion Halili
Files touched
A .github/workflows/lint.ymlM pyproject.tomlM uv.lock
Diff
commit 13b6043c09fba77b59ea7549821daf2decec1fb1
Author: Arbion Halili <99731180+ToxicPine@users.noreply.github.com>
Date: Tue Jun 17 07:32:33 2025 +0100
Add Linter
---
.github/workflows/lint.yml | 49 ++++++++++++++++++++++++++++++++
pyproject.toml | 14 ++++++++--
uv.lock | 70 +++++++++++++++++++---------------------------
3 files changed, 88 insertions(+), 45 deletions(-)
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
new file mode 100644
index 00000000..49c3689d
--- /dev/null
+++ b/.github/workflows/lint.yml
@@ -0,0 +1,49 @@
+name: lint
+
+on:
+ push:
+ branches:
+ - staging
+ - main
+ pull_request:
+ branches:
+ - staging
+ - main
+
+jobs:
+ format:
+ runs-on: ubuntu-22.04
+
+ permissions:
+ contents: write
+
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Install uv
+ uses: astral-sh/setup-uv@v6
+ with:
+ enable-cache: true
+ cache-dependency-glob: uv.lock
+
+ - name: Install Python
+ run: uv python install
+
+ - name: Sync dependencies
+ run: uv sync --locked --all-extras --dev
+
+ - name: Lint code
+ run: uv run poe lint
+
+ - name: Push linted code
+ run: |
+ git diff --quiet && exit 0
+ git config --local user.email "github-actions@users.noreply.github.com"
+ git config --local user.name "github-actions bot"
+ git commit -am "chore(lint)"
+ git push
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
\ No newline at end of file
diff --git a/pyproject.toml b/pyproject.toml
index 851721f5..e48fc7ae 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -26,9 +26,10 @@ darwin = [
# task runner configuration
[tool.poe.tasks]
-fmt = { shell = "ruff format .", help = "Format the code" }
+fmt = { shell = "ruff format master worker shared", help = "Format the code" }
+lint = { shell = "ruff check --fix master worker shared", help = "Run the linter" }
test = { shell = "pytest master worker shared", help = "Run the tests" }
-check = { shell = "basedpyright --project .", help = "Run type checker" }
+check = { shell = "basedpyright --project master worker shared", help = "Run type checker" }
###
# workspace configuration
@@ -90,4 +91,11 @@ pythonPlatform = "Darwin"
environments = [
"sys_platform == 'darwin'",
"sys_platform == 'linux'",
-]
\ No newline at end of file
+]
+
+###
+# ruff configuration
+###
+
+[tool.ruff.lint]
+extend-select = ["I", "N", "B", "A", "PIE", "SIM"]
\ No newline at end of file
diff --git a/uv.lock b/uv.lock
index c53f712c..2d4789da 100644
--- a/uv.lock
+++ b/uv.lock
@@ -1,6 +1,14 @@
version = 1
revision = 2
requires-python = ">=3.13"
+resolution-markers = [
+ "sys_platform == 'darwin'",
+ "sys_platform == 'linux'",
+]
+supported-markers = [
+ "sys_platform == 'darwin'",
+ "sys_platform == 'linux'",
+]
[manifest]
members = [
@@ -16,58 +24,44 @@ name = "basedpyright"
version = "1.29.4"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "nodejs-wheel-binaries" },
+ { name = "nodejs-wheel-binaries", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
]
sdist = { url = "https://files.pythonhosted.org/packages/80/fb/bd92196a07e3b4ccee4ff2761a26a05bff77d4da089b67b4b1a547868099/basedpyright-1.29.4.tar.gz", hash = "sha256:2df1976f8591eedf4b4ce8f9d123f43e810cc8cb7cc83c53eec0e2f8044073d0", size = 21961481, upload-time = "2025-06-11T22:25:55.173Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/d5/dc/180fe721a2574fb3aad4051adcca196ac2d18adaf75122f5eeb47436cca2/basedpyright-1.29.4-py3-none-any.whl", hash = "sha256:e087513979972f83010639c6c1a1c13dd3b1d24ee45f8ecff747962cc2063d6f", size = 11476859, upload-time = "2025-06-11T22:25:52.01Z" },
]
-[[package]]
-name = "colorama"
-version = "0.4.6"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" },
-]
-
[[package]]
name = "exo"
version = "0.2.0"
-source = { virtual = "." }
+source = { editable = "." }
dependencies = [
- { name = "master" },
- { name = "shared" },
- { name = "worker" },
+ { name = "master", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
+ { name = "worker", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
]
-[package.dev-dependencies]
+[package.optional-dependencies]
darwin = [
- { name = "master" },
- { name = "mlx" },
- { name = "worker" },
+ { name = "mlx", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
]
+
+[package.dev-dependencies]
dev = [
- { name = "basedpyright" },
- { name = "poethepoet" },
- { name = "pytest" },
- { name = "ruff" },
+ { name = "basedpyright", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
+ { name = "poethepoet", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
+ { name = "pytest", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
+ { name = "ruff", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
]
[package.metadata]
requires-dist = [
{ name = "master", virtual = "master" },
- { name = "shared", virtual = "shared" },
+ { name = "mlx", marker = "extra == 'darwin'", virtual = "engines/mlx" },
{ name = "worker", virtual = "worker" },
]
+provides-extras = ["darwin"]
[package.metadata.requires-dev]
-darwin = [
- { name = "master", virtual = "master" },
- { name = "mlx", virtual = "engines/mlx" },
- { name = "worker", virtual = "worker" },
-]
dev = [
{ name = "basedpyright", specifier = ">=1.29.4" },
{ name = "poethepoet", specifier = ">=0.35.0" },
@@ -106,8 +100,6 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/1f/80/52736f9570a93f8e6b7942981dc9770eca2bc7aa1d200c1d54198374a6ca/nodejs_wheel_binaries-22.16.0-py2.py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbfccbcd558d2f142ccf66d8c3a098022bf4436db9525b5b8d32169ce185d99e", size = 58395868, upload-time = "2025-05-22T07:27:32.088Z" },
{ url = "https://files.pythonhosted.org/packages/0f/0e/53616a5ed8fc1fbe9e48bf132862da5a9abf5cc7f8483dab1722ec257187/nodejs_wheel_binaries-22.16.0-py2.py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:447ad796850eb52ca20356ad39b2d296ed8fef3f214921f84a1ccdad49f2eba1", size = 59712469, upload-time = "2025-05-22T07:27:37.193Z" },
{ url = "https://files.pythonhosted.org/packages/4a/cd/e2b5083df581fc1d08eb93feb6f8fbd3d56b113cef9b59d8e0fb7d4dd4f3/nodejs_wheel_binaries-22.16.0-py2.py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:7f526ca6a132b0caf633566a2a78c6985fe92857e7bfdb37380f76205a10b808", size = 60763005, upload-time = "2025-05-22T07:27:41.39Z" },
- { url = "https://files.pythonhosted.org/packages/71/8d/57112b49214e8bd636f3cc3386eba6be4d23552ec8a0f6efbe814013caa7/nodejs_wheel_binaries-22.16.0-py2.py3-none-win_amd64.whl", hash = "sha256:2fffb4bf1066fb5f660da20819d754f1b424bca1b234ba0f4fa901c52e3975fb", size = 41313324, upload-time = "2025-05-22T07:27:45.293Z" },
- { url = "https://files.pythonhosted.org/packages/91/03/a852711aec73dfb965844592dfe226024c0da28e37d1ee54083342e38f57/nodejs_wheel_binaries-22.16.0-py2.py3-none-win_arm64.whl", hash = "sha256:2728972d336d436d39ee45988978d8b5d963509e06f063e80fe41b203ee80b28", size = 38828154, upload-time = "2025-05-22T07:27:48.606Z" },
]
[[package]]
@@ -142,8 +134,8 @@ name = "poethepoet"
version = "0.35.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "pastel" },
- { name = "pyyaml" },
+ { name = "pastel", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
+ { name = "pyyaml", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
]
sdist = { url = "https://files.pythonhosted.org/packages/d6/b1/d4f4361b278fae10f6074675385ce3acf53c647f8e6eeba22c652f8ba985/poethepoet-0.35.0.tar.gz", hash = "sha256:b396ae862d7626e680bbd0985b423acf71634ce93a32d8b5f38340f44f5fbc3e", size = 66006, upload-time = "2025-06-09T12:58:18.849Z" }
wheels = [
@@ -164,11 +156,10 @@ name = "pytest"
version = "8.4.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "colorama", marker = "sys_platform == 'win32'" },
- { name = "iniconfig" },
- { name = "packaging" },
- { name = "pluggy" },
- { name = "pygments" },
+ { name = "iniconfig", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
+ { name = "packaging", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
+ { name = "pluggy", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
+ { name = "pygments", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
]
sdist = { url = "https://files.pythonhosted.org/packages/fb/aa/405082ce2749be5398045152251ac69c0f3578c7077efc53431303af97ce/pytest-8.4.0.tar.gz", hash = "sha256:14d920b48472ea0dbf68e45b96cd1ffda4705f33307dcc86c676c1b5104838a6", size = 1515232, upload-time = "2025-06-02T17:36:30.03Z" }
wheels = [
@@ -188,8 +179,6 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload-time = "2024-08-06T20:32:53.019Z" },
{ url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload-time = "2024-08-06T20:32:54.708Z" },
{ url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload-time = "2024-08-06T20:32:56.985Z" },
- { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload-time = "2024-08-06T20:33:03.001Z" },
- { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" },
]
[[package]]
@@ -212,9 +201,6 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/5a/dc/195e6f17d7b3ea6b12dc4f3e9de575db7983db187c378d44606e5d503319/ruff-0.11.13-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d237a496e0778d719efb05058c64d28b757c77824e04ffe8796c7436e26712b7", size = 10141462, upload-time = "2025-06-05T21:00:01.481Z" },
{ url = "https://files.pythonhosted.org/packages/f4/8e/39a094af6967faa57ecdeacb91bedfb232474ff8c3d20f16a5514e6b3534/ruff-0.11.13-py3-none-musllinux_1_2_i686.whl", hash = "sha256:26816a218ca6ef02142343fd24c70f7cd8c5aa6c203bca284407adf675984432", size = 11121028, upload-time = "2025-06-05T21:00:04.06Z" },
{ url = "https://files.pythonhosted.org/packages/5a/c0/b0b508193b0e8a1654ec683ebab18d309861f8bd64e3a2f9648b80d392cb/ruff-0.11.13-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:51c3f95abd9331dc5b87c47ac7f376db5616041173826dfd556cfe3d4977f492", size = 11602992, upload-time = "2025-06-05T21:00:06.249Z" },
- { url = "https://files.pythonhosted.org/packages/7c/91/263e33ab93ab09ca06ce4f8f8547a858cc198072f873ebc9be7466790bae/ruff-0.11.13-py3-none-win32.whl", hash = "sha256:96c27935418e4e8e77a26bb05962817f28b8ef3843a6c6cc49d8783b5507f250", size = 10474944, upload-time = "2025-06-05T21:00:08.459Z" },
- { url = "https://files.pythonhosted.org/packages/46/f4/7c27734ac2073aae8efb0119cae6931b6fb48017adf048fdf85c19337afc/ruff-0.11.13-py3-none-win_amd64.whl", hash = "sha256:29c3189895a8a6a657b7af4e97d330c8a3afd2c9c8f46c81e2fc5a31866517e3", size = 11548669, upload-time = "2025-06-05T21:00:11.147Z" },
- { url = "https://files.pythonhosted.org/packages/ec/bf/b273dd11673fed8a6bd46032c0ea2a04b2ac9bfa9c628756a5856ba113b0/ruff-0.11.13-py3-none-win_arm64.whl", hash = "sha256:b4385285e9179d608ff1d2fb9922062663c658605819a6876d8beef0c30b7f3b", size = 10683928, upload-time = "2025-06-05T21:00:13.758Z" },
]
[[package]]
← 180748ee Update Workspace Configuration, Configure Build Backend
·
back to Exo
·
Configure Runner Tasks to Cover "engines/" 685c8eff →