Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ dev = [
"types-requests>=2.28.0",
"ruff>=0.11.13",
"aiosqlite",
"behave==1.2.6",
"behave>=1.3.0",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Constrain the upper bound of behave for build reproducibility

Switching from an exact pin to an open-ended >=1.3.0 means CI may suddenly pick up a future 2.x release with breaking changes.
Recommend capping to the next major to keep the dependency surface predictable:

-    "behave>=1.3.0",
+    "behave>=1.3.0,<2",

Run the script below to confirm no other unconstrained major upgrades slipped into pyproject.toml.


🏁 Script executed:

#!/usr/bin/env bash
# Lists all dev dependencies without an upper bound
grep -n "dev =" -A100 pyproject.toml | grep -E '">=[0-9]+\.[0-9]+' | grep -v '<'

Length of output: 82


🏁 Script executed:

#!/usr/bin/env bash
# Search for any dependency specifiers in pyproject.toml using >= without an upper bound
grep -n -E '"[A-Za-z0-9_\-]+>=[0-9]+\.[0-9]+"' pyproject.toml | grep -v '<'

Length of output: 77


🏁 Script executed:

#!/usr/bin/env bash
# Search for any version specifiers using >= without an upper bound in pyproject.toml
grep -n '>=.*"' pyproject.toml | grep -v '<'

Length of output: 793


Constrain upper bounds on all open-ended dependencies

Beyond pinning behave>=1.3.0,<2, we should audit and cap every >= specifier to the next major release to avoid inadvertent breaking changes when new majors are published. In your pyproject.toml, the following dependencies currently lack an upper bound:

• Line 25: fastapi>=0.115.6
• Line 26: uvicorn>=0.34.3
• Line 27: kubernetes>=30.1.0
• Line 30: rich>=14.0.0
• Line 31: cachetools>=6.1.0
• Line 32: prometheus-client>=0.22.1
• Line 33: starlette>=0.47.1
• Line 34: aiohttp>=3.12.14
• Line 35: authlib>=1.6.0
• Line 60: black>=25.1.0
• Line 61: pytest>=8.3.2
• Line 62: pytest-cov>=5.0.0
• Line 63: pytest-mock>=3.14.0
• Line 64: pytest-asyncio>=1.0.0
• Line 65: pyright>=1.1.401
• Line 66: pylint>=3.3.7
• Line 67: pydocstyle>=6.3.0
• Line 68: mypy>=1.16.0
• Line 69: types-PyYAML>=6.0.2
• Line 70: types-requests>=2.28.0
• Line 71: ruff>=0.11.13
• Line 73: behave>=1.3.0
• Line 74: types-cachetools>=6.1.0.20250717
• Line 75 & 79: build>=1.2.2.post1
• Line 76 & 80: twine>=6.1.0 / >=5.1.1

For example, update the snippet on line 73 as:

-    "behave>=1.3.0",
+    "behave>=1.3.0,<2",

—and apply a similar <next_major cap to each listed dependency.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"behave>=1.3.0",
"behave>=1.3.0,<2",
🤖 Prompt for AI Agents
In pyproject.toml at line 73 and all other lines with open-ended dependencies
(lines 25-35, 60-76, 79-80), add an upper bound to each version specifier by
capping them to less than the next major version. For example, change
"behave>=1.3.0" to "behave>=1.3.0,<2". Apply this pattern consistently to all
listed dependencies to prevent unintended breaking changes from future major
releases.

"types-cachetools>=6.1.0.20250717",
"build>=1.2.2.post1",
"twine>=6.1.0",
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/features/llm_interface.feature
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Feature: LLM interface tests


Scenario: Check if LLM responds to sent question
Given the system is in default state
Given The system is in default state
When I ask question "Say hello"
Then The status code of the response is 200
And The response should have proper LLM response format
Expand Down
8 changes: 4 additions & 4 deletions tests/e2e/features/rest_api.feature
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Feature: REST API tests


Scenario: Check if service report proper readiness state
Given the system is in default state
Given The system is in default state
When I access endpoint "readiness" using HTTP GET method
Then The status code of the response is 200
And The body of the response has the following schema
Expand All @@ -27,7 +27,7 @@ Feature: REST API tests


Scenario: Check if service report proper liveness state
Given the system is in default state
Given The system is in default state
When I access endpoint "liveness" using HTTP GET method
Then The status code of the response is 200
And The body of the response has the following schema
Expand All @@ -43,14 +43,14 @@ Feature: REST API tests


Scenario: Check if the OpenAPI endpoint works as expected
Given the system is in default state
Given The system is in default state
When I access endpoint "openapi.json" using HTTP GET method
Then The status code of the response is 200
And The body of the response contains OpenAPI


Scenario: Check if info endpoint is working
Given the system is in default state
Given The system is in default state
When I access REST API endpoint "info" using HTTP GET method
Then The status code of the response is 200
And The body of the response contains name
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/features/smoketests.feature
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Feature: Smoke tests


Scenario: Check if the main endpoint is reachable
Given the system is in default state
Given The system is in default state
When I access endpoint "/" using HTTP GET method
Then The status code of the response is 200
And Content type of response should be set to "text/html"
4 changes: 2 additions & 2 deletions tests/e2e/features/steps/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@
from behave.runner import Context


@given("the service is started locally")
@given("The service is started locally")
def service_is_started_locally(context: Context) -> None:
"""Check the service status."""
assert context is not None


@given("the system is in default state")
@given("The system is in default state")
def system_in_default_state(context: Context) -> None:
"""Check the default system state."""
assert context is not None
29 changes: 25 additions & 4 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.