From ea982dc1b008a635a766504966fba87d71a74114 Mon Sep 17 00:00:00 2001 From: Dmitry Ivanov Date: Sat, 20 Sep 2025 12:51:58 +0300 Subject: [PATCH 1/4] Update export_sheets.py (don't clear wk content) --- src/export_sheets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/export_sheets.py b/src/export_sheets.py index 7e2c921..23e9e4e 100644 --- a/src/export_sheets.py +++ b/src/export_sheets.py @@ -22,7 +22,7 @@ def write_data_to_table(csv_path, google_token, table_id, sheet_id, start_cell=" df = pd.DataFrame(INT_MASS) # Очистка существующих данных - wk_content.clear() + # wk_content.clear() # Запись новых данных wk_content.set_dataframe(df, start_cell, copy_head=True) From 8908cce53aa459376b5177d506cdc9f03d90a6ad Mon Sep 17 00:00:00 2001 From: Dmitry Ivanov Date: Sat, 20 Sep 2025 12:59:57 +0300 Subject: [PATCH 2/4] rename sheet_id arg to sheet_name (to match content) --- main.py | 8 ++++---- src/export_sheets.py | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/main.py b/main.py index 4f068a5..8e6f6ea 100644 --- a/main.py +++ b/main.py @@ -117,7 +117,7 @@ def parse_args(): help='Specify Google sheet document id (can find in url)', ) parser.add_argument( - '--sheet_id', + '--sheet_name', type=str, required=False, help='Specify title for a sheet in a document in which data will be printed', @@ -130,7 +130,7 @@ def parse_args(): action.required = True if action.dest == 'table_id': action.required = True - if action.dest == 'sheet_id': + if action.dest == 'sheet_name': action.required = True return parser.parse_args() @@ -172,11 +172,11 @@ def run(args, binded_repos, repos_for_wiki=None): if args.export_google_sheets: if args.start_cell: export_sheets.write_data_to_table( - args.out, args.google_token, args.table_id, args.sheet_id, args.start_cell + args.out, args.google_token, args.table_id, args.sheet_name, args.start_cell ) else: export_sheets.write_data_to_table( - args.out, args.google_token, args.table_id, args.sheet_id + args.out, args.google_token, args.table_id, args.sheet_name ) diff --git a/src/export_sheets.py b/src/export_sheets.py index 23e9e4e..455199b 100644 --- a/src/export_sheets.py +++ b/src/export_sheets.py @@ -4,17 +4,17 @@ INT_MASS = [{"one": 1, "two": 2, "what?": 3}] -def write_data_to_table(csv_path, google_token, table_id, sheet_id, start_cell="A1"): - if google_token and sheet_id and table_id: +def write_data_to_table(csv_path, google_token, table_id, sheet_name, start_cell="A1"): + if google_token and sheet_name and table_id: gc = pygsheets.authorize(service_file=google_token) sh = gc.open_by_key(table_id) try: - sh.worksheets('title', sheet_id) + sh.worksheets('title', sheet_name) except Exception: - sh.add_worksheet(sheet_id) + sh.add_worksheet(sheet_name) - wk_content = sh.worksheet_by_title(sheet_id) + wk_content = sh.worksheet_by_title(sheet_name) if csv_path: df = pd.read_csv(csv_path, delimiter=',', encoding='utf-8') From 21b6e6135060ea76df0a3adff89f1e578fcd4ae7 Mon Sep 17 00:00:00 2001 From: Dmitry Ivanov Date: Sat, 20 Sep 2025 13:47:46 +0300 Subject: [PATCH 3/4] small docker using reorganization --- .dockerignore | 5 +++++ Dockerfile | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..fd9abfc --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +.github +.git +forgejo +Industrial_Nikolaev_AA_9381 +reports \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index cf66b92..68ffeff 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,13 @@ -FROM python:3.10-slim +FROM python:3.12-slim +ENV GIT_PYTHON_GIT_EXECUTABLE=/usr/bin/git WORKDIR /app RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/* -COPY . /app - +COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt -ENV GIT_PYTHON_GIT_EXECUTABLE=/usr/bin/git +COPY . /app ENTRYPOINT ["python", "main.py"] From b29295bea38b5824926cd2a7209107be1f2cbb9f Mon Sep 17 00:00:00 2001 From: Dmitry Ivanov Date: Sat, 20 Sep 2025 13:58:10 +0300 Subject: [PATCH 4/4] improving gsheet publishing (updated start_cell logic, add clear_sheet logic) --- main.py | 35 ++++++++++++++++++++--------------- src/export_sheets.py | 7 ++++--- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/main.py b/main.py index 8e6f6ea..e40f62c 100644 --- a/main.py +++ b/main.py @@ -41,7 +41,7 @@ def parse_args(): type=str, required=False, help='Starting cell for Google Sheets export (e.g., "A1", "B3")', - default=None + default="A1" ) parser.add_argument( @@ -122,6 +122,12 @@ def parse_args(): required=False, help='Specify title for a sheet in a document in which data will be printed', ) + parser.add_argument( + "--clear_sheet", + action="store_true", + required=False, + help="Specify to clear sheet content before printing", + ) args = parser.parse_args() if args.export_google_sheets: @@ -170,25 +176,24 @@ def run(args, binded_repos, repos_for_wiki=None): if args.wikis: wikipars.wikiparser(repos_for_wiki, args.download_repos, args.out) if args.export_google_sheets: - if args.start_cell: - export_sheets.write_data_to_table( - args.out, args.google_token, args.table_id, args.sheet_name, args.start_cell - ) - else: - export_sheets.write_data_to_table( - args.out, args.google_token, args.table_id, args.sheet_name - ) + export_sheets.write_data_to_table( + csv_path=args.out, + google_token=args.google_token, + table_id=args.table_id, + sheet_name=args.sheet_name, + start_cell=args.start_cell, + clear_content=args.clear_sheet, + ) def main(): args = parse_args() - if args.start_cell is not None: - try: - args.start_cell = validate_and_normalize_cell(args.start_cell) - except ValueError as e: - print(f"Error in start_cell argument: {e}") - sys.exit(1) + try: + args.start_cell = validate_and_normalize_cell(args.start_cell) + except ValueError as e: + print(f"Error in start_cell argument: {e}") + sys.exit(1) if args.token: tokens = [args.token] diff --git a/src/export_sheets.py b/src/export_sheets.py index 455199b..2d0d162 100644 --- a/src/export_sheets.py +++ b/src/export_sheets.py @@ -4,7 +4,7 @@ INT_MASS = [{"one": 1, "two": 2, "what?": 3}] -def write_data_to_table(csv_path, google_token, table_id, sheet_name, start_cell="A1"): +def write_data_to_table(csv_path, google_token, table_id, sheet_name, start_cell="A1", clear_content=False): if google_token and sheet_name and table_id: gc = pygsheets.authorize(service_file=google_token) sh = gc.open_by_key(table_id) @@ -22,7 +22,8 @@ def write_data_to_table(csv_path, google_token, table_id, sheet_name, start_cell df = pd.DataFrame(INT_MASS) # Очистка существующих данных - # wk_content.clear() + if clear_content: + wk_content.clear() # Запись новых данных - wk_content.set_dataframe(df, start_cell, copy_head=True) + wk_content.set_dataframe(df=df, start=start_cell, copy_head=True, nan='')