Skip to content

Test #187

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

Closed
wants to merge 10 commits into from
Closed

Test #187

wants to merge 10 commits into from

Conversation

Nidhi091999
Copy link
Contributor

@Nidhi091999 Nidhi091999 commented May 12, 2025

checks

Summary by Sourcery

Introduce a custom configuration model and namespace existing settings under a dedicated 'custom' key, updating code references and documentation accordingly.

New Features:

  • Define a Pydantic-based CustomConfig schema for typed application settings.
  • Enable loading the custom configuration model via the custom_config_model parameter in app initialization.

Enhancements:

  • Move all controller, TES, logging, middleware, and service information under a custom section in config.yaml.
  • Update code paths to reference foca.config.custom instead of the root config fields.
  • Add a Docker Compose reference link to the README for improved documentation.

Documentation:

  • Extend README with a Docker Compose resource link.

Copy link

sourcery-ai bot commented May 12, 2025

Reviewer's Guide

This PR restructures the application’s configuration by introducing a new “custom” section in config.yaml backed by a Pydantic CustomConfig model, updates code to reference the nested custom settings (controllers, TES, logging, middlewares, serviceInfo), adjusts app initialization to use the new model, and adds a small documentation link.

File-Level Changes

Change Details Files
Nest existing settings under a new custom root in config.yaml
  • Moved controllers, serviceInfo, tes, storeLogs, and middlewares blocks under a top-level custom key
  • Re-indented and adjusted key casing (e.g. serviceInfo, storeLogs) accordingly
pro_tes/config.yaml
Add Pydantic models for the new custom config structure
  • Created config_models.py defining BaseModel classes for controllers, tasks, TES, logging, middlewares, and CustomConfig
  • Mapped all nested settings into typed attributes
pro_tes/config_models.py
Reference custom settings in code instead of flat foca config
  • Replaced references to foca_config.controllers, foca_config.storeLogs, foca_config.serviceInfo, and foca.tes with foca_config.custom.*
  • Adjusted imports and attribute access in task_runs, service_info, middleware base, and track_task_progress
pro_tes/ga4gh/tes/task_runs.py
pro_tes/ga4gh/tes/service_info.py
pro_tes/plugins/middlewares/task_distribution/base.py
pro_tes/tasks/track_task_progress.py
Configure the app to use the CustomConfig model
  • Passed custom_config_model="pro_tes.config_models.CustomConfig" to the Foca initializer
pro_tes/app.py
Update documentation with a new Docker Compose link
  • Appended a [res-docker compose] reference link in README
README.md

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

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

Hey @Nidhi091999 - I've reviewed your changes - here's some feedback:

  • The Celery config block was left at the root instead of under custom.controllers.celery—move it under the new custom.controllers hierarchy to match your CustomConfig model.
  • YAML uses 'serviceInfo' but the Pydantic model defines 'service_info'; either rename the key or add an alias in the model so they align.
  • You're indexing Pydantic models like dicts (e.g. custom.storeLogs["execution_trace"]); switch to attribute access (custom.storeLogs.execution_trace) for type safety and clarity.
Here's what I looked at during the review
  • 🟡 General issues: 2 issues found
  • 🟢 Security: all looks good
  • 🟢 Testing: all looks good
  • 🟢 Documentation: all looks good

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

tes: Tes = Tes()
storeLogs: StoreLogs = StoreLogs()
middlewares: Middlewares = Middlewares()
service_info: TesServiceInfo
Copy link

Choose a reason for hiding this comment

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

issue (bug_risk): YAML key 'serviceInfo' does not match Pydantic field 'service_info'

Add Field(..., alias='serviceInfo') to service_info or rename it to serviceInfo so the YAML key aligns and loads correctly.

@@ -86,7 +86,7 @@ def create_task( # pylint: disable=too-many-statements,too-many-branches
# apply middlewares
mw_handler = MiddlewareHandler()
mw_handler.set_middlewares(
paths=current_app.config.foca.middlewares # type: ignore
paths=current_app.config.foca.custom.middlewares # type: ignore
Copy link

Choose a reason for hiding this comment

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

issue (bug_risk): Passing Pydantic model instead of raw list to middleware handler

Pass middlewares.__root__ or update the model to expose the list as a normal field, so set_middlewares receives an actual list.

@Nidhi091999 Nidhi091999 deleted the test branch May 12, 2025 12:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant