Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file removed .pre-commit.yaml
Empty file.
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,9 @@ $ python main_agent.py --debug
## Tests

```bash
$ pytest tests/
$ pytest tests
$ pytest tests/test_sources_ponderation.py -v
$ pytest tests/test_send_articles_email.py -v
```

## Interface UI pour les articles résumés
Expand All @@ -136,7 +137,7 @@ Sur http://127.0.0.1:8000/

## L'automate exécuté

![Schéma généré](schema-graphe.png)
![Schéma généré](docs/schema-graphe.png)

## Gmail SMTP

Expand Down
20 changes: 10 additions & 10 deletions app/__init__.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# from core import measure_time, argscli, logger
from core.logger import logger
from core.utils import measure_time #, get_environment_variable
from models.emails import EmailTemplateParams
from models.states import RSSState
from .core.logger import logger
from .core.utils import measure_time # , get_environment_variable
from .models.emails import EmailTemplateParams
from .models.states import RSSState

__all__ = [
'logger',
'measure_time',
'argscli',
'EmailTemplateParams',
'RSSState'
]
"logger",
"measure_time",
# 'argscli',
"EmailTemplateParams",
"RSSState",
]
2 changes: 1 addition & 1 deletion app/__main__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from .main_agent import main # ou votre fonction principale

if __name__ == "__main__":
main()
main()
9 changes: 5 additions & 4 deletions core/__init__.py → app/core/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@
# from .utils import argscli
from .utils import measure_time, get_environment_variable
from .logger import logger

__all__ = [
'measure_time',
'logger',
"measure_time",
"logger",
# 'argscli',
'get_environment_variable'
]
"get_environment_variable",
]
41 changes: 28 additions & 13 deletions core/logger.py → app/core/logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@

logging.basicConfig(level=logging.INFO)

def print_color(color, text):
print(color + text)

# =========================
# Formatter coloré
# =========================
Expand All @@ -23,29 +26,41 @@ def format(self, record):
record.levelname = levelname_color
return super().format(record)

def setup_logger(level=logging.INFO):
logger = logging.getLogger(__name__)
logger.propagate = False # Empêche la propagation aux loggers parents

# Assurez-vous qu'il n'y a qu'un seul handler
if not logger.handlers:
formatter = ColorFormatter(
fmt="%(asctime)s - %(levelname)s - %(message)s",
datefmt="%d/%m/%Y %H:%M:%S"
fmt="%(asctime)s - %(levelname)s - %(message)s", datefmt="%d/%m/%Y %H:%M:%S"
)
handler = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)

logger = logging.getLogger(__name__)
logger.setLevel(level)
logger.addHandler(handler)
logger.propagate = False

def setup_logger(level=logging.INFO):
formatter = ColorFormatter(
fmt="%(asctime)s - %(levelname)s - %(message)s", datefmt="%d/%m/%Y %H:%M:%S"
)
if not logger.handlers:
handler = logging.StreamHandler()
handler.setFormatter(formatter)
logger.addHandler(handler)

# logger = logging.getLogger(__name__)
# logger.setLevel(level)
# logger.addHandler(handler)
# logger.propagate = False
return logger

logger = setup_logger()

def print_color(color, text):
print(color + text)
logger = setup_logger()

def count_by_type_articles(title, articles_by_source, color=Fore.LIGHTYELLOW_EX):
from collections import Counter
from core.logger import print_color
source_counts = Counter(item['source'].value for item in articles_by_source)

source_counts = Counter(item["source"].value for item in articles_by_source)
print_color(color, "=" * 60)
print_color(color, f"{title} {source_counts}")
print_color(color, "=" * 60)
print_color(color, "=" * 60)
16 changes: 11 additions & 5 deletions core/utils.py → app/core/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,28 +4,33 @@
import time
import logging
import argparse
from colorama import Fore, Style, init
from core.logger import setup_logger

from app.core.logger import setup_logger
from app.core.logger import logger

# =========================
# Configuration du logging
# Couleurs
# =========================


def parse_cli_args():
parser = argparse.ArgumentParser(description="Agent RSS avec résumés LLM")
parser.add_argument("--debug", action="store_true", help="Active le mode debug détaillé")
parser.add_argument(
"--debug", action="store_true", help="Active le mode debug détaillé"
)
return parser.parse_args()


def configure_logging_from_args():
args = parse_cli_args()
level = logging.DEBUG if args.debug else logging.INFO
return setup_logger(level=level), args


def measure_time(func):
@wraps(func)
def wrapper(*args, **kwargs):
from core.logger import logger
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
Expand All @@ -36,6 +41,7 @@ def wrapper(*args, **kwargs):

return wrapper

def get_environment_variable(key, default = None):

def get_environment_variable(key, default=None):
load_dotenv()
return os.getenv(key, default)
4 changes: 4 additions & 0 deletions app/db/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from .db import init_db, save_to_db, DB_PATH
from .db import read_articles

__all__ = ["init_db", "save_to_db", "DB_PATH", "read_articles"]
Loading