-
Notifications
You must be signed in to change notification settings - Fork 16
Matas/fix/fix actions #40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
4bfd1c6
407e34e
6ae016c
cfaae12
527d626
2c92405
58931d7
8a647ca
f088920
a28fedb
e851eb6
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -2,50 +2,30 @@ default_stages: | |
| - pre-commit | ||
| - pre-push | ||
|
|
||
| # Configuration for pre-commit hooks | ||
| repos: | ||
| # General hooks from the pre-commit-hooks repository | ||
| - repo: https://github.com/pre-commit/pre-commit-hooks | ||
| rev: v5.0.0 | ||
| rev: v6.0.0 | ||
| hooks: | ||
| - id: trailing-whitespace | ||
| # Removes any trailing whitespace from lines in text files | ||
| - id: end-of-file-fixer | ||
| # Ensures files end with a newline | ||
| - id: check-yaml | ||
| exclude: '^helm-chart/templates.*\.yaml$|^mkdocs\.yml$' | ||
| # Checks YAML files for syntax errors | ||
| - id: check-json | ||
| # Checks JSON files for syntax errors | ||
| - id: check-ast | ||
| name: "Check Python syntax (AST validation)" | ||
| # Validates that Python files have valid syntax | ||
| - id: check-added-large-files | ||
|
|
||
| # Ruff hooks for Python linting and formatting | ||
| # Ruff: The One Tool to Rule Them All | ||
| - repo: https://github.com/astral-sh/ruff-pre-commit | ||
| rev: v0.9.9 | ||
| rev: v0.3.0 | ||
| hooks: | ||
| # First, run ruff format - won't change imports but will format them | ||
| - id: ruff-format | ||
| name: "Format code (without changing imports)" | ||
|
|
||
| # Then, use a single ruff pass for both import sorting and linting | ||
| # Linter (Fixes imports, modernizes syntax, checks bugs) | ||
| - id: ruff | ||
| name: "Linting and import sorting" | ||
| args: ["--fix"] | ||
|
|
||
| # Pyupgrade: Check and fix Python version incompatibilities and outdated syntax | ||
| - repo: https://github.com/asottile/pyupgrade | ||
| rev: v3.15.2 | ||
| hooks: | ||
| - id: pyupgrade | ||
| name: "Upgrade syntax for Python 3.12+" | ||
| args: [--py312-plus] | ||
| # Auto-fixes outdated syntax to Python 3.12+ compatible code | ||
| args: [--fix, --exit-non-zero-on-fix] | ||
| # Formatter (Replaces Black) | ||
| - id: ruff-format | ||
|
|
||
|
Comment on lines
+16
to
25
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🌐 Web query:
💡 Result: The latest ruff-pre-commit release is v0.14.13 (released Jan 15, 2026). [1] For context, earlier recent releases include v0.14.11 (Jan 8, 2026) and v0.14.10 (Dec 18, 2025). [1][2] Sources:
🏁 Script executed: # Search for Ruff configuration files in the repository
fd -e toml -e cfg | grep -E "(pyproject|ruff|setup)" | head -20Repository: warestack/watchflow Length of output: 182 🏁 Script executed: # Look for any ruff configuration in common locations
find . -maxdepth 2 -type f \( -name "pyproject.toml" -o -name "ruff.toml" -o -name "setup.cfg" -o -name ".pre-commit-config.yaml" \)Repository: warestack/watchflow Length of output: 105 🏁 Script executed: cat pyproject.tomlRepository: warestack/watchflow Length of output: 2990 🏁 Script executed: cat .pre-commit-config.yamlRepository: warestack/watchflow Length of output: 898 🌐 Web query:
💡 Result:
Sources:
Update v0.3.0 (released Feb 2024) is significantly outdated—the latest version is v0.14.13 (Jan 2026). The repository's 🤖 Prompt for AI Agents |
||
| # Conventional pre-commit hooks for commit messages | ||
| # Convention Enforcement | ||
| - repo: https://github.com/compilerla/conventional-pre-commit | ||
| rev: v4.0.0 | ||
| rev: v4.3.0 | ||
| hooks: | ||
| - id: conventional-pre-commit | ||
| stages: [commit-msg] | ||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -6,7 +6,7 @@ Watchflow's agentic approach to DevOps governance has shown promising results in | |||||
|
|
||||||
| ### Context Dependency in Enterprise Policies | ||||||
|
|
||||||
| Our analysis of 70+ enterprise policies from major tech companies revealed a critical insight: **85% of real-world governance policies require context** and cannot be effectively enforced with traditional static rules. | ||||||
| Our analysis of 70 + enterprise policies from major tech companies revealed a critical insight: **85% of real-world governance policies require context** and cannot be effectively enforced with traditional static rules. | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Unintentional typo introduces inconsistency. The change from Suggested fix-Our analysis of 70 + enterprise policies from major tech companies revealed a critical insight: **85% of real-world governance policies require context** and cannot be effectively enforced with traditional static rules.
+Our analysis of 70+ enterprise policies from major tech companies revealed a critical insight: **85% of real-world governance policies require context** and cannot be effectively enforced with traditional static rules.📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||
|
|
||||||
| **Why this matters:** | ||||||
| - Traditional rules are binary (true/false) and miss nuanced scenarios | ||||||
|
|
||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| # Run all pre-commit hooks on all files | ||
| pre-commit run --all-files | ||
|
|
||
| # Run ruff linter and formatter directly (if needed) | ||
| ruff check src/ | ||
| ruff format src/ | ||
|
|
||
| # Run mypy for type checking | ||
| mypy src/ |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,91 +1,3 @@ | ||
| [tool.ruff] | ||
| # Target Python version | ||
| target-version = "py312" | ||
| # Line length - restored from old config | ||
| line-length = 120 | ||
| # Indent width | ||
| indent-width = 4 | ||
|
|
||
| # Exclude common directories - restored from old config | ||
| exclude = [ | ||
| ".bzr", | ||
| ".direnv", | ||
| ".eggs", | ||
| ".git", | ||
| ".git-rewrite", | ||
| ".hg", | ||
| ".ipynb_checkpoints", | ||
| ".mypy_cache", | ||
| ".nox", | ||
| ".pants.d", | ||
| ".pyenv", | ||
| ".pytest_cache", | ||
| ".pytype", | ||
| ".ruff_cache", | ||
| ".svn", | ||
| ".tox", | ||
| ".venv", | ||
| ".vscode", | ||
| "__pypackages__", | ||
| "_build", | ||
| "buck-out", | ||
| "build", | ||
| "dist", | ||
| "node_modules", | ||
| "site-packages", | ||
| "venv", | ||
| ] | ||
|
|
||
| [tool.ruff.lint] | ||
| # Select a comprehensive set of rules | ||
| # Based on recommended practices from Ruff documentation | ||
| select = [ | ||
| "E", # pycodestyle errors | ||
| "F", # pyflakes | ||
| "I", # isort | ||
| "B", # flake8-bugbear | ||
| "C4", # flake8-comprehensions | ||
| "UP", # pyupgrade | ||
| ] | ||
|
|
||
| # Common ignores for web development | ||
| ignore = [ | ||
| "E501", # line too long (handled by formatter) | ||
| "B008", # do not perform function calls in argument defaults (common in FastAPI) | ||
| ] | ||
|
|
||
| # Allow fixing all enabled rules | ||
| fixable = ["ALL"] | ||
|
|
||
| # Allow unused variables when underscore-prefixed - restored from old config | ||
| dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" | ||
|
|
||
| [tool.ruff.format] | ||
| # Modern formatting options | ||
| quote-style = "double" | ||
| indent-style = "space" | ||
| # Format docstring code blocks | ||
| docstring-code-format = true | ||
| # Restored from old config | ||
| skip-magic-trailing-comma = false | ||
| line-ending = "auto" | ||
|
|
||
| [tool.ruff.lint.isort] | ||
| # Enhanced isort configuration | ||
| known-first-party = ["src"] | ||
| # Make sure we correctly order the import sections | ||
| section-order = [ | ||
| "future", | ||
| "standard-library", | ||
| "third-party", | ||
| "first-party", | ||
| "local-folder", | ||
| ] | ||
| # Add a trailing comma to imports split across multiple lines | ||
| split-on-trailing-comma = true | ||
| # Combine import statements for the same module | ||
| combine-as-imports = true | ||
|
|
||
| [project] | ||
| name = "watchflow" | ||
| version = "0.1.0" | ||
|
|
@@ -96,17 +8,6 @@ license = {text = "Apache Software License 2.0"} | |
| authors = [ | ||
| {name = "Dimitris Kargatzis", email = "[email protected]"}, | ||
| ] | ||
| keywords = ["github", "governance", "ai", "protection", "rules", "enforcement", "collaboration"] | ||
| classifiers = [ | ||
| "Development Status :: 4 - Beta", | ||
| "Intended Audience :: Developers", | ||
| "License :: OSI Approved :: MIT License", | ||
| "Programming Language :: Python :: 3", | ||
| "Programming Language :: Python :: 3.12", | ||
| "Topic :: Software Development :: Libraries :: Python Modules", | ||
| "Topic :: Software Development :: Quality Assurance", | ||
| ] | ||
|
|
||
| dependencies = [ | ||
| "fastapi[standard]>=0.104.0", | ||
| "uvicorn[standard]>=0.24.0", | ||
|
|
@@ -124,127 +25,95 @@ dependencies = [ | |
| "boto3>=1.40.43", | ||
| "anthropic[vertex]>=0.69.0", | ||
| "langchain-google-vertexai>=2.1.2", | ||
| "giturlparse>=0.1.0", | ||
| "structlog>=24.1.0", | ||
| ] | ||
|
|
||
| [project.optional-dependencies] | ||
| dev = [ | ||
| "pytest>=7.4.0", | ||
| "pytest-asyncio>=0.21.0", | ||
| "pytest-cov>=4.1.0", | ||
| "black>=23.0.0", | ||
| "isort>=5.12.0", | ||
| "flake8>=6.0.0", | ||
| "respx>=0.20.0", | ||
| "mypy>=1.7.0", | ||
| "pre-commit>=3.5.0", | ||
| "ruff>=0.1.0", # Replaces black, isort, flake8 | ||
|
Comment on lines
+37
to
+40
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: # First, let's locate and examine the pyproject.toml file
git ls-files | grep -E "pyproject\.toml$"Repository: warestack/watchflow Length of output: 77 🌐 Web query:
💡 Result:
Sources: If you want I can look up the exact Ruff release/version that first included PR Citations:
🌐 Web query:
💡 Result: Short answer: In Ruff 0.1.0 the old "format" configuration was removed — you must use the new "output-format" option (and RUFF_OUTPUT_FORMAT / --output-format) to configure output format. [1][2] Sources:
🌐 Web query:
💡 Result: Short answer: The "TCH" selector comes from Ruff's flake8-type-checking rules (used in 2023) and was remapped to "TC" in Ruff v0.8.0 — Ruff 0.8.0 is the minimum release that documents the remapping (TCH -> TC) and emits a deprecation warning when you use the old TCH codes. [1][2] Sources:
🏁 Script executed: cat pyproject.tomlRepository: warestack/watchflow Length of output: 2990 🌐 Web query:
💡 Result: The [tool.ruff.format] section was introduced with the Ruff formatter (beta) — added in Ruff v0.1.2 (Oct 24, 2023). [1][2] Sources:
🌐 Web query:
💡 Result: Summary of format-section support by Ruff releases
Sources
If you want, I can copy the exact pyproject keys available in each version or link the specific GitHub changelog entries. Citations:
🌐 Web query:
💡 Result: The feature from PR Sources:
🌐 Web query:
💡 Result: Summary: The docstring-code-format option was introduced in Ruff v0.1.8 (so it was not present in v0.1.2–v0.1.5 and is available in later releases, including 0.2.0). [1][2][3] Sources:
Bump Ruff minimum version to 0.1.8 to support The configuration uses 🤖 Prompt for AI Agents |
||
| ] | ||
|
|
||
| docs = [ | ||
| "mkdocs>=1.5.0", | ||
| "mkdocs-material>=9.5.0", | ||
| "mkdocs-git-revision-date-localized-plugin>=1.2.0", | ||
| "mkdocs-minify-plugin>=0.7.0", | ||
| "pymdown-extensions>=10.0", | ||
| "mkdocs-minify-plugin>=0.8.0", | ||
| ] | ||
|
|
||
| [project.urls] | ||
| Homepage = "https://github.com/warestack/watchflow" | ||
| Documentation = "https://docs.watchflow.dev" | ||
| Repository = "https://github.com/warestack/watchflow" | ||
| Issues = "https://github.com/warestack/watchflow/issues" | ||
|
|
||
| [project.scripts] | ||
| watchflow = "src.main:app" | ||
|
|
||
| [tool.black] | ||
| line-length = 88 | ||
| target-version = ['py312'] | ||
| include = '\.pyi?$' | ||
| extend-exclude = ''' | ||
| /( | ||
| # directories | ||
| \.eggs | ||
| | \.git | ||
| | \.hg | ||
| | \.mypy_cache | ||
| | \.tox | ||
| | \.venv | ||
| | build | ||
| | dist | ||
| )/ | ||
| ''' | ||
| # --- RUFF CONFIGURATION (The Enforcer) --- | ||
| [tool.ruff] | ||
| target-version = "py312" | ||
| line-length = 120 | ||
| indent-width = 4 | ||
| exclude = [ | ||
| ".git", ".mypy_cache", ".pytest_cache", ".ruff_cache", ".venv", "venv", "__pypackages__", | ||
| ] | ||
|
|
||
| [tool.ruff.lint] | ||
| # E/F: Core Python errors | ||
| # I: Import sorting (isort replacement) | ||
| # B: Bugbear (catches common bugs) | ||
| # UP: Pyupgrade (modernizes syntax) | ||
| # C4: Comprehensions | ||
| # SIM: Simplify (suggests pythonic refactors) | ||
| # TCH: Type Checking (enforces specific typing blocks) | ||
| select = ["E", "F", "I", "B", "UP", "C4", "SIM", "TCH"] | ||
| ignore = [ | ||
| "E501", # Line too long (handled by formatter) | ||
| "B008", # Do not perform function calls in argument defaults (FastAPI Dependency Pattern) | ||
| ] | ||
| fixable = ["ALL"] | ||
|
|
||
| [tool.ruff.format] | ||
| quote-style = "double" | ||
| indent-style = "space" | ||
| skip-magic-trailing-comma = false | ||
| line-ending = "auto" | ||
| docstring-code-format = true | ||
|
|
||
| [tool.isort] | ||
| profile = "black" | ||
| multi_line_output = 3 | ||
| line_length = 88 | ||
| known_first_party = ["src"] | ||
| [tool.ruff.lint.isort] | ||
| known-first-party = ["src"] | ||
| combine-as-imports = true | ||
|
|
||
| # --- MYPY CONFIGURATION (The Type Cop) --- | ||
| [tool.mypy] | ||
| python_version = "3.12" | ||
| warn_return_any = true | ||
| warn_unused_configs = true | ||
| disallow_untyped_defs = true | ||
| disallow_incomplete_defs = true | ||
| disallow_untyped_defs = true # No dynamic functions allowed | ||
| disallow_incomplete_defs = true # Must type all args | ||
| check_untyped_defs = true | ||
| disallow_untyped_decorators = true | ||
| disallow_untyped_decorators = false # Allow untyped decorators (needed for FastAPI/LangChain) | ||
| no_implicit_optional = true | ||
| warn_redundant_casts = true | ||
| warn_unused_ignores = true | ||
| warn_no_return = true | ||
| warn_unreachable = true | ||
| strict_equality = true | ||
|
|
||
| # --- PYTEST CONFIGURATION --- | ||
| [tool.pytest.ini_options] | ||
| testpaths = ["tests"] | ||
| python_files = ["test_*.py", "*_test.py"] | ||
| python_classes = ["Test*"] | ||
| python_functions = ["test_*"] | ||
| addopts = [ | ||
| "--strict-markers", | ||
| "--strict-config", | ||
| "--cov=src", | ||
| "--cov-report=term-missing", | ||
| "--cov-report=html", | ||
| "--cov-report=xml", | ||
| ] | ||
| asyncio_mode = "auto" | ||
|
|
||
|
|
||
| [tool.coverage.run] | ||
| source = ["src"] | ||
| omit = [ | ||
| "*/tests/*", | ||
| "*/test_*", | ||
| "*/__pycache__/*", | ||
| "*/migrations/*", | ||
| ] | ||
|
|
||
| [tool.coverage.report] | ||
| exclude_lines = [ | ||
| "pragma: no cover", | ||
| "def __repr__", | ||
| "if self.debug:", | ||
| "if settings.DEBUG", | ||
| "raise AssertionError", | ||
| "raise NotImplementedError", | ||
| "if 0:", | ||
| "if __name__ == .__main__.:", | ||
| "class .*\\bProtocol\\):", | ||
| "@(abc\\.)?abstractmethod", | ||
| ] | ||
|
|
||
| [tool.uv] | ||
| dev-dependencies = [ | ||
| "pytest>=7.4.0", | ||
| "pytest-asyncio>=0.21.0", | ||
| "pytest-cov>=4.1.0", | ||
| "black>=23.0.0", | ||
| "isort>=5.12.0", | ||
| "flake8>=6.0.0", | ||
| "mypy>=1.7.0", | ||
| "pre-commit>=3.5.0", | ||
| "mkdocs-material>=9.5.0", | ||
| "mkdocs-git-revision-date-localized-plugin>=1.2.0", | ||
| "mkdocs-minify-plugin>=0.7.0", | ||
| "pymdown-extensions>=10.0", | ||
| "ruff>=0.1.0", | ||
| "giturlparse>=0.1.0", | ||
| ] | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1 @@ | ||
| # Watchflow application package | ||
| # App package—root for imports, keep minimal. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The comment
# Configuration for pre-commit hookswas removed, but the other comments explaining individual hooks were also removed. It would be beneficial to keep concise comments for each hook, especially forcheck-yamlandcheck-json, to explain their purpose.