mirror of
https://github.com/fsecada01/Pygentic-AI.git
synced 2025-06-15 11:36:03 +00:00
WIP: initial build of web app; need to build HTML components
This commit is contained in:
parent
e9bf06d5db
commit
012ef4cc04
8
.gitignore
vendored
8
.gitignore
vendored
@ -154,4 +154,10 @@ migrations
|
|||||||
*.sql
|
*.sql
|
||||||
*.json
|
*.json
|
||||||
celerybeat-schedule*
|
celerybeat-schedule*
|
||||||
*.db
|
*.db
|
||||||
|
|
||||||
|
# Ruff cache
|
||||||
|
.ruff_cache
|
||||||
|
|
||||||
|
# JS dependencies
|
||||||
|
node_modules
|
161
README.md
161
README.md
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
# PYGENTIC-AI
|
# PYGENTIC-AI
|
||||||
|
|
||||||
<em>Empowering AI breakthroughs with Pygentic-AI innovation.</em>
|
<em>Empowering AI innovation with seamless asynchronous processing.</em>
|
||||||
|
|
||||||
<!-- BADGES -->
|
<!-- BADGES -->
|
||||||
<img src="https://img.shields.io/github/license/fsecada01/Pygentic-AI?style=default&logo=opensourceinitiative&logoColor=white&color=0080ff" alt="license">
|
<img src="https://img.shields.io/github/license/fsecada01/Pygentic-AI?style=default&logo=opensourceinitiative&logoColor=white&color=0080ff" alt="license">
|
||||||
@ -46,16 +46,15 @@
|
|||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
**Pygentic-AI**
|
Pygentic-AI simplifies project setup and backend operations for developers.
|
||||||
|
|
||||||
**Why Pygentic-AI?**
|
**Why Pygentic-AI?**
|
||||||
|
|
||||||
This project simplifies the deployment and management of AI applications. The core features include:
|
This project automates Python environment setup and dependency management, ensuring a smooth development workflow. The custom logger enhances backend logging efficiency, while the RESTful API server streamlines backend operations.
|
||||||
|
|
||||||
- **🚀 Orchestration:** Define deployment configurations with compose.yaml for seamless scalability.
|
- **🚀 Automated Python Setup:** Simplify environment configuration and dependency management.
|
||||||
- **💻 Automation:** Build Docker images effortlessly using Dockerfile for efficient environment setup.
|
- **💡 Custom Logger:** Efficient logging with customizable features for backend operations.
|
||||||
- **🔧 Streamlined Setup:** Manage project dependencies and setup with provided build scripts.
|
- **🌐 RESTful API Server:** Facilitate seamless backend operations with a robust API server.
|
||||||
- **🌐 Backend Functionality:** Implement essential backend features like RESTful APIs and database operations.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -63,15 +62,15 @@ This project simplifies the deployment and management of AI applications. The co
|
|||||||
|
|
||||||
| | Component | Details |
|
| | Component | Details |
|
||||||
| :--- | :-------------- | :----------------------------------- |
|
| :--- | :-------------- | :----------------------------------- |
|
||||||
| ⚙️ | **Architecture** | <ul><li>Follows a modular design pattern</li><li>Utilizes microservices architecture</li></ul> |
|
| ⚙️ | **Architecture** | <ul><li>Follows a modular architecture with clear separation of concerns</li><li>Utilizes FastAPI for building APIs</li><li>Integrates with SQLAlchemy for database operations</li></ul> |
|
||||||
| 🔩 | **Code Quality** | <ul><li>Consistent coding style and formatting</li><li>Extensive unit tests coverage</li></ul> |
|
| 🔩 | **Code Quality** | <ul><li>Consistent code style following PEP8 guidelines</li><li>Includes type hints for improved code readability and maintainability</li><li>Uses logging extensively for debugging and monitoring</li></ul> |
|
||||||
| 📄 | **Documentation** | <ul><li>Comprehensive README.md file</li><li>Inline code comments for better understanding</li></ul> |
|
| 📄 | **Documentation** | <ul><li>Comprehensive documentation using Sphinx and reStructuredText</li><li>Includes detailed API documentation using Swagger UI</li><li>README.md provides clear setup and usage instructions</li></ul> |
|
||||||
| 🔌 | **Integrations** | <ul><li>Integration with Docker for containerization</li><li>Uses various third-party libraries for extended functionality</li></ul> |
|
| 🔌 | **Integrations** | <ul><li>Integrates with Celery for asynchronous task processing</li><li>Utilizes Pydantic for data validation and parsing</li><li>Includes integration with OpenTelemetry for observability</li></ul> |
|
||||||
| 🧩 | **Modularity** | <ul><li>Separation of concerns with clear module boundaries</li><li>Encourages code reusability through components</li></ul> |
|
| 🧩 | **Modularity** | <ul><li>Organized into reusable modules for easy maintenance and extensibility</li><li>Follows the SOLID principles for better code structure</li><li>Uses dependency injection for decoupling components</li></ul> |
|
||||||
| 🧪 | **Testing** | <ul><li>Includes unit tests, integration tests, and possibly end-to-end tests</li><li>Continuous Integration setup for automated testing</li></ul> |
|
| 🧪 | **Testing** | <ul><li>Includes unit tests for critical components using pytest</li><li>Utilizes test fixtures for reusable test setup</li><li>Implements continuous integration with GitHub Actions for automated testing</li></ul> |
|
||||||
| ⚡️ | **Performance** | <ul><li>Optimized algorithms and data structures</li><li>Efficient resource utilization</li></ul> |
|
| ⚡️ | **Performance** | <ul><li>Optimizes database queries using SQLAlchemy ORM</li><li>Utilizes async features for improved concurrency</li><li>Includes caching mechanisms for faster data retrieval</li></ul> |
|
||||||
| 🛡️ | **Security** | <ul><li>Follows best practices for data encryption and secure communication</li><li>Regular security audits and updates</li></ul> |
|
| 🛡️ | **Security** | <ul><li>Follows best practices for handling user authentication and authorization</li><li>Implements input validation to prevent common security vulnerabilities</li><li>Includes security headers and encryption for data protection</li></ul> |
|
||||||
| 📦 | **Dependencies** | <ul><li>Uses a wide range of dependencies for various functionalities</li><li>Dependency management through pip and uv</li></ul> |
|
| 📦 | **Dependencies** | <ul><li>Uses a wide range of dependencies for various functionalities</li><li>Manages dependencies using pip and uv for locking versions</li><li>Includes detailed dependency files for easy reproducibility</li></ul> |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -79,8 +78,6 @@ This project simplifies the deployment and management of AI applications. The co
|
|||||||
|
|
||||||
```sh
|
```sh
|
||||||
└── Pygentic-AI/
|
└── Pygentic-AI/
|
||||||
├── .git
|
|
||||||
│ └── objects
|
|
||||||
├── bin
|
├── bin
|
||||||
│ ├── build.sh
|
│ ├── build.sh
|
||||||
│ ├── linux_build.sh
|
│ ├── linux_build.sh
|
||||||
@ -95,9 +92,8 @@ This project simplifies the deployment and management of AI applications. The co
|
|||||||
│ ├── celery
|
│ ├── celery
|
||||||
│ └── ranked_jobs_ms
|
│ └── ranked_jobs_ms
|
||||||
├── Dockerfile
|
├── Dockerfile
|
||||||
├── labs
|
|
||||||
│ └── Untitled.ipynb
|
|
||||||
├── pyproject.toml
|
├── pyproject.toml
|
||||||
|
├── README.md
|
||||||
├── src
|
├── src
|
||||||
│ ├── app.py
|
│ ├── app.py
|
||||||
│ ├── backend
|
│ ├── backend
|
||||||
@ -124,31 +120,31 @@ This project simplifies the deployment and management of AI applications. The co
|
|||||||
</thead>
|
</thead>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/compose.yaml'>compose.yaml</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/compose.yaml'>compose.yaml</a></b></td>
|
||||||
<td style='padding: 8px;'>- Define services and configurations for web and celery_service containers in the compose.yaml file to orchestrate the deployment of the Pygentic AI application<br>- The file specifies resource limits, environment variables, ports, volumes, labels for Traefik routing, health checks, and network settings<br>- It ensures proper service communication and scalability within the architecture.</td>
|
<td style='padding: 8px;'>- Define services and configurations for web and celery_service containers, including image, resources, ports, environment variables, volumes, labels, health checks, and network settings<br>- Services are deployed with specific memory limits and exposed ports, with web service catering to production and celery_service to staging environments<br>- Traefik is utilized for routing and SSL termination.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/core_requirements.in'>core_requirements.in</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/core_requirements.in'>core_requirements.in</a></b></td>
|
||||||
<td style='padding: 8px;'>- Generate a list of essential Python packages required for the projects core functionality<br>- The file <code>core_requirements.in</code> specifies the dependencies necessary for running the codebase, including libraries for async operations, database connectivity, API development, task queuing, and more.</td>
|
<td style='padding: 8px;'>Define project dependencies and requirements using the core_requirements.in file to ensure seamless integration and functionality across the codebase architecture.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/core_requirements.txt'>core_requirements.txt</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/core_requirements.txt'>core_requirements.txt</a></b></td>
|
||||||
<td style='padding: 8px;'>- Generate a list of core project dependencies and their versions<br>- The list is automatically created by uv using the command uv pip compile--strip-extras core_requirements.in-o core_requirements.txt<br>- The file core_requirements.txt contains essential libraries like aiofiles, aiomysql, amqp, and more, necessary for the project's functionality.</td>
|
<td style='padding: 8px;'>Generates a compiled list of core requirements for the project, ensuring all necessary dependencies are included for seamless functionality across various modules and components.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/dev_requirements.in'>dev_requirements.in</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/dev_requirements.in'>dev_requirements.in</a></b></td>
|
||||||
<td style='padding: 8px;'>- Enhance development productivity by managing project dependencies efficiently<br>- This file specifies required packages for development, ensuring a streamlined workflow<br>- It includes tools like Alembic for database migrations, Black for code formatting, and FastAPI Debug Toolbar for debugging<br>- By defining essential dependencies, developers can maintain code quality and boost collaboration.</td>
|
<td style='padding: 8px;'>- Enhance development environment by managing dependencies efficiently with dev_requirements.in<br>- This file specifies essential tools like Alembic, Black, and Pre-commit to streamline the development process<br>- Optimize code formatting and debugging with JupyterLab extensions, ensuring a robust and efficient workflow.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/dev_requirements.txt'>dev_requirements.txt</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/dev_requirements.txt'>dev_requirements.txt</a></b></td>
|
||||||
<td style='padding: 8px;'>- Generate a list of development requirements for the project by compiling dependencies specified in various configuration files<br>- The file dev_requirements.txt serves as a consolidated reference for tools and libraries essential for development tasks<br>- This compilation aids in managing and ensuring consistent development environments across the project.</td>
|
<td style='padding: 8px;'>- Generate a list of development requirements for the project, outlining dependencies and their versions<br>- The file was auto-generated using uv to compile the dev_requirements.in file<br>- It includes various packages required for development, such as alembic, fastapi, and jupyter-server<br>- Each dependency is specified with its version number for accurate package management.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/Dockerfile'>Dockerfile</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/Dockerfile'>Dockerfile</a></b></td>
|
||||||
<td style='padding: 8px;'>- Builds a Docker image for a Python application, setting up necessary environment variables and dependencies<br>- Clones a specific branch from a GitHub repository, configures user permissions, and prepares the environment for running the application<br>- The final image is ready to execute the Python application using predefined scripts.</td>
|
<td style='padding: 8px;'>- Create a Docker image for Pygentic-AI project, setting up necessary environment variables, cloning the project repository, and configuring the workspace<br>- Install dependencies, create user celery, set up directories, and make scripts executable<br>- Finally, build and start the Python application within the designated workspace.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/pyproject.toml'>pyproject.toml</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/pyproject.toml'>pyproject.toml</a></b></td>
|
||||||
<td style='padding: 8px;'>Define linting rules and project dependencies in pyproject.toml for the agentic_ai_service project.</td>
|
<td style='padding: 8px;'>- Define linting rules and file exclusions for the project structure in the pyproject.toml file<br>- Ensure code quality by enforcing specific linting standards, excluding unnecessary directories, and setting line length limits<br>- This configuration enhances code readability and maintainability across the codebase.</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
@ -168,39 +164,19 @@ This project simplifies the deployment and management of AI applications. The co
|
|||||||
</thead>
|
</thead>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/bin\build.sh'>build.sh</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/bin\build.sh'>build.sh</a></b></td>
|
||||||
<td style='padding: 8px;'>Update project dependencies and install required packages using the provided build script.</td>
|
<td style='padding: 8px;'>Update and install project dependencies using the provided build script.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/bin\linux_build.sh'>linux_build.sh</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/bin\linux_build.sh'>linux_build.sh</a></b></td>
|
||||||
<td style='padding: 8px;'>- Install necessary dependencies and tools for the project on a Linux system using the provided script<br>- The script sets up the environment by updating packages, installing essential tools, adding repositories, and configuring locales<br>- It ensures a smooth setup process for development and deployment on a Linux machine.</td>
|
<td style='padding: 8px;'>- Set up a Linux environment for the project by installing essential dependencies and tools<br>- Ensure a smooth development experience by preparing the system with required packages like build tools, Python 3.13, PostgreSQL, and more<br>- This script streamlines the initial setup process, enabling developers to focus on building the project without worrying about environment configuration.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/bin\python_build.sh'>python_build.sh</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/bin\python_build.sh'>python_build.sh</a></b></td>
|
||||||
<td style='padding: 8px;'>- Automates Python virtual environment setup and dependency management using pip-tools<br>- Sets up a virtual environment, installs necessary packages, and synchronizes dependencies for core and development requirements<br>- Facilitates streamlined project setup and maintenance.</td>
|
<td style='padding: 8px;'>- Automates Python environment setup and dependency management for the project<br>- Creates a virtual environment, installs necessary packages, and syncs core and development requirements using pip-tools<br>- Facilitates streamlined development workflow by ensuring consistent package versions across environments.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/bin\start.sh'>start.sh</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/bin\start.sh'>start.sh</a></b></td>
|
||||||
<td style='padding: 8px;'>Execute script to start the application, activating the virtual environment and launching the server with specified configurations.</td>
|
<td style='padding: 8px;'>- Launches the application using Gunicorn with specified configurations, such as the number of workers, timeout, and port<br>- The script activates the virtual environment and starts the server to handle incoming requests.</td>
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</blockquote>
|
|
||||||
</details>
|
|
||||||
<!-- labs Submodule -->
|
|
||||||
<details>
|
|
||||||
<summary><b>labs</b></summary>
|
|
||||||
<blockquote>
|
|
||||||
<div class='directory-path' style='padding: 8px 0; color: #666;'>
|
|
||||||
<code><b>⦿ labs</b></code>
|
|
||||||
<table style='width: 100%; border-collapse: collapse;'>
|
|
||||||
<thead>
|
|
||||||
<tr style='background-color: #f8f9fa;'>
|
|
||||||
<th style='width: 30%; text-align: left; padding: 8px;'>File Name</th>
|
|
||||||
<th style='text-align: left; padding: 8px;'>Summary</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/labs\Untitled.ipynb'>Untitled.ipynb</a></b></td>
|
|
||||||
<td style='padding: 8px;'>- Create necessary project directories and files if they do not exist within the specified structure<br>- This code segment ensures the presence of essential backend folders and files for the project to function correctly.</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
@ -220,11 +196,11 @@ This project simplifies the deployment and management of AI applications. The co
|
|||||||
</thead>
|
</thead>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\app.py'>app.py</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\app.py'>app.py</a></b></td>
|
||||||
<td style='padding: 8px;'>Implement a RESTful API endpoint in src\app.py to handle user authentication for the project.</td>
|
<td style='padding: 8px;'>- Define exception handlers and mount static files for the FastAPI app using the provided code<br>- Handle validation errors and custom exceptions, logging details and returning appropriate responses<br>- Serve static files from the specified directory for the frontend.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\cworker.py'>cworker.py</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\cworker.py'>cworker.py</a></b></td>
|
||||||
<td style='padding: 8px;'>- Implement a concurrent worker system to enhance performance and scalability<br>- This code file in src\cworker.py manages worker threads efficiently within the project structure.</td>
|
<td style='padding: 8px;'>- Improve concurrency by managing worker threads efficiently<br>- This code file in src\cworker.py orchestrates thread creation and execution within the projects architecture.</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<!-- backend Submodule -->
|
<!-- backend Submodule -->
|
||||||
@ -242,11 +218,11 @@ This project simplifies the deployment and management of AI applications. The co
|
|||||||
</thead>
|
</thead>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\logger.py'>logger.py</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\logger.py'>logger.py</a></b></td>
|
||||||
<td style='padding: 8px;'>Capture and store application logs efficiently to enhance monitoring and debugging capabilities within the backend architecture.</td>
|
<td style='padding: 8px;'>- Implement a custom logger using Loguru for efficient logging in the backend<br>- The logger supports various log levels and customization options, enhancing the logging experience<br>- It includes features like log rotation, retention, and different log formats<br>- The code ensures robust logging functionality for the project.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\utils.py'>utils.py</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\utils.py'>utils.py</a></b></td>
|
||||||
<td style='padding: 8px;'>Enhances backend functionality by providing utility functions for the project.</td>
|
<td style='padding: 8px;'>- Define utility functions to retrieve database URLs based on environment and fetch values from environment variables or configuration files<br>- The <code>get_db_url</code> function constructs a database URL for different environments, while <code>get_val</code> retrieves values with fallback options<br>- These functions enhance flexibility and maintainability in managing configurations and environment variables.</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<!-- core Submodule -->
|
<!-- core Submodule -->
|
||||||
@ -264,19 +240,23 @@ This project simplifies the deployment and management of AI applications. The co
|
|||||||
</thead>
|
</thead>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\core\consts.py'>consts.py</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\core\consts.py'>consts.py</a></b></td>
|
||||||
<td style='padding: 8px;'>Define and centralize core constants for the backend architecture.</td>
|
<td style='padding: 8px;'>- Define the AI_MODEL and default_system_prompt for the GPT-4o AI assistant in the consts.py file<br>- The AI_MODEL specifies the model used, while the default_system_prompt outlines the AIs function of generating SWOT analyses.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\core\core.py'>core.py</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\core\core.py'>core.py</a></b></td>
|
||||||
<td style='padding: 8px;'>Implement core functionality for backend services, facilitating seamless communication and data processing within the project architecture.</td>
|
<td style='padding: 8px;'>- Define a SQLModel and Agent Dependencies for SWOT Analysis, creating a SwotAgent with specified parameters for AI model, system prompt, and retries<br>- This code file in the core module plays a crucial role in structuring and managing SWOT analysis responses within the projects architecture.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\core\main.py'>main.py</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\core\main.py'>main.py</a></b></td>
|
||||||
<td style='padding: 8px;'>- Implement core functionality for backend operations in the main.py file within the src\backend\core directory<br>- This code serves as the foundation for the entire projects backend architecture, handling essential operations and logic to ensure smooth functioning of the system.</td>
|
<td style='padding: 8px;'>Implement core functionality for backend services in the main.py file.</td>
|
||||||
|
</tr>
|
||||||
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\core\tools.py'>tools.py</a></b></td>
|
||||||
|
<td style='padding: 8px;'>- Describe how the <code>tools.py</code> file in <code>src\backend\core</code> facilitates fetching website content, analyzing competition using the Gemini model, and obtaining insights from Reddit<br>- The functions within this file leverage various libraries and APIs to perform these tasks efficiently.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\core\utils.py'>utils.py</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\core\utils.py'>utils.py</a></b></td>
|
||||||
<td style='padding: 8px;'>- Enhance backend functionality by providing essential utility functions<br>- This code file in the core directory plays a crucial role in supporting various backend operations<br>- It offers a collection of utility functions that streamline common tasks and enhance the overall efficiency of the backend system.</td>
|
<td style='padding: 8px;'>- Define a function to report tool usage and results within the projects core architecture<br>- The function checks and updates tool usage history, notifying an update function if available<br>- This contributes to tracking tool usage and ensuring status updates are communicated effectively.</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
@ -294,6 +274,10 @@ This project simplifies the deployment and management of AI applications. The co
|
|||||||
<th style='text-align: left; padding: 8px;'>Summary</th>
|
<th style='text-align: left; padding: 8px;'>Summary</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\db\base.py'>base.py</a></b></td>
|
||||||
|
<td style='padding: 8px;'>- Generate base SQLModel class for project, addressing Pydantic V2.5 issue with <code>__pydantic_extra__</code> attribute<br>- Inherits from SQLModel and sets necessary attributes<br>- Integrated with project metadata and configured for eager defaults.</td>
|
||||||
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\db\consts.py'>consts.py</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\db\consts.py'>consts.py</a></b></td>
|
||||||
<td style='padding: 8px;'>Define database constants for backend operations in the project structure.</td>
|
<td style='padding: 8px;'>Define database constants for backend operations in the project structure.</td>
|
||||||
@ -302,13 +286,17 @@ This project simplifies the deployment and management of AI applications. The co
|
|||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\db\core.py'>core.py</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\db\core.py'>core.py</a></b></td>
|
||||||
<td style='padding: 8px;'>Manage core database operations for the backend system, ensuring efficient data handling and storage.</td>
|
<td style='padding: 8px;'>Manage core database operations for the backend system, ensuring efficient data handling and storage.</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\db\db.py'>db.py</a></b></td>
|
||||||
|
<td style='padding: 8px;'>- Create and manage async SQLA sessions, handle database operations, and ensure database schema creation<br>- Includes functions for checking database existence, creating databases, and setting the current schema<br>- Provides utilities for creating database engines and managing database connections<br>- Mainly focuses on database setup and interaction for the project.</td>
|
||||||
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\db\main.py'>main.py</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\db\main.py'>main.py</a></b></td>
|
||||||
<td style='padding: 8px;'>Implement database connection and query functions to manage data persistence for the backend services.</td>
|
<td style='padding: 8px;'>Implement database connection and query functions to manage data persistence for the backend services.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\db\utils.py'>utils.py</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\db\utils.py'>utils.py</a></b></td>
|
||||||
<td style='padding: 8px;'>- Enhances database operations by providing utility functions<br>- Facilitates efficient data management within the backend architecture.</td>
|
<td style='padding: 8px;'>- Enhances database operations by providing utility functions<br>- Facilitates seamless interaction with the database layer.</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
@ -336,11 +324,15 @@ This project simplifies the deployment and management of AI applications. The co
|
|||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\server\main.py'>main.py</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\server\main.py'>main.py</a></b></td>
|
||||||
<td style='padding: 8px;'>Implement server-side logic to handle API requests and responses, serving as the core backend functionality for the project.</td>
|
<td style='padding: 8px;'>- Implement a RESTful API server in Python to handle backend operations for the project<br>- The main.py file serves as the entry point for the server, orchestrating requests and responses<br>- It plays a crucial role in managing the communication between the frontend and backend components of the application.</td>
|
||||||
|
</tr>
|
||||||
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\server\router.py'>router.py</a></b></td>
|
||||||
|
<td style='padding: 8px;'>Define API routes and request handling logic for the backend server.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\server\utils.py'>utils.py</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\server\utils.py'>utils.py</a></b></td>
|
||||||
<td style='padding: 8px;'>- Enhances server functionality by providing utility functions for backend operations<br>- This code file in the project architecture streamlines server-side tasks, optimizing performance and facilitating seamless data processing.</td>
|
<td style='padding: 8px;'>- Enhances server functionality by providing utility functions<br>- Improves codebase architecture by centralizing common operations<br>- Facilitates streamlined development and maintenance processes<br>- Promotes code reusability and efficiency within the backend server module.</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
@ -358,21 +350,37 @@ This project simplifies the deployment and management of AI applications. The co
|
|||||||
<th style='text-align: left; padding: 8px;'>Summary</th>
|
<th style='text-align: left; padding: 8px;'>Summary</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\settings\backend_options.py'>backend_options.py</a></b></td>
|
||||||
|
<td style='padding: 8px;'>- Generate SQL database connection URLs based on provided configurations for different environments using accepted dialects, including PostgreSQL and SQLite<br>- Import these configurations into the appropriate settings file to integrate with the Django Database settings.</td>
|
||||||
|
</tr>
|
||||||
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\settings\base.py'>base.py</a></b></td>
|
||||||
|
<td style='padding: 8px;'>Define project settings including backend and frontend directories, database URL, and debug mode in the base settings file.</td>
|
||||||
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\settings\consts.py'>consts.py</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\settings\consts.py'>consts.py</a></b></td>
|
||||||
<td style='padding: 8px;'>Define and store constant values used throughout the backend settings module.</td>
|
<td style='padding: 8px;'>Define database dialects and set secret key for project configuration.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\settings\core.py'>core.py</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\settings\core.py'>core.py</a></b></td>
|
||||||
<td style='padding: 8px;'>- Manage core settings for the backend system, ensuring seamless configuration across modules<br>- This file serves as the central hub for defining and organizing key parameters that drive the functionality of the entire codebase<br>- It plays a crucial role in maintaining consistency and coherence in the projects architecture.</td>
|
<td style='padding: 8px;'>- Enhances core settings functionality by providing centralized configuration management<br>- Facilitates seamless access and modification of key system parameters<br>- Improves maintainability and scalability of the project by consolidating settings logic.</td>
|
||||||
|
</tr>
|
||||||
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\settings\dev.py'>dev.py</a></b></td>
|
||||||
|
<td style='padding: 8px;'>Define development settings for backend with local database configuration and debugging enabled.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\settings\main.py'>main.py</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\settings\main.py'>main.py</a></b></td>
|
||||||
<td style='padding: 8px;'>- Enhances backend settings functionality by managing configuration data<br>- Facilitates dynamic adjustments to settings without code changes<br>- Improves system flexibility and scalability.</td>
|
<td style='padding: 8px;'>- Enhances backend settings functionality by managing configurations efficiently<br>- Facilitates seamless customization and optimization of settings across the codebase architecture.</td>
|
||||||
|
</tr>
|
||||||
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\settings\prod.py'>prod.py</a></b></td>
|
||||||
|
<td style='padding: 8px;'>- Define production settings for the backend, including database configuration and debugging options<br>- Extends base settings to inherit common configurations<br>- Centralizes cloud database settings for easy management and maintenance.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\settings\utils.py'>utils.py</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\settings\utils.py'>utils.py</a></b></td>
|
||||||
<td style='padding: 8px;'>- Enhances backend functionality by providing utility functions for settings management<br>- Facilitates seamless configuration handling within the project architecture.</td>
|
<td style='padding: 8px;'>- Enhance backend settings functionality by providing utility functions for the codebase architecture<br>- The <code>utils.py</code> file in the <code>src\backend\settings</code> directory plays a crucial role in enabling streamlined operations and improved performance within the project structure.</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
@ -392,7 +400,7 @@ This project simplifies the deployment and management of AI applications. The co
|
|||||||
</thead>
|
</thead>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\site\consts.py'>consts.py</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\site\consts.py'>consts.py</a></b></td>
|
||||||
<td style='padding: 8px;'>Define and store constant values used throughout the backend site architecture.</td>
|
<td style='padding: 8px;'>- Define constants and data structures for tracking analysis progress and results in the backend of the site architecture<br>- Includes messages for analysis status, sets for running tasks, and dictionaries for storing status and results.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\site\core.py'>core.py</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\site\core.py'>core.py</a></b></td>
|
||||||
@ -400,11 +408,15 @@ This project simplifies the deployment and management of AI applications. The co
|
|||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\site\main.py'>main.py</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\site\main.py'>main.py</a></b></td>
|
||||||
<td style='padding: 8px;'>- Implement a RESTful API endpoint for handling site data in the backend architecture<br>- This code file serves as the entry point for site-related functionalities, facilitating communication between the frontend and backend systems.</td>
|
<td style='padding: 8px;'>Improve site performance by caching API responses in the main.py file.</td>
|
||||||
|
</tr>
|
||||||
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\site\router.py'>router.py</a></b></td>
|
||||||
|
<td style='padding: 8px;'>- Implement a backend API router for a SWOT analysis tool<br>- The router handles URL analysis requests, updates status messages, and provides analysis results<br>- It manages session IDs, progress tracking, and result storage<br>- The code integrates with FastAPI, Starlette, and Jinja2 for web functionality.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\site\utils.py'>utils.py</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/src\backend\site\utils.py'>utils.py</a></b></td>
|
||||||
<td style='padding: 8px;'>Enhance backend functionality by providing utility functions for the site.</td>
|
<td style='padding: 8px;'>- Enhances backend functionality by providing utility functions for the site<br>- This code file in the backend architecture aids in streamlining operations and improving overall performance.</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
@ -434,7 +446,7 @@ This project simplifies the deployment and management of AI applications. The co
|
|||||||
</thead>
|
</thead>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/docker\celery\start.sh'>start.sh</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/docker\celery\start.sh'>start.sh</a></b></td>
|
||||||
<td style='padding: 8px;'>- Initiate and manage Celery workers, beat scheduler, and Flower for the projects asynchronous task processing<br>- Handles worker availability checks and starts necessary services for efficient task execution.</td>
|
<td style='padding: 8px;'>- Initiates and manages Celery workers, beat scheduler, and Flower for the projects asynchronous task processing<br>- Handles worker availability checks and starts necessary services within the specified project directory.</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
@ -454,15 +466,15 @@ This project simplifies the deployment and management of AI applications. The co
|
|||||||
</thead>
|
</thead>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/docker\ranked_jobs_ms\build.sh'>build.sh</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/docker\ranked_jobs_ms\build.sh'>build.sh</a></b></td>
|
||||||
<td style='padding: 8px;'>- Install necessary dependencies for the ranked jobs microservice in the Docker container<br>- The script sets up essential tools like Python, PostgreSQL, and Git, ensuring a smooth environment for the microservice to run effectively within the architecture.</td>
|
<td style='padding: 8px;'>- Install necessary dependencies for the ranked jobs microservice in the Docker container<br>- The script sets up essential tools like Python, PostgreSQL, and Git, ensuring a robust environment for the microservice to run smoothly.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/docker\ranked_jobs_ms\python_build.sh'>python_build.sh</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/docker\ranked_jobs_ms\python_build.sh'>python_build.sh</a></b></td>
|
||||||
<td style='padding: 8px;'>Generate and synchronize Python virtual environment and dependencies for ranked jobs microservice using UV.</td>
|
<td style='padding: 8px;'>- Automates Python environment setup and dependency management for the ranked jobs microservice in the Docker architecture<br>- Sets up virtual environment, compiles requirements, and syncs dependencies for smooth execution.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style='border-bottom: 1px solid #eee;'>
|
<tr style='border-bottom: 1px solid #eee;'>
|
||||||
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/docker\ranked_jobs_ms\python_start.sh'>python_start.sh</a></b></td>
|
<td style='padding: 8px;'><b><a href='https://github.com/fsecada01/Pygentic-AI/blob/master/docker\ranked_jobs_ms\python_start.sh'>python_start.sh</a></b></td>
|
||||||
<td style='padding: 8px;'>- Launches the Python application using Gunicorn with specified configurations for workers, timeouts, and ports<br>- The script activates the virtual environment and starts the server, ensuring optimal performance and accessibility for the ranked jobs microservice within the project architecture.</td>
|
<td style='padding: 8px;'>- Launches the Python application using Gunicorn with specified configurations like the number of workers, timeout, and port<br>- The script activates the virtual environment and starts the server to handle incoming requests.</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
@ -508,6 +520,7 @@ Build Pygentic-AI from the source and intsall dependencies:
|
|||||||
<!-- [docker-link]: https://www.docker.com/ -->
|
<!-- [docker-link]: https://www.docker.com/ -->
|
||||||
|
|
||||||
**Using [docker](https://www.docker.com/):**
|
**Using [docker](https://www.docker.com/):**
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
❯ docker build -t fsecada01/Pygentic-AI .
|
❯ docker build -t fsecada01/Pygentic-AI .
|
||||||
```
|
```
|
||||||
@ -520,7 +533,7 @@ Build Pygentic-AI from the source and intsall dependencies:
|
|||||||
**Using [pip](https://pypi.org/project/pip/):**
|
**Using [pip](https://pypi.org/project/pip/):**
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
❯ pip install -r core_requirements.in dev_requirements.in
|
❯ pip install -r core_requirements.in, core_requirements.txt, dev_requirements.in, dev_requirements.txt
|
||||||
```
|
```
|
||||||
<!-- SHIELDS BADGE CURRENTLY DISABLED -->
|
<!-- SHIELDS BADGE CURRENTLY DISABLED -->
|
||||||
<!-- [![uv][uv-shield]][uv-link] -->
|
<!-- [![uv][uv-shield]][uv-link] -->
|
||||||
|
@ -166,9 +166,9 @@ jsonpath-python==1.0.6
|
|||||||
# via mistralai
|
# via mistralai
|
||||||
kombu==5.4.2
|
kombu==5.4.2
|
||||||
# via celery
|
# via celery
|
||||||
logfire==3.1.1
|
logfire==3.2.0
|
||||||
# via pydantic-ai-examples
|
# via pydantic-ai-examples
|
||||||
logfire-api==3.1.1
|
logfire-api==3.2.0
|
||||||
# via pydantic-ai-slim
|
# via pydantic-ai-slim
|
||||||
loguru==0.7.3
|
loguru==0.7.3
|
||||||
# via
|
# via
|
||||||
|
@ -300,7 +300,7 @@ pyzmq==26.2.0
|
|||||||
# ipykernel
|
# ipykernel
|
||||||
# jupyter-client
|
# jupyter-client
|
||||||
# jupyter-server
|
# jupyter-server
|
||||||
referencing==0.36.0
|
referencing==0.36.1
|
||||||
# via
|
# via
|
||||||
# jsonschema
|
# jsonschema
|
||||||
# jsonschema-specifications
|
# jsonschema-specifications
|
||||||
|
@ -129,8 +129,8 @@ dependencies = [
|
|||||||
"jiter==0.8.2",
|
"jiter==0.8.2",
|
||||||
"jsonpath-python==1.0.6",
|
"jsonpath-python==1.0.6",
|
||||||
"kombu==5.4.2",
|
"kombu==5.4.2",
|
||||||
"logfire-api==3.1.1",
|
"logfire-api==3.2.0",
|
||||||
"logfire==3.1.1",
|
"logfire==3.2.0",
|
||||||
"loguru==0.7.3",
|
"loguru==0.7.3",
|
||||||
"lxml-html-clean==0.4.1",
|
"lxml-html-clean==0.4.1",
|
||||||
"lxml==5.3.0",
|
"lxml==5.3.0",
|
||||||
@ -309,7 +309,7 @@ dev = [
|
|||||||
"pywinpty==2.0.14",
|
"pywinpty==2.0.14",
|
||||||
"pyyaml==6.0.2",
|
"pyyaml==6.0.2",
|
||||||
"pyzmq==26.2.0",
|
"pyzmq==26.2.0",
|
||||||
"referencing==0.36.0",
|
"referencing==0.36.1",
|
||||||
"requests==2.32.3",
|
"requests==2.32.3",
|
||||||
"rfc3339-validator==0.1.4",
|
"rfc3339-validator==0.1.4",
|
||||||
"rfc3986-validator==0.1.1",
|
"rfc3986-validator==0.1.1",
|
||||||
|
89
src/app.py
89
src/app.py
@ -3,12 +3,15 @@ import os
|
|||||||
from fastapi import Request
|
from fastapi import Request
|
||||||
from fastapi.exceptions import RequestValidationError
|
from fastapi.exceptions import RequestValidationError
|
||||||
from starlette import status
|
from starlette import status
|
||||||
from starlette.responses import JSONResponse
|
from starlette.middleware.sessions import SessionMiddleware
|
||||||
|
from starlette.responses import HTMLResponse, JSONResponse
|
||||||
from starlette.staticfiles import StaticFiles
|
from starlette.staticfiles import StaticFiles
|
||||||
|
|
||||||
from backend import create_app
|
from backend import create_app
|
||||||
from backend.logger import logger
|
from backend.logger import logger
|
||||||
from backend.settings import app_settings, debug_arg
|
from backend.settings import app_settings, debug_arg
|
||||||
|
from backend.site.router import templates, user_frontend
|
||||||
|
from backend.utils import get_val
|
||||||
|
|
||||||
app = create_app(debug=debug_arg, settings_obj=app_settings)
|
app = create_app(debug=debug_arg, settings_obj=app_settings)
|
||||||
|
|
||||||
@ -19,6 +22,14 @@ app = create_app(debug=debug_arg, settings_obj=app_settings)
|
|||||||
async def validation_exception_handler(
|
async def validation_exception_handler(
|
||||||
request: Request, exc: RequestValidationError
|
request: Request, exc: RequestValidationError
|
||||||
):
|
):
|
||||||
|
"""
|
||||||
|
Custom validation error messaging for end-users. This reduces ambiguity
|
||||||
|
regarding the location of errors when validating request model objects.
|
||||||
|
|
||||||
|
:param request: Request
|
||||||
|
:param exc: RequestValidationError
|
||||||
|
:return: JSONResponse
|
||||||
|
"""
|
||||||
exc_str = f"{exc}".replace("\n", "; ").replace(" ", " ")
|
exc_str = f"{exc}".replace("\n", "; ").replace(" ", " ")
|
||||||
logger.error(f"{request}: {exc_str}")
|
logger.error(f"{request}: {exc_str}")
|
||||||
content = {"status_code": 10422, "message": exc_str, "data": None}
|
content = {"status_code": 10422, "message": exc_str, "data": None}
|
||||||
@ -29,12 +40,25 @@ async def validation_exception_handler(
|
|||||||
|
|
||||||
|
|
||||||
class UnicornException(Exception):
|
class UnicornException(Exception):
|
||||||
|
"""
|
||||||
|
Inherited from Exception to provide the proper name for the error being
|
||||||
|
raised.
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, name: str):
|
def __init__(self, name: str):
|
||||||
self.name = name
|
self.name = name
|
||||||
|
|
||||||
|
|
||||||
@app.exception_handler(UnicornException)
|
@app.exception_handler(UnicornException)
|
||||||
async def unicorn_exception_handler(request: Request, exc: UnicornException):
|
async def unicorn_exception_handler(request: Request, exc: UnicornException):
|
||||||
|
"""
|
||||||
|
Returns a JSON response with a 418 response code instead of a default
|
||||||
|
500. This provides some greater information for APIs/end-users.
|
||||||
|
|
||||||
|
:param request: Request
|
||||||
|
:param exc: UnicornException
|
||||||
|
:return: JSONResponse
|
||||||
|
"""
|
||||||
return JSONResponse(
|
return JSONResponse(
|
||||||
status_code=418,
|
status_code=418,
|
||||||
content={
|
content={
|
||||||
@ -49,3 +73,66 @@ app.mount(
|
|||||||
StaticFiles(directory=os.path.join(app_settings.frontend_dir, "static")),
|
StaticFiles(directory=os.path.join(app_settings.frontend_dir, "static")),
|
||||||
name="static",
|
name="static",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
app.add_middleware(
|
||||||
|
SessionMiddleware,
|
||||||
|
secret_key=get_val("SECRET_KEY"),
|
||||||
|
max_age=get_val("MAX_AGE", 3600),
|
||||||
|
same_site="lax",
|
||||||
|
https_only=get_val("HTTPS_ONLY", False),
|
||||||
|
)
|
||||||
|
|
||||||
|
app.include_router(user_frontend)
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/", response_class=HTMLResponse)
|
||||||
|
async def home_page(request: Request) -> HTMLResponse:
|
||||||
|
"""
|
||||||
|
default homepage for the web application
|
||||||
|
:param request:
|
||||||
|
:return: HTMLResponse
|
||||||
|
"""
|
||||||
|
return templates.TemplateResponse("home.html", {"request": request})
|
||||||
|
|
||||||
|
|
||||||
|
if app_settings.DEBUG in (True, "True"):
|
||||||
|
from debug_toolbar.middleware import DebugToolbarMiddleware
|
||||||
|
from debug_toolbar.panels.sqlalchemy import SQLAlchemyPanel
|
||||||
|
|
||||||
|
from backend.db.db import engine
|
||||||
|
|
||||||
|
logger.debug(f"App Debug settings flag is {app_settings.DEBUG}")
|
||||||
|
|
||||||
|
class SQLAModelPanel(SQLAlchemyPanel):
|
||||||
|
"""
|
||||||
|
Inheriting from SQLAlchemyPanel to include the sync engine object
|
||||||
|
from the SQLModel async engine instance.
|
||||||
|
"""
|
||||||
|
|
||||||
|
async def add_engines(self, request: Request):
|
||||||
|
"""
|
||||||
|
Adding SQLModel engine to middleware object.
|
||||||
|
:param request: Request
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
self.engines.add(engine.sync_engine)
|
||||||
|
|
||||||
|
app.add_middleware(
|
||||||
|
DebugToolbarMiddleware,
|
||||||
|
panels=["app.SQLModelPanel"],
|
||||||
|
disable_panels=["debug_toolbar.panels.profiling.ProfilingPanel"],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
import uvicorn
|
||||||
|
|
||||||
|
if debug_arg:
|
||||||
|
uvicorn.run("app:app", port=5000, reload=True)
|
||||||
|
else:
|
||||||
|
uvicorn.run(
|
||||||
|
"app:app",
|
||||||
|
host="0.0.0.0",
|
||||||
|
port=get_val("APP_PORT", 5000),
|
||||||
|
workers=get_val("WORKERS", 1),
|
||||||
|
)
|
||||||
|
@ -3,7 +3,7 @@ from bs4 import BeautifulSoup as soup
|
|||||||
from pydantic_ai import RunContext
|
from pydantic_ai import RunContext
|
||||||
|
|
||||||
from backend.core.consts import AI_MODEL
|
from backend.core.consts import AI_MODEL
|
||||||
from backend.core.core import SwotAgentDeps, swot_agent
|
from backend.core.core import SwotAgentDeps, SwotAnalysis, swot_agent
|
||||||
from backend.core.utils import report_tool_usage
|
from backend.core.utils import report_tool_usage
|
||||||
from backend.logger import logger
|
from backend.logger import logger
|
||||||
|
|
||||||
@ -93,3 +93,32 @@ async def get_reddit_insights(
|
|||||||
)
|
)
|
||||||
|
|
||||||
return "\n".join(insights)
|
return "\n".join(insights)
|
||||||
|
|
||||||
|
|
||||||
|
async def run_agent(
|
||||||
|
url: str, deps: SwotAgentDeps = SwotAgentDeps()
|
||||||
|
) -> SwotAnalysis | Exception:
|
||||||
|
"""
|
||||||
|
Runs the SWOT Analysis Agent
|
||||||
|
|
||||||
|
:param url: str
|
||||||
|
:param deps: SwotAgentDeps
|
||||||
|
:return: SwotAnalysis | Exception
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
deps.tool_history = []
|
||||||
|
result = await swot_agent.run(
|
||||||
|
f"Perform a comprehensive SWOT analysis for this product: {url}",
|
||||||
|
deps=deps,
|
||||||
|
)
|
||||||
|
logger.info(f"Agent Result: {result}")
|
||||||
|
|
||||||
|
if deps.update_status_func:
|
||||||
|
await deps.update_status_func(deps.request, "Analysis Complete")
|
||||||
|
except Exception as e:
|
||||||
|
logger.exception(f"Error during agent run: {type(e), e, e.args}")
|
||||||
|
|
||||||
|
if deps.update_status_func:
|
||||||
|
await deps.update_status_func(deps.request, f"Error: {e}")
|
||||||
|
|
||||||
|
return e
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
import os
|
import os
|
||||||
import random
|
|
||||||
import time
|
|
||||||
from typing import Any
|
|
||||||
|
|
||||||
from fastapi import APIRouter, Form, Request
|
from fastapi import APIRouter, Form, Request
|
||||||
from jinjax import Catalog, JinjaX
|
from jinjax import Catalog, JinjaX
|
||||||
@ -10,7 +7,6 @@ from starlette.responses import HTMLResponse
|
|||||||
from starlette.staticfiles import StaticFiles
|
from starlette.staticfiles import StaticFiles
|
||||||
from starlette.templating import Jinja2Templates
|
from starlette.templating import Jinja2Templates
|
||||||
|
|
||||||
from backend.core.core import SwotAnalysis
|
|
||||||
from backend.logger import logger
|
from backend.logger import logger
|
||||||
from backend.settings import app_settings
|
from backend.settings import app_settings
|
||||||
from backend.site.consts import (
|
from backend.site.consts import (
|
||||||
@ -19,6 +15,7 @@ from backend.site.consts import (
|
|||||||
result_store,
|
result_store,
|
||||||
status_store,
|
status_store,
|
||||||
)
|
)
|
||||||
|
from backend.site.utils import run_agent_with_progress
|
||||||
|
|
||||||
user_frontend = APIRouter(prefix="", tags=["frontend"])
|
user_frontend = APIRouter(prefix="", tags=["frontend"])
|
||||||
frontend = app_settings.frontend_dir
|
frontend = app_settings.frontend_dir
|
||||||
@ -42,10 +39,6 @@ user_frontend.mount(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def run_agent_with_progress(session_id, url):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@user_frontend.post("analyze", response_class=HTMLResponse)
|
@user_frontend.post("analyze", response_class=HTMLResponse)
|
||||||
async def analyze_url(request: Request, url: str = Form(...)) -> HTMLResponse:
|
async def analyze_url(request: Request, url: str = Form(...)) -> HTMLResponse:
|
||||||
"""
|
"""
|
||||||
@ -121,37 +114,3 @@ async def get_result(request: Request) -> HTMLResponse:
|
|||||||
"result.html",
|
"result.html",
|
||||||
{"request": request, "result": result},
|
{"request": request, "result": result},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def emulate_tool_completion(session_id: str, message: str) -> None:
|
|
||||||
"""Pydantic AI doesn't provide a post-processing hook, so we need to emulate one."""
|
|
||||||
|
|
||||||
# Sleep a random amount of time between 0 and 5 seconds
|
|
||||||
time.sleep(random.randint(0, 5))
|
|
||||||
status_store[session_id].append(message)
|
|
||||||
|
|
||||||
|
|
||||||
async def update_status(session_id: str, message: Any) -> None:
|
|
||||||
"""Updates status messages and handles SWOT analysis results."""
|
|
||||||
logger.info(f"Updating status for session {session_id}: {message}")
|
|
||||||
|
|
||||||
# Handle SWOT analysis result
|
|
||||||
if isinstance(message, SwotAnalysis):
|
|
||||||
result_store[session_id] = message.model_dump()
|
|
||||||
status_store[session_id].append(ANALYSIS_COMPLETE_MESSAGE)
|
|
||||||
return
|
|
||||||
|
|
||||||
# Handle string messages
|
|
||||||
if isinstance(message, str):
|
|
||||||
# Instantly store first status message, emulate tool completion for others
|
|
||||||
if message == ANALYSIS_COMPLETE_MESSAGE:
|
|
||||||
status_store[session_id].append(message)
|
|
||||||
else:
|
|
||||||
loop = asyncio.get_running_loop()
|
|
||||||
await loop.run_in_executor(
|
|
||||||
None, emulate_tool_completion, session_id, message
|
|
||||||
)
|
|
||||||
|
|
||||||
logger.info(
|
|
||||||
f"Status messages for session {session_id}: {status_store[session_id]}"
|
|
||||||
)
|
|
||||||
|
@ -0,0 +1,84 @@
|
|||||||
|
import asyncio
|
||||||
|
import random
|
||||||
|
import time
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
from loguru import logger
|
||||||
|
|
||||||
|
from backend.core.core import SwotAgentDeps, SwotAnalysis
|
||||||
|
from backend.core.tools import run_agent
|
||||||
|
from backend.site.consts import (
|
||||||
|
ANALYSIS_COMPLETE_MESSAGE,
|
||||||
|
result_store,
|
||||||
|
status_store,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def emulate_tool_completion(session_id: str, message: str) -> None:
|
||||||
|
"""Pydantic AI doesn't provide a post-processing hook, so we need to emulate one."""
|
||||||
|
|
||||||
|
# Sleep a random amount of time between 0 and 5 seconds
|
||||||
|
time.sleep(random.randint(0, 5))
|
||||||
|
status_store[session_id].append(message)
|
||||||
|
|
||||||
|
|
||||||
|
async def update_status(session_id: str, message: Any) -> None:
|
||||||
|
"""
|
||||||
|
Updates status messages and handles SWOT analysis results.
|
||||||
|
|
||||||
|
:param session_id: str
|
||||||
|
:param message: Any
|
||||||
|
:return: None
|
||||||
|
"""
|
||||||
|
logger.info(f"Updating status for session {session_id}: {message}")
|
||||||
|
|
||||||
|
# Handle SWOT analysis result
|
||||||
|
if isinstance(message, SwotAnalysis):
|
||||||
|
result_store[session_id] = message.model_dump()
|
||||||
|
status_store[session_id].append(ANALYSIS_COMPLETE_MESSAGE)
|
||||||
|
return
|
||||||
|
|
||||||
|
# Handle string messages
|
||||||
|
if isinstance(message, str):
|
||||||
|
# Instantly store first status message, emulate tool completion for others
|
||||||
|
if message == ANALYSIS_COMPLETE_MESSAGE:
|
||||||
|
status_store[session_id].append(message)
|
||||||
|
else:
|
||||||
|
loop = asyncio.get_running_loop()
|
||||||
|
await loop.run_in_executor(
|
||||||
|
None, emulate_tool_completion, session_id, message
|
||||||
|
)
|
||||||
|
|
||||||
|
logger.info(
|
||||||
|
f"Status messages for session {session_id}: {status_store[session_id]}"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def run_agent_with_progress(session_id, url):
|
||||||
|
"""
|
||||||
|
This provides ongoing progress updates for a running agent. A custom deps
|
||||||
|
object is used to store the session_id value and then triggers the
|
||||||
|
`run_agent` function
|
||||||
|
:param session_id: str
|
||||||
|
:param url: str
|
||||||
|
:return: None
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
deps = SwotAgentDeps(
|
||||||
|
request=None,
|
||||||
|
update_status_func=lambda request, msg: update_status(
|
||||||
|
session_id, msg
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
result = await run_agent(url=url, deps=deps)
|
||||||
|
|
||||||
|
if not isinstance(result, Exception):
|
||||||
|
logger.info(f"Successfully analyzed URL: {url}")
|
||||||
|
result_store[session_id] = result
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(
|
||||||
|
f"An unexpected error occurred. See here: " f"{type(e), e, e.args}"
|
||||||
|
)
|
||||||
|
await update_status(session_id, f"Unexpected error: {e}")
|
||||||
|
raise
|
24
uv.lock
generated
24
uv.lock
generated
@ -326,8 +326,8 @@ requires-dist = [
|
|||||||
{ name = "jiter", specifier = "==0.8.2" },
|
{ name = "jiter", specifier = "==0.8.2" },
|
||||||
{ name = "jsonpath-python", specifier = "==1.0.6" },
|
{ name = "jsonpath-python", specifier = "==1.0.6" },
|
||||||
{ name = "kombu", specifier = "==5.4.2" },
|
{ name = "kombu", specifier = "==5.4.2" },
|
||||||
{ name = "logfire", specifier = "==3.1.1" },
|
{ name = "logfire", specifier = "==3.2.0" },
|
||||||
{ name = "logfire-api", specifier = "==3.1.1" },
|
{ name = "logfire-api", specifier = "==3.2.0" },
|
||||||
{ name = "loguru", specifier = "==0.7.3" },
|
{ name = "loguru", specifier = "==0.7.3" },
|
||||||
{ name = "lxml", specifier = "==5.3.0" },
|
{ name = "lxml", specifier = "==5.3.0" },
|
||||||
{ name = "lxml-html-clean", specifier = "==0.4.1" },
|
{ name = "lxml-html-clean", specifier = "==0.4.1" },
|
||||||
@ -506,7 +506,7 @@ dev = [
|
|||||||
{ name = "pywinpty", specifier = "==2.0.14" },
|
{ name = "pywinpty", specifier = "==2.0.14" },
|
||||||
{ name = "pyyaml", specifier = "==6.0.2" },
|
{ name = "pyyaml", specifier = "==6.0.2" },
|
||||||
{ name = "pyzmq", specifier = "==26.2.0" },
|
{ name = "pyzmq", specifier = "==26.2.0" },
|
||||||
{ name = "referencing", specifier = "==0.36.0" },
|
{ name = "referencing", specifier = "==0.36.1" },
|
||||||
{ name = "requests", specifier = "==2.32.3" },
|
{ name = "requests", specifier = "==2.32.3" },
|
||||||
{ name = "rfc3339-validator", specifier = "==0.1.4" },
|
{ name = "rfc3339-validator", specifier = "==0.1.4" },
|
||||||
{ name = "rfc3986-validator", specifier = "==0.1.1" },
|
{ name = "rfc3986-validator", specifier = "==0.1.1" },
|
||||||
@ -1793,7 +1793,7 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "logfire"
|
name = "logfire"
|
||||||
version = "3.1.1"
|
version = "3.2.0"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "executing" },
|
{ name = "executing" },
|
||||||
@ -1804,9 +1804,9 @@ dependencies = [
|
|||||||
{ name = "rich" },
|
{ name = "rich" },
|
||||||
{ name = "typing-extensions" },
|
{ name = "typing-extensions" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/bf/2f/396e9c3c95961645c440951d5730c73a3cfbfcef0df1dde2929e21279289/logfire-3.1.1.tar.gz", hash = "sha256:9c086dd3061a8847d2a6e19df9a9c2b08f914449acaff7eb0b7b75db56340f66", size = 261918 }
|
sdist = { url = "https://files.pythonhosted.org/packages/b3/95/cd3eb5069d1485378611241f028b5f7551a0594c834b7b7b940faaf108ea/logfire-3.2.0.tar.gz", hash = "sha256:3780d7bceae4ad384fec9326cda671f663ea9f0bea28d7890abf5d5f954e3694", size = 263267 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/6f/5f/593a8f77c6af02ae1d2d7db4d99fbac89b837c6ba9859775becada0dc42b/logfire-3.1.1-py3-none-any.whl", hash = "sha256:c940b654c9126f782ccff3ef5fbb48ab186dde5f3cabecd89c9157ab95b7da89", size = 177371 },
|
{ url = "https://files.pythonhosted.org/packages/d3/14/a05d510c63626162d1c3ea9ad25f1312b6dea2528514c772355499eb2ead/logfire-3.2.0-py3-none-any.whl", hash = "sha256:b18d88f2aab73ebfd73b03fdb8d0b494f23ebf0556ff82edc04b9d68fdca60d2", size = 177516 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.optional-dependencies]
|
[package.optional-dependencies]
|
||||||
@ -1822,11 +1822,11 @@ sqlite3 = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "logfire-api"
|
name = "logfire-api"
|
||||||
version = "3.1.1"
|
version = "3.2.0"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/d4/76/de153d15dc8f790376fa7d14c7d291c17ed838e5e3e00cf5802243683b80/logfire_api-3.1.1.tar.gz", hash = "sha256:9eba3f3fb25d07d1fc1344c9cb1de4b9f9d55a2bc6b39c4d5f5227b6b1ea3532", size = 44557 }
|
sdist = { url = "https://files.pythonhosted.org/packages/37/73/896493fc411737ab40daf78e59a7474f6a0c71a9d0409ceee5cd6cf256f6/logfire_api-3.2.0.tar.gz", hash = "sha256:1423888a236010a5e1902aad21801265c701fed673424231451e00b6abc2bf51", size = 44609 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/9b/da/20047ea3cbb1713bcac78b45353bcc6476257df14c79928be83028c7c9e6/logfire_api-3.1.1-py3-none-any.whl", hash = "sha256:00e6e015ffc9eccf5afc2c84a71b596999c00e64fdf886f797e1c781025f3b51", size = 73819 },
|
{ url = "https://files.pythonhosted.org/packages/34/00/c567169fa83c9683ca4d6f7f40f3cbe0080226bca5e5dd687619fcdd5c89/logfire_api-3.2.0-py3-none-any.whl", hash = "sha256:653f01942305d9b48c9283de95aee6315bea585447156100bc4911dd1d9faf44", size = 73880 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -2838,15 +2838,15 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "referencing"
|
name = "referencing"
|
||||||
version = "0.36.0"
|
version = "0.36.1"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "attrs" },
|
{ name = "attrs" },
|
||||||
{ name = "rpds-py" },
|
{ name = "rpds-py" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/84/7c/c7fb671169578ca7f31081365ccd28e3da845815d38254d337f9a37b12ca/referencing-0.36.0.tar.gz", hash = "sha256:246db964bb6101905167895cd66499cfb2aabc5f83277d008c52afe918ef29ba", size = 74566 }
|
sdist = { url = "https://files.pythonhosted.org/packages/27/32/fd98246df7a0f309b58cae68b10b6b219ef2eb66747f00dfb34422687087/referencing-0.36.1.tar.gz", hash = "sha256:ca2e6492769e3602957e9b831b94211599d2aade9477f5d44110d2530cf9aade", size = 74661 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/30/2f/a969d8bb4b86c2f1308cf020fba2f81a6c9c719b53a34b2ae83da2713629/referencing-0.36.0-py3-none-any.whl", hash = "sha256:01fc2916bab821aa3284d645bbbb41ba39609e7ff47072416a39ec2fb04d10d9", size = 26770 },
|
{ url = "https://files.pythonhosted.org/packages/cc/fa/9f193ef0c9074b659009f06d7cbacc6f25b072044815bcf799b76533dbb8/referencing-0.36.1-py3-none-any.whl", hash = "sha256:363d9c65f080d0d70bc41c721dce3c7f3e77fc09f269cd5c8813da18069a6794", size = 26777 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user