Skip to content

Consolidate package versions/convert Python to virtual workspace#766

Merged
forstmeier merged 10 commits intomasterfrom
consolidate-package-versioning
Feb 24, 2026
Merged

Consolidate package versions/convert Python to virtual workspace#766
forstmeier merged 10 commits intomasterfrom
consolidate-package-versioning

Conversation

@forstmeier
Copy link
Copy Markdown
Collaborator

@forstmeier forstmeier commented Feb 24, 2026

Overview

Changes

  • consolidate package versions into SemVer with 0.0.1
  • convert Python structure to virtual workspace
  • minor cleanup/tweaks

Context

Just another little tweak before getting into the bulk of the bigger projects.

Summary by CodeRabbit

  • Chores

    • Updated project versions to 0.0.1 across multiple apps, libraries, and tools
    • Relaxed internal dependency constraints to >=0.0.1
    • Removed project-level metadata/dependency declarations from the root manifest
  • New Dependencies

    • Added FastAPI, Polars, Pandera (polars), Requests, Structlog, SageMaker where applicable
    • Introduced dev dependency-group entries for tooling
  • Bug Fixes / Maintenance

    • Minor lint suppression and adjusted data-processing input/schema alignment

@forstmeier forstmeier self-assigned this Feb 24, 2026
@forstmeier forstmeier added rust Rust code updates python Python code updates labels Feb 24, 2026
@github-project-automation github-project-automation Bot moved this to In Progress in Overview Feb 24, 2026
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Feb 24, 2026

Warning

Rate limit exceeded

@forstmeier has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 4 minutes and 23 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 4f769a8 and 5785183.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (2)
  • pyproject.toml
  • tools/pyproject.toml
📝 Walkthrough

Walkthrough

Multiple manifest files had their project/package versions changed from 0.1.0 to 0.0.1; several Python projects added or adjusted dependencies and tooling config; combine_data.py was updated to use equity_details_schema and renamed parameters/variables; a minor lint suppression was added; root pyproject.toml project metadata and a sources mapping were removed.

Changes

Cohort / File(s) Summary
Manifest version bumps
applications/datamanager/Cargo.toml, applications/portfoliomanager/pyproject.toml, infrastructure/pyproject.toml, libraries/python/pyproject.toml, tools/pyproject.toml
Project/package version changed from 0.1.00.0.1.
Python project dependency & tooling updates
applications/equitypricemodel/pyproject.toml, applications/portfoliomanager/pyproject.toml, tools/pyproject.toml, pyproject.toml
Added/updated dependencies (e.g., fastapi, pandera[polars], polars, requests, structlog, sagemaker in various files), relaxed internal constraint from >=0.1.0>=0.0.1 where present, added [dependency-groups] dev and [tool.uv] config in some projects, and removed top-level [project] metadata and [tool.uv.sources] mapping from root pyproject.toml.
Data validation / join refactor
applications/equitypricemodel/src/equitypricemodel/combine_data.py
Replaced import categories_schema with equity_details_schema; renamed function parameter and variables from categories_*equity_details_*; updated validation and join to operate on equity_details_data.
Lint annotation
applications/portfoliomanager/src/portfoliomanager/server.py
Added # noqa: PERF203 comment to an exception handler line (no behavioral change).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately reflects the main changes: consolidating package versions to 0.0.1 and converting the Python project to a virtual workspace structure.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch consolidate-package-versioning

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Feb 24, 2026

Greptile Summary

Consolidated all package versions to 0.0.1 across Rust and Python packages, and successfully converted the Python structure to a virtual workspace. All previously identified issues have been addressed:

  • Updated versions from 0.1.0 to 0.0.1 for workspace consistency
  • Relaxed internal dependency constraints to >=0.0.1 in consuming packages
  • Removed project-level metadata from root pyproject.toml, converting it to workspace configuration
  • Added missing dependencies (sagemaker, structlog, requests, polars) to tools/pyproject.toml
  • Added runtime dependencies to applications/equitypricemodel/pyproject.toml (fastapi, polars, pandera[polars], requests)
  • Fixed variable naming and log messages in combine_data.py (categories → equity_details)
  • Added appropriate lint suppression (PERF203) for exception handling in loop

The workspace structure is now properly configured with all dependencies correctly declared in their respective packages.

Confidence Score: 5/5

  • This PR is safe to merge with minimal risk
  • All changes are structural refactoring to standardize versioning and workspace configuration. All previously identified issues have been addressed. Dependencies are correctly declared, variable renaming is complete and consistent, and no functional logic changes were made.
  • No files require special attention

Important Files Changed

Filename Overview
pyproject.toml Removed project-level metadata, now configured as Python virtual workspace with dev dependencies
applications/equitypricemodel/pyproject.toml Updated version to 0.0.1, adjusted internal dependency constraint, added runtime dependencies (fastapi, polars, pandera, requests)
tools/pyproject.toml Updated version to 0.0.1, added missing dependencies (sagemaker, structlog, requests, polars) previously addressed in feedback
applications/equitypricemodel/src/equitypricemodel/combine_data.py Renamed variables and schema from categories to equity_details, updated log messages per previous feedback

Last reviewed commit: 8a51dd1

Copy link
Copy Markdown
Contributor

@greptile-apps greptile-apps Bot left a comment

Choose a reason for hiding this comment

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

10 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

Comment thread applications/equitypricemodel/src/equitypricemodel/combine_data.py Outdated
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This pull request consolidates package versions across the codebase to use SemVer format 0.0.1 and converts the Python project structure to a virtual workspace. The changes involve version standardization across both Python and Rust packages, removal of the root project definition in favor of a workspace-only configuration, and an incomplete refactoring of "categories" to "equity_details" terminology in the equitypricemodel application.

Changes:

  • Standardized all package versions to 0.0.1 across Python and Rust projects
  • Converted root pyproject.toml to workspace-only configuration by removing the [project] section
  • Updated internal dependency references from 0.1.0 to 0.0.1
  • Added noqa: PERF203 comment to suppress performance warning for intentional exception handling in loop
  • Partially refactored equity categories schema and variable naming to use "equity_details" terminology

Reviewed changes

Copilot reviewed 9 out of 10 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
pyproject.toml Removed root project definition, keeping only workspace configuration
tools/pyproject.toml Updated version from 0.1.0 to 0.0.1
libraries/python/pyproject.toml Updated version from 0.1.0 to 0.0.1
infrastructure/pyproject.toml Updated version from 0.1.0 to 0.0.1
applications/portfoliomanager/pyproject.toml Updated version and internal dependency to 0.0.1
applications/equitypricemodel/pyproject.toml Updated version and internal dependency to 0.0.1
applications/datamanager/Cargo.toml Updated version from 0.1.0 to 0.0.1
applications/portfoliomanager/src/portfoliomanager/server.py Added noqa comment to suppress PERF203 warning
applications/equitypricemodel/src/equitypricemodel/combine_data.py Renamed schema import and updated variable references (incomplete)

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread applications/equitypricemodel/src/equitypricemodel/combine_data.py Outdated
Comment thread applications/equitypricemodel/src/equitypricemodel/combine_data.py Outdated
Comment thread applications/equitypricemodel/src/equitypricemodel/combine_data.py Outdated
Comment thread applications/equitypricemodel/src/equitypricemodel/combine_data.py Outdated
Comment thread applications/equitypricemodel/src/equitypricemodel/combine_data.py Outdated
Comment thread applications/equitypricemodel/src/equitypricemodel/combine_data.py Outdated
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
applications/portfoliomanager/pyproject.toml (1)

6-12: ⚠️ Potential issue | 🟠 Major

Add structlog as a direct dependency.

structlog is imported and used throughout the package (imported in server.py, risk_management.py, and alpaca_client.py), but it is not declared in dependencies. It must be added explicitly to ensure reliable dependency resolution across environments.

Proposed fix
 dependencies = [
   "internal>=0.0.1",
   "httpx>=0.27.0",
   "pandera[polars,pandas]>=0.26.0",
   "alpaca-py>=0.42.1",
   "sentry-sdk[fastapi]>=2.0.0",
+  "structlog>=25.5.0",
 ]
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@applications/portfoliomanager/pyproject.toml` around lines 6 - 12, Add
structlog as a direct dependency in the project's dependency list: update the
dependencies array in pyproject.toml to include "structlog>=21.5.0" (or a
minimal compatible version you choose) alongside the existing entries; this
ensures imports of structlog in server.py, risk_management.py, and
alpaca_client.py resolve reliably across environments. Make sure to follow the
same quoting/format style used for other entries and run dependency tooling
(e.g., poetry/pip) to lock/install the new requirement.
applications/equitypricemodel/pyproject.toml (1)

3-14: ⚠️ Potential issue | 🟠 Major

Move structlog to root workspace pyproject.toml — it's used but undeclared in portfoliomanager and tools.

structlog is imported in three workspace members (equitypricemodel, portfoliomanager, tools) but is only explicitly declared in equitypricemodel/pyproject.toml. portfoliomanager and tools currently rely on this transitive dependency, creating an implicit dependency chain. Instead of duplicating the declaration across members, add structlog>=25.5.0 to the root workspace pyproject.toml dependencies so all members inherit it explicitly.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@applications/equitypricemodel/pyproject.toml` around lines 3 - 14, Add
structlog>=25.5.0 to the root workspace pyproject.toml top-level [project] or
dependencies list so all members (equitypricemodel, portfoliomanager, tools)
declare it transitively; update the root pyproject.toml dependencies to include
"structlog>=25.5.0" and remove the duplicate "structlog>=25.5.0" entry from
equitypricemodel/pyproject.toml to avoid duplicated declarations while ensuring
portfoliomanager and tools no longer rely on an implicit transitive dependency.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@applications/equitypricemodel/src/equitypricemodel/combine_data.py`:
- Around line 26-28: Update the exception log message to reflect the renamed
schema: replace the old "Categories data validation failed" text with something
like "Equity details data validation failed" in the logger.exception call inside
the exception handler that catches Exception as e (the block referencing
equity_details_schema validation). Keep passing the error details (error=str(e))
and re-raise as currently implemented.

---

Outside diff comments:
In `@applications/equitypricemodel/pyproject.toml`:
- Around line 3-14: Add structlog>=25.5.0 to the root workspace pyproject.toml
top-level [project] or dependencies list so all members (equitypricemodel,
portfoliomanager, tools) declare it transitively; update the root pyproject.toml
dependencies to include "structlog>=25.5.0" and remove the duplicate
"structlog>=25.5.0" entry from equitypricemodel/pyproject.toml to avoid
duplicated declarations while ensuring portfoliomanager and tools no longer rely
on an implicit transitive dependency.

In `@applications/portfoliomanager/pyproject.toml`:
- Around line 6-12: Add structlog as a direct dependency in the project's
dependency list: update the dependencies array in pyproject.toml to include
"structlog>=21.5.0" (or a minimal compatible version you choose) alongside the
existing entries; this ensures imports of structlog in server.py,
risk_management.py, and alpaca_client.py resolve reliably across environments.
Make sure to follow the same quoting/format style used for other entries and run
dependency tooling (e.g., poetry/pip) to lock/install the new requirement.

ℹ️ Review info

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0ea521e and 95978f8.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (9)
  • applications/datamanager/Cargo.toml
  • applications/equitypricemodel/pyproject.toml
  • applications/equitypricemodel/src/equitypricemodel/combine_data.py
  • applications/portfoliomanager/pyproject.toml
  • applications/portfoliomanager/src/portfoliomanager/server.py
  • infrastructure/pyproject.toml
  • libraries/python/pyproject.toml
  • pyproject.toml
  • tools/pyproject.toml
💤 Files with no reviewable changes (1)
  • pyproject.toml

Comment thread applications/equitypricemodel/src/equitypricemodel/combine_data.py
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
applications/equitypricemodel/src/equitypricemodel/combine_data.py (1)

85-87: ⚠️ Potential issue | 🟡 Minor

Stale CLI error message still references "categories CSV".

The __main__ usage error on line 86 still says "Requires categories CSV, equity bars CSV, and output CSV paths as arguments". The first argument is now the equity details CSV path.

📝 Proposed fix
-            "Requires categories CSV, equity bars CSV, and output CSV paths as arguments",  # noqa: E501
+            "Requires equity details CSV, equity bars CSV, and output CSV paths as arguments",  # noqa: E501
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@applications/equitypricemodel/src/equitypricemodel/combine_data.py` around
lines 85 - 87, Update the stale CLI error text in combine_data.py: replace the
logger.error message that currently says "Requires categories CSV, equity bars
CSV, and output CSV paths as arguments" with the correct argument order and
wording (e.g., "Requires equity details CSV, equity bars CSV, and output CSV
paths as arguments") in the module's __main__/argument-check block so the usage
error refers to the equity details CSV as the first argument (locate the
logger.error call in combine_data.py near the CLI/if __name__ == '__main__'
section).
♻️ Duplicate comments (1)
applications/equitypricemodel/src/equitypricemodel/combine_data.py (1)

28-30: ⚠️ Potential issue | 🟡 Minor

Stale log message — "Categories data validation failed" was not updated.

Line 29 was flagged in the previous review and the developer marked it as fixed, but the message is unchanged in the current code. It should read something like "Equity details data validation failed".

📝 Proposed fix
-        logger.exception("Categories data validation failed", error=str(e))
+        logger.exception("Equity details data validation failed", error=str(e))
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@applications/equitypricemodel/src/equitypricemodel/combine_data.py` around
lines 28 - 30, The log message in the exception handler inside combine_data.py
is stale; update the logger.exception call in the except Exception as e block so
the message reads "Equity details data validation failed" (keep reporting the
exception details as before via the logger.exception call on the same handler).
Locate the except block that calls logger.exception("Categories data validation
failed", error=str(e)) and replace the message text while ensuring the exception
details continue to be included (e.g., using logger.exception with the new
message and current exception info).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@applications/equitypricemodel/src/equitypricemodel/combine_data.py`:
- Around line 85-87: Update the stale CLI error text in combine_data.py: replace
the logger.error message that currently says "Requires categories CSV, equity
bars CSV, and output CSV paths as arguments" with the correct argument order and
wording (e.g., "Requires equity details CSV, equity bars CSV, and output CSV
paths as arguments") in the module's __main__/argument-check block so the usage
error refers to the equity details CSV as the first argument (locate the
logger.error call in combine_data.py near the CLI/if __name__ == '__main__'
section).

---

Duplicate comments:
In `@applications/equitypricemodel/src/equitypricemodel/combine_data.py`:
- Around line 28-30: The log message in the exception handler inside
combine_data.py is stale; update the logger.exception call in the except
Exception as e block so the message reads "Equity details data validation
failed" (keep reporting the exception details as before via the logger.exception
call on the same handler). Locate the except block that calls
logger.exception("Categories data validation failed", error=str(e)) and replace
the message text while ensuring the exception details continue to be included
(e.g., using logger.exception with the new message and current exception info).

ℹ️ Review info

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 95978f8 and 246201b.

📒 Files selected for processing (1)
  • applications/equitypricemodel/src/equitypricemodel/combine_data.py

coderabbitai[bot]
coderabbitai Bot previously approved these changes Feb 24, 2026
Copy link
Copy Markdown
Contributor

@greptile-apps greptile-apps Bot left a comment

Choose a reason for hiding this comment

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

10 files reviewed, 4 comments

Edit Code Review Agent Settings | Greptile

Comment thread tools/pyproject.toml Outdated
Comment thread applications/equitypricemodel/src/equitypricemodel/combine_data.py Outdated
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Feb 24, 2026

Additional Comments (2)

applications/portfoliomanager/pyproject.toml
Missing dependencies after root project removal

With the [project] section removed from the root pyproject.toml, several dependencies that portfoliomanager uses at runtime are no longer declared anywhere in its dependency chain:

  • structlog: imported in server.py, risk_management.py, and alpaca_client.py
  • requests: imported in server.py (used for requests.get() and requests.post() calls to datamanager)
  • uvicorn: invoked in the Dockerfile ENTRYPOINT
  • fastapi: imported in server.py — currently only available transitively via sentry-sdk[fastapi], which is fragile

These were previously provided by the root-level [project] dependencies. Without them declared here, uv run --package portfoliomanager will fail to resolve these imports.

  "internal>=0.0.1",
  "fastapi>=0.121.0",
  "uvicorn>=0.35.0",
  "structlog>=25.5.0",
  "requests>=2.32.5",
  "httpx>=0.27.0",
  "pandera[polars,pandas]>=0.26.0",
  "alpaca-py>=0.42.1",
  "sentry-sdk[fastapi]>=2.0.0",

Context Used: Context from dashboard - CLAUDE.md (source)

Prompt To Fix With AI
This is a comment left during a code review.
Path: applications/portfoliomanager/pyproject.toml
Line: 6-12

Comment:
**Missing dependencies after root project removal**

With the `[project]` section removed from the root `pyproject.toml`, several dependencies that `portfoliomanager` uses at runtime are no longer declared anywhere in its dependency chain:

- **`structlog`**: imported in `server.py`, `risk_management.py`, and `alpaca_client.py`
- **`requests`**: imported in `server.py` (used for `requests.get()` and `requests.post()` calls to datamanager)
- **`uvicorn`**: invoked in the `Dockerfile` ENTRYPOINT
- **`fastapi`**: imported in `server.py` — currently only available transitively via `sentry-sdk[fastapi]`, which is fragile

These were previously provided by the root-level `[project]` dependencies. Without them declared here, `uv run --package portfoliomanager` will fail to resolve these imports.

```suggestion
  "internal>=0.0.1",
  "fastapi>=0.121.0",
  "uvicorn>=0.35.0",
  "structlog>=25.5.0",
  "requests>=2.32.5",
  "httpx>=0.27.0",
  "pandera[polars,pandas]>=0.26.0",
  "alpaca-py>=0.42.1",
  "sentry-sdk[fastapi]>=2.0.0",
```

**Context Used:** Context from `dashboard` - CLAUDE.md ([source](https://app.greptile.com/review/custom-context?memory=ce2b8f3e-a42c-4f67-b7b7-b8b03e89616e))

How can I resolve this? If you propose a fix, please make it concise.

applications/equitypricemodel/pyproject.toml
Missing uvicorn and fastapi dependencies

After removing the root-level [project] section, this package no longer inherits uvicorn and fastapi. Both are required:

  • uvicorn: invoked in the Dockerfile ENTRYPOINT (uvicorn equitypricemodel.server:application ...)
  • fastapi: imported in server.py — currently only available transitively via sentry-sdk[fastapi], which is fragile

Additionally, mypy-boto3-s3 is imported under TYPE_CHECKING in server.py and is no longer declared anywhere.

  "internal>=0.0.1",
  "boto3>=1.35.0",
  "python-dotenv>=1.2.1",
  "fastapi>=0.121.0",
  "uvicorn>=0.35.0",
  "sentry-sdk[fastapi]>=2.0.0",
  "structlog>=25.5.0",
  "tinygrad>=0.10.3",
  "numpy>=1.26.4",
  "mypy-boto3-s3>=1.42.37",

Context Used: Context from dashboard - CLAUDE.md (source)

Prompt To Fix With AI
This is a comment left during a code review.
Path: applications/equitypricemodel/pyproject.toml
Line: 6-14

Comment:
**Missing `uvicorn` and `fastapi` dependencies**

After removing the root-level `[project]` section, this package no longer inherits `uvicorn` and `fastapi`. Both are required:

- **`uvicorn`**: invoked in the `Dockerfile` ENTRYPOINT (`uvicorn equitypricemodel.server:application ...`)
- **`fastapi`**: imported in `server.py` — currently only available transitively via `sentry-sdk[fastapi]`, which is fragile

Additionally, `mypy-boto3-s3` is imported under `TYPE_CHECKING` in `server.py` and is no longer declared anywhere.

```suggestion
  "internal>=0.0.1",
  "boto3>=1.35.0",
  "python-dotenv>=1.2.1",
  "fastapi>=0.121.0",
  "uvicorn>=0.35.0",
  "sentry-sdk[fastapi]>=2.0.0",
  "structlog>=25.5.0",
  "tinygrad>=0.10.3",
  "numpy>=1.26.4",
  "mypy-boto3-s3>=1.42.37",
```

**Context Used:** Context from `dashboard` - CLAUDE.md ([source](https://app.greptile.com/review/custom-context?memory=ce2b8f3e-a42c-4f67-b7b7-b8b03e89616e))

How can I resolve this? If you propose a fix, please make it concise.

Copilot AI review requested due to automatic review settings February 24, 2026 03:48
coderabbitai[bot]
coderabbitai Bot previously approved these changes Feb 24, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 9 out of 10 changed files in this pull request and generated 1 comment.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread applications/portfoliomanager/src/portfoliomanager/server.py
Copy link
Copy Markdown
Contributor

@greptile-apps greptile-apps Bot left a comment

Choose a reason for hiding this comment

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

10 files reviewed, 2 comments

Edit Code Review Agent Settings | Greptile

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Feb 24, 2026

Additional Comments (2)

applications/equitypricemodel/pyproject.toml
Missing fastapi and requests dependencies

server.py imports both fastapi and requests, which were previously provided by the root-level [project] dependencies. Add them here:

dependencies = [
  "internal>=0.0.1",
  "boto3>=1.35.0",
  "python-dotenv>=1.2.1",
  "sentry-sdk[fastapi]>=2.0.0",
  "structlog>=25.5.0",
  "tinygrad>=0.10.3",
  "numpy>=1.26.4",
  "fastapi>=0.121.0",
  "requests>=2.32.5",
]
Prompt To Fix With AI
This is a comment left during a code review.
Path: applications/equitypricemodel/pyproject.toml
Line: 6-14

Comment:
Missing `fastapi` and `requests` dependencies

`server.py` imports both `fastapi` and `requests`, which were previously provided by the root-level `[project]` dependencies. Add them here:

```suggestion
dependencies = [
  "internal>=0.0.1",
  "boto3>=1.35.0",
  "python-dotenv>=1.2.1",
  "sentry-sdk[fastapi]>=2.0.0",
  "structlog>=25.5.0",
  "tinygrad>=0.10.3",
  "numpy>=1.26.4",
  "fastapi>=0.121.0",
  "requests>=2.32.5",
]
```

How can I resolve this? If you propose a fix, please make it concise.

applications/portfoliomanager/pyproject.toml
Missing structlog, requests, and uvicorn dependencies

server.py, alpaca_client.py, and risk_management.py import structlog. server.py also imports requests. Additionally, uvicorn is needed to run the FastAPI server. These were previously provided by the root-level [project] dependencies:

dependencies = [
  "internal>=0.0.1",
  "httpx>=0.27.0",
  "pandera[polars,pandas]>=0.26.0",
  "alpaca-py>=0.42.1",
  "sentry-sdk[fastapi]>=2.0.0",
  "structlog>=25.5.0",
  "requests>=2.32.5",
  "uvicorn>=0.35.0",
]
Prompt To Fix With AI
This is a comment left during a code review.
Path: applications/portfoliomanager/pyproject.toml
Line: 6-12

Comment:
Missing `structlog`, `requests`, and `uvicorn` dependencies

`server.py`, `alpaca_client.py`, and `risk_management.py` import `structlog`. `server.py` also imports `requests`. Additionally, `uvicorn` is needed to run the FastAPI server. These were previously provided by the root-level `[project]` dependencies:

```suggestion
dependencies = [
  "internal>=0.0.1",
  "httpx>=0.27.0",
  "pandera[polars,pandas]>=0.26.0",
  "alpaca-py>=0.42.1",
  "sentry-sdk[fastapi]>=2.0.0",
  "structlog>=25.5.0",
  "requests>=2.32.5",
  "uvicorn>=0.35.0",
]
```

How can I resolve this? If you propose a fix, please make it concise.

Copy link
Copy Markdown
Contributor

@greptile-apps greptile-apps Bot left a comment

Choose a reason for hiding this comment

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

10 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

Comment thread tools/pyproject.toml Outdated
Copy link
Copy Markdown
Contributor

@greptile-apps greptile-apps Bot left a comment

Choose a reason for hiding this comment

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

10 files reviewed, 2 comments

Edit Code Review Agent Settings | Greptile

Comment thread tools/pyproject.toml Outdated
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Feb 24, 2026

Additional Comments (1)

applications/portfoliomanager/pyproject.toml
Missing requests dependency that was previously provided by root workspace.

server.py imports and uses requests for HTTP calls to datamanager (lines 368, 425) and exception handling (line 404).

dependencies = [
  "internal>=0.0.1",
  "httpx>=0.27.0",
  "pandera[polars,pandas]>=0.26.0",
  "alpaca-py>=0.42.1",
  "sentry-sdk[fastapi]>=2.0.0",
  "requests>=2.32.5",
]
Prompt To Fix With AI
This is a comment left during a code review.
Path: applications/portfoliomanager/pyproject.toml
Line: 6-12

Comment:
Missing `requests` dependency that was previously provided by root workspace.

`server.py` imports and uses `requests` for HTTP calls to datamanager (lines 368, 425) and exception handling (line 404).

```suggestion
dependencies = [
  "internal>=0.0.1",
  "httpx>=0.27.0",
  "pandera[polars,pandas]>=0.26.0",
  "alpaca-py>=0.42.1",
  "sentry-sdk[fastapi]>=2.0.0",
  "requests>=2.32.5",
]
```

How can I resolve this? If you propose a fix, please make it concise.

coderabbitai[bot]
coderabbitai Bot previously approved these changes Feb 24, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 9 out of 10 changed files in this pull request and generated 4 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread tools/pyproject.toml
Comment thread tools/pyproject.toml Outdated
Comment thread applications/portfoliomanager/pyproject.toml
Comment thread tools/pyproject.toml
coderabbitai[bot]
coderabbitai Bot previously approved these changes Feb 24, 2026
Copy link
Copy Markdown
Contributor

@greptile-apps greptile-apps Bot left a comment

Choose a reason for hiding this comment

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

10 files reviewed, 2 comments

Edit Code Review Agent Settings | Greptile

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Feb 24, 2026

Additional Comments (2)

applications/equitypricemodel/pyproject.toml
Missing requests, fastapi, and uvicorn dependencies. server.py imports these but they're not declared.

requests is imported on line 15 of server.py but isn't available as a transitive dependency (unlike portfoliomanager, which gets it from alpaca-py).

fastapi is pulled in via sentry-sdk[fastapi], but relying on this is fragile - if the sentry-sdk extra changes, imports will break.

uvicorn isn't declared anywhere and will be missing when running the server.

dependencies = [
  "internal>=0.0.1",
  "boto3>=1.35.0",
  "python-dotenv>=1.2.1",
  "sentry-sdk[fastapi]>=2.0.0",
  "structlog>=25.5.0",
  "tinygrad>=0.10.3",
  "numpy>=1.26.4",
  "requests>=2.32.5",
  "fastapi>=0.121.0",
  "uvicorn>=0.35.0",
]
Prompt To Fix With AI
This is a comment left during a code review.
Path: applications/equitypricemodel/pyproject.toml
Line: 6-14

Comment:
Missing `requests`, `fastapi`, and `uvicorn` dependencies. `server.py` imports these but they're not declared.

`requests` is imported on line 15 of `server.py` but isn't available as a transitive dependency (unlike `portfoliomanager`, which gets it from `alpaca-py`).

`fastapi` is pulled in via `sentry-sdk[fastapi]`, but relying on this is fragile - if the sentry-sdk extra changes, imports will break.

`uvicorn` isn't declared anywhere and will be missing when running the server.

```suggestion
dependencies = [
  "internal>=0.0.1",
  "boto3>=1.35.0",
  "python-dotenv>=1.2.1",
  "sentry-sdk[fastapi]>=2.0.0",
  "structlog>=25.5.0",
  "tinygrad>=0.10.3",
  "numpy>=1.26.4",
  "requests>=2.32.5",
  "fastapi>=0.121.0",
  "uvicorn>=0.35.0",
]
```

How can I resolve this? If you propose a fix, please make it concise.

applications/portfoliomanager/pyproject.toml
Missing explicit fastapi, uvicorn, structlog, and requests declarations. While fastapi comes from sentry-sdk[fastapi] and requests from alpaca-py, directly importing them without declaring them is fragile.

dependencies = [
  "internal>=0.0.1",
  "httpx>=0.27.0",
  "pandera[polars,pandas]>=0.26.0",
  "alpaca-py>=0.42.1",
  "sentry-sdk[fastapi]>=2.0.0",
  "fastapi>=0.121.0",
  "uvicorn>=0.35.0",
  "structlog>=25.5.0",
  "requests>=2.32.5",
]
Prompt To Fix With AI
This is a comment left during a code review.
Path: applications/portfoliomanager/pyproject.toml
Line: 6-12

Comment:
Missing explicit `fastapi`, `uvicorn`, `structlog`, and `requests` declarations. While `fastapi` comes from `sentry-sdk[fastapi]` and `requests` from `alpaca-py`, directly importing them without declaring them is fragile.

```suggestion
dependencies = [
  "internal>=0.0.1",
  "httpx>=0.27.0",
  "pandera[polars,pandas]>=0.26.0",
  "alpaca-py>=0.42.1",
  "sentry-sdk[fastapi]>=2.0.0",
  "fastapi>=0.121.0",
  "uvicorn>=0.35.0",
  "structlog>=25.5.0",
  "requests>=2.32.5",
]
```

How can I resolve this? If you propose a fix, please make it concise.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (2)
applications/portfoliomanager/pyproject.toml (1)

7-15: Duplicate dependency centralization already noted.
Same workspace-level duplication concern applies here; see earlier note on moving shared deps to the root workspace pyproject.toml.

#!/bin/bash
# Verify duplicate dependency declarations across workspace pyproject.toml files.
rg -n --glob 'pyproject.toml' -e 'requests>=|polars>=|structlog>=|fastapi>='

Based on learnings: Move duplicate dependencies into root workspace pyproject.toml.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@applications/portfoliomanager/pyproject.toml` around lines 7 - 15, This
pyproject lists dependencies duplicated elsewhere; remove the shared packages
(fastapi, requests, polars, structlog and any other workspace-common libs like
pandera/alpaca-py/sentry-sdk if present at root) from this application's
pyproject.toml and add them to the root workspace pyproject.toml dependency
section instead, ensuring version specifiers are preserved and this module only
keeps app-specific deps; update the workspace root pyproject.toml to include the
consolidated entries (matching versions) and then delete the duplicate lines
from the application's dependency list to avoid conflicts.
applications/equitypricemodel/pyproject.toml (1)

7-20: Duplicate dependency centralization already noted.
Same workspace-level duplication concern applies here; see earlier note on moving shared deps to the root workspace pyproject.toml.

#!/bin/bash
# Verify duplicate dependency declarations across workspace pyproject.toml files.
rg -n --glob 'pyproject.toml' -e 'requests>=|polars>=|structlog>=|fastapi>=|boto3>='

Based on learnings: Move duplicate dependencies into root workspace pyproject.toml.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@applications/equitypricemodel/pyproject.toml` around lines 7 - 20, This
pyproject lists dependencies already declared at the workspace root; remove
duplicate entries (e.g. requests, polars, structlog, fastapi, boto3, numpy,
pandera, sentry-sdk, tinygrad, internal) from this package's dependencies and
instead reference them from the root workspace pyproject.toml, and if
package-specific extras or pinned versions are needed reconcile them at the
root; also ensure the dev dependency group (boto3-stubs[s3]) is moved or
referenced consistently at the workspace level to avoid conflicting
declarations.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@tools/pyproject.toml`:
- Around line 6-15: Remove duplicate pins for "polars>=1.29.0",
"requests>=2.32.5", and "structlog>=25.5.0" from the tools pyproject.toml
dependencies array and instead declare them once in the root workspace
pyproject.toml; update the tools/tools/pyproject.toml to only include packages
unique to tools (e.g., keep "boto3>=1.40.74" and "sagemaker>=2.256.0,<3.0.0")
and remove the repeated entries so version management for these libraries is
centralized in the root workspace pyproject.toml.

---

Duplicate comments:
In `@applications/equitypricemodel/pyproject.toml`:
- Around line 7-20: This pyproject lists dependencies already declared at the
workspace root; remove duplicate entries (e.g. requests, polars, structlog,
fastapi, boto3, numpy, pandera, sentry-sdk, tinygrad, internal) from this
package's dependencies and instead reference them from the root workspace
pyproject.toml, and if package-specific extras or pinned versions are needed
reconcile them at the root; also ensure the dev dependency group
(boto3-stubs[s3]) is moved or referenced consistently at the workspace level to
avoid conflicting declarations.

In `@applications/portfoliomanager/pyproject.toml`:
- Around line 7-15: This pyproject lists dependencies duplicated elsewhere;
remove the shared packages (fastapi, requests, polars, structlog and any other
workspace-common libs like pandera/alpaca-py/sentry-sdk if present at root) from
this application's pyproject.toml and add them to the root workspace
pyproject.toml dependency section instead, ensuring version specifiers are
preserved and this module only keeps app-specific deps; update the workspace
root pyproject.toml to include the consolidated entries (matching versions) and
then delete the duplicate lines from the application's dependency list to avoid
conflicts.

ℹ️ Review info

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6b78262 and 4f769a8.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (4)
  • applications/equitypricemodel/pyproject.toml
  • applications/portfoliomanager/pyproject.toml
  • pyproject.toml
  • tools/pyproject.toml
💤 Files with no reviewable changes (1)
  • pyproject.toml

Comment thread tools/pyproject.toml
Copilot AI review requested due to automatic review settings February 24, 2026 16:12
coderabbitai[bot]
coderabbitai Bot previously approved these changes Feb 24, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 9 out of 10 changed files in this pull request and generated no new comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Copy Markdown
Contributor

@greptile-apps greptile-apps Bot left a comment

Choose a reason for hiding this comment

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

10 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

Comment thread tools/pyproject.toml
@forstmeier forstmeier merged commit 268b99d into master Feb 24, 2026
7 checks passed
@forstmeier forstmeier deleted the consolidate-package-versioning branch February 24, 2026 16:30
@github-project-automation github-project-automation Bot moved this from In Progress to Done in Overview Feb 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

python Python code updates rust Rust code updates

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

2 participants