yeref 0.24.99__py3-none-any.whl → 0.25.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
yeref/yeref.py CHANGED
@@ -16011,108 +16011,108 @@ async def calc_metrics(bot, PROJECT_USERNAME, dataroom_folder_id, EXTRA_D, BASE_
16011
16011
  r4 = await return_retention_metrics(bot, data_users, EXTRA_D)
16012
16012
  r5 = await return_profit_and_loss_metrics(bot, data_users, EXTRA_D)
16013
16013
 
16014
- # --- Начинаем сразу с объединённого цикла по всем метрикам r1–r5 ---
16015
- metrics_paths = [r1, r2, r3, r4, r5]
16016
- tables = [] # сюда будем складывать словари вида {'name': basename, 'rows': [[...], ...]}
16017
-
16018
- # 1) Собираем существующие CSV-файлы
16019
- for path in metrics_paths:
16020
- if path and os.path.isfile(path):
16021
- basename = os.path.basename(path)
16022
- with open(path, newline='', encoding='utf-8') as csvfile:
16023
- reader = csv.reader(csvfile)
16024
- rows = list(reader)
16025
- logger.info(f"Найден файл '{basename}', строк = {len(rows)}.")
16026
- tables.append({'name': basename, 'rows': rows})
16027
- else:
16028
- logger.warning(f"Файл не найден или не существует: {path}")
16029
-
16030
- # 2) Если ни одного CSV не обнаружено, выходим
16031
- if not tables:
16032
- logger.warning("Ни один CSV-файл не найден. Прерываем запись.")
16033
- else:
16034
- # 3) Авторизация в Google Sheets
16035
- scopes = r_conf('scopes', CONF_P)
16036
- credential_path = os.path.join(EXTRA_D, (r_conf('credential_file', CONF_P))[0])
16037
- credentials = ServiceAccountCredentials.from_json_keyfile_name(credential_path, scopes)
16038
- http_auth = credentials.authorize(httplib2.Http())
16039
- sheets_service = build('sheets', 'v4', http=http_auth, cache_discovery=False)
16014
+ # --- Начинаем сразу с объединённого цикла по всем метрикам r1–r5 ---
16015
+ metrics_paths = [r1, r2, r3, r4, r5]
16016
+ tables = [] # сюда будем складывать словари вида {'name': basename, 'rows': [[...], ...]}
16017
+
16018
+ # 1) Собираем существующие CSV-файлы
16019
+ for path in metrics_paths:
16020
+ if path and os.path.isfile(path):
16021
+ basename = os.path.basename(path)
16022
+ with open(path, newline='', encoding='utf-8') as csvfile:
16023
+ reader = csv.reader(csvfile)
16024
+ rows = list(reader)
16025
+ logger.info(f"Найден файл '{basename}', строк = {len(rows)}.")
16026
+ tables.append({'name': basename, 'rows': rows})
16027
+ else:
16028
+ logger.warning(f"Файл не найден или не существует: {path}")
16040
16029
 
16041
- # 4) Переименовываем стандартный лист «Лист1»/«Sheet1» PROJECT_USERNAME
16042
- spreadsheet = sheets_service.spreadsheets().get(spreadsheetId=dataroom_folder_id).execute()
16043
- sheet_id_to_rename = None
16044
- for sheet in spreadsheet.get('sheets', []):
16045
- props = sheet.get('properties', {})
16046
- title = props.get('title', '')
16047
- if title in ['Лист1', 'Sheet1']:
16048
- sheet_id_to_rename = props.get('sheetId')
16049
- break
16030
+ # 2) Если ни одного CSV не обнаружено, выходим
16031
+ if not tables:
16032
+ logger.warning("Ни один CSV-файл не найден. Прерываем запись.")
16033
+ else:
16034
+ # 3) Авторизация в Google Sheets
16035
+ scopes = r_conf('scopes', CONF_P)
16036
+ credential_path = os.path.join(EXTRA_D, (r_conf('credential_file', CONF_P))[0])
16037
+ credentials = ServiceAccountCredentials.from_json_keyfile_name(credential_path, scopes)
16038
+ http_auth = credentials.authorize(httplib2.Http())
16039
+ sheets_service = build('sheets', 'v4', http=http_auth, cache_discovery=False)
16040
+
16041
+ # 4) Переименовываем стандартный лист «Лист1»/«Sheet1» → PROJECT_USERNAME
16042
+ spreadsheet = sheets_service.spreadsheets().get(spreadsheetId=dataroom_folder_id).execute()
16043
+ sheet_id_to_rename = None
16044
+ for sheet in spreadsheet.get('sheets', []):
16045
+ props = sheet.get('properties', {})
16046
+ title = props.get('title', '')
16047
+ if title in ['Лист1', 'Sheet1']:
16048
+ sheet_id_to_rename = props.get('sheetId')
16049
+ break
16050
16050
 
16051
- if sheet_id_to_rename is not None:
16052
- rename_request = {
16053
- 'requests': [
16054
- {
16055
- 'updateSheetProperties': {
16056
- 'properties': {
16057
- 'sheetId': sheet_id_to_rename,
16058
- 'title': PROJECT_USERNAME
16059
- },
16060
- 'fields': 'title'
16051
+ if sheet_id_to_rename is not None:
16052
+ rename_request = {
16053
+ 'requests': [
16054
+ {
16055
+ 'updateSheetProperties': {
16056
+ 'properties': {
16057
+ 'sheetId': sheet_id_to_rename,
16058
+ 'title': PROJECT_USERNAME
16059
+ },
16060
+ 'fields': 'title'
16061
+ }
16061
16062
  }
16062
- }
16063
- ]
16064
- }
16065
- sheets_service.spreadsheets().batchUpdate(
16066
- spreadsheetId=dataroom_folder_id,
16067
- body=rename_request
16068
- ).execute()
16069
- logger.info(f"Лист переименован в '{PROJECT_USERNAME}'.")
16070
- else:
16071
- logger.warning("Не найден лист 'Лист1' или 'Sheet1' для переименования.")
16072
-
16073
- # 5) Готовим запросы для записи всех таблиц одна за другой с промежутком
16074
- safe_title = PROJECT_USERNAME.replace("'", "\\'")
16075
- offset = 1 # первая строка, с которой начнём писать
16076
- data_requests = []
16077
-
16078
- for tbl in tables:
16079
- # 5.1) Заголовок: имя CSV-файла
16080
- header_range = f"'{safe_title}'!A{offset}"
16081
- data_requests.append({
16082
- 'range': header_range,
16083
- 'majorDimension': 'ROWS',
16084
- 'values': [[tbl['name']]]
16085
- })
16086
- logger.info(f"Добавлен заголовок '{tbl['name']}' → A{offset}")
16087
- offset += 1
16088
-
16089
- # 5.2) Содержимое CSV: все строки сразу под заголовком
16090
- data_range = f"'{safe_title}'!A{offset}"
16091
- data_requests.append({
16092
- 'range': data_range,
16093
- 'majorDimension': 'ROWS',
16094
- 'values': tbl['rows']
16095
- })
16096
- logger.info(f"Добавлены {len(tbl['rows'])} строк из '{tbl['name']}' → A{offset}")
16097
- offset += len(tbl['rows'])
16063
+ ]
16064
+ }
16065
+ sheets_service.spreadsheets().batchUpdate(
16066
+ spreadsheetId=dataroom_folder_id,
16067
+ body=rename_request
16068
+ ).execute()
16069
+ logger.info(f"Лист переименован в '{PROJECT_USERNAME}'.")
16070
+ else:
16071
+ logger.warning("Не найден лист 'Лист1' или 'Sheet1' для переименования.")
16072
+
16073
+ # 5) Готовим запросы для записи всех таблиц одна за другой с промежутком
16074
+ safe_title = PROJECT_USERNAME.replace("'", "\\'")
16075
+ offset = 1 # первая строка, с которой начнём писать
16076
+ data_requests = []
16077
+
16078
+ for tbl in tables:
16079
+ # 5.1) Заголовок: имя CSV-файла
16080
+ header_range = f"'{safe_title}'!A{offset}"
16081
+ data_requests.append({
16082
+ 'range': header_range,
16083
+ 'majorDimension': 'ROWS',
16084
+ 'values': [[tbl['name']]]
16085
+ })
16086
+ logger.info(f"Добавлен заголовок '{tbl['name']}' → A{offset}")
16087
+ offset += 1
16088
+
16089
+ # 5.2) Содержимое CSV: все строки сразу под заголовком
16090
+ data_range = f"'{safe_title}'!A{offset}"
16091
+ data_requests.append({
16092
+ 'range': data_range,
16093
+ 'majorDimension': 'ROWS',
16094
+ 'values': tbl['rows']
16095
+ })
16096
+ logger.info(f"Добавлены {len(tbl['rows'])} строк из '{tbl['name']}' → A{offset}")
16097
+ offset += len(tbl['rows'])
16098
16098
 
16099
- # 5.3) Оставляем минимум 2 пустые строки перед следующей таблицей
16100
- offset += 2
16099
+ # 5.3) Оставляем минимум 2 пустые строки перед следующей таблицей
16100
+ offset += 2
16101
16101
 
16102
- # 6) Выполняем единый batchUpdate для всех data_requests
16103
- write_body = {
16104
- 'valueInputOption': 'USER_ENTERED',
16105
- 'data': data_requests
16106
- }
16107
- try:
16108
- response = sheets_service.spreadsheets().values().batchUpdate(
16109
- spreadsheetId=dataroom_folder_id,
16110
- body=write_body
16111
- ).execute()
16112
- total_cells = response.get('totalUpdatedCells', 0)
16113
- logger.info(f"Успешно записано в Google Sheets: всего обновлено ячеек = {total_cells}.")
16114
- except Exception as e:
16115
- logger.error(f"Ошибка при записи всех таблиц в Google Sheets: {e}")
16102
+ # 6) Выполняем единый batchUpdate для всех data_requests
16103
+ write_body = {
16104
+ 'valueInputOption': 'USER_ENTERED',
16105
+ 'data': data_requests
16106
+ }
16107
+ try:
16108
+ response = sheets_service.spreadsheets().values().batchUpdate(
16109
+ spreadsheetId=dataroom_folder_id,
16110
+ body=write_body
16111
+ ).execute()
16112
+ total_cells = response.get('totalUpdatedCells', 0)
16113
+ logger.info(f"Успешно записано в Google Sheets: всего обновлено ячеек = {total_cells}.")
16114
+ except Exception as e:
16115
+ logger.error(f"Ошибка при записи всех таблиц в Google Sheets: {e}")
16116
16116
  except Exception as e:
16117
16117
  logger.info(log_ % str(e))
16118
16118
  await asyncio.sleep(round(random.uniform(0, 1), 2))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: yeref
3
- Version: 0.24.99
3
+ Version: 0.25.2
4
4
  Summary: desc-f
5
5
  Author: john smith
6
6
  Dynamic: author
@@ -0,0 +1,8 @@
1
+ yeref/__init__.py,sha256=Qpv3o6Xa78VdLcsSRmctGtpnYE9btpAkCekgGhgJyXM,49
2
+ yeref/l_.py,sha256=LMX_olmJwq-tgoALJCnhV_fGrL_i_43yBLkLIcEVqGo,1176743
3
+ yeref/tonweb.js,sha256=Jf6aFOQ1OIY4q7fINYz-m5LsI3seMus124M5SYYZmtE,443659
4
+ yeref/yeref.py,sha256=DfuhzfUBIlg5vweCztijcrJWXhSBGkK5ftOlxnMIFHg,1055618
5
+ yeref-0.25.2.dist-info/METADATA,sha256=k3yK15AXYWps48zpX7gFtQP6tNwRCKNs7FDfxjoLrbo,118
6
+ yeref-0.25.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
7
+ yeref-0.25.2.dist-info/top_level.txt,sha256=yCQKchWHbfV-3OuQPYRdi2loypD-nmbDJbtt3OuKKkY,6
8
+ yeref-0.25.2.dist-info/RECORD,,
@@ -1,8 +0,0 @@
1
- yeref/__init__.py,sha256=Qpv3o6Xa78VdLcsSRmctGtpnYE9btpAkCekgGhgJyXM,49
2
- yeref/l_.py,sha256=LMX_olmJwq-tgoALJCnhV_fGrL_i_43yBLkLIcEVqGo,1176743
3
- yeref/tonweb.js,sha256=Jf6aFOQ1OIY4q7fINYz-m5LsI3seMus124M5SYYZmtE,443659
4
- yeref/yeref.py,sha256=Dj2jndTfiXUJ_fB-hL4tP9ougOcVbUxXdE6HHZ-ikEw,1055246
5
- yeref-0.24.99.dist-info/METADATA,sha256=DEUgBkgS-tNtezhSF4aD_Rh59oyMn13Mbtql4JbRvvQ,119
6
- yeref-0.24.99.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
7
- yeref-0.24.99.dist-info/top_level.txt,sha256=yCQKchWHbfV-3OuQPYRdi2loypD-nmbDJbtt3OuKKkY,6
8
- yeref-0.24.99.dist-info/RECORD,,