yeref 0.24.78__tar.gz → 0.24.80__tar.gz

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: yeref
3
- Version: 0.24.78
3
+ Version: 0.24.80
4
4
  Summary: desc-f
5
5
  Author: john smith
6
6
  Dynamic: author
@@ -2,7 +2,7 @@ from setuptools import setup
2
2
 
3
3
  setup(
4
4
  name='yeref',
5
- version='0.24.78',
5
+ version='0.24.80',
6
6
  description='desc-f',
7
7
  author='john smith',
8
8
  packages=['yeref'],
@@ -16496,43 +16496,49 @@ async def return_retention_metrics(bot, PROJECT_USERNAME, EXTRA_D, BASE_P):
16496
16496
  if not cohort_months:
16497
16497
  return
16498
16498
 
16499
- # вычисляем максимальный offset (M-1)
16500
- max_offset = 0
16501
- for c in cohort_months:
16502
- if rev_by_cohort[c]:
16503
- max_offset = max(max_offset, max(rev_by_cohort[c].keys()))
16499
+ # Функция прибавления месяцев
16500
+ def add_months(mo_str, n):
16501
+ y, m = map(int, mo_str.split("-"))
16502
+ total = m + n
16503
+ new_y = y + (total - 1) // 12
16504
+ new_m = (total - 1) % 12 + 1
16505
+ return f"{new_y:04d}-{new_m:02d}"
16506
+
16507
+ num_cohorts = len(cohort_months)
16508
+ first_cohort = cohort_months[0]
16504
16509
 
16505
16510
  path = os.path.join(EXTRA_D, "4_retention_metrics.csv")
16506
16511
  with open(path, "w", newline="", encoding="utf-8") as f:
16507
16512
  writer = csv.writer(f)
16508
-
16509
- # заголовок
16510
16513
  header = ["Месяц/Когорта"] + [
16511
- f"{c} ({len(cohort_users[c])})"
16512
- for c in cohort_months
16514
+ f"{c} ({len(cohort_users[c])})" for c in cohort_months
16513
16515
  ] + ["∑"]
16514
16516
  writer.writerow(header)
16515
16517
 
16516
- # строки M1..M{max_offset+1} по offset
16517
- for i in range(max_offset + 1):
16518
+ for i in range(num_cohorts):
16519
+ calendar_mo = add_months(first_cohort, i)
16518
16520
  row = [f"M{i+1}"]
16519
16521
  row_sum = 0.0
16520
16522
  for c in cohort_months:
16521
- rev = rev_by_cohort[c].get(i, 0.0)
16522
- if rev > 0:
16523
- cell = f"{rev:.1f}"
16524
- row.append(cell)
16525
- row_sum += rev
16526
- else:
16523
+ y0, m0 = map(int, c.split("-"))
16524
+ y1, m1 = map(int, calendar_mo.split("-"))
16525
+ offset = (y1 - y0) * 12 + (m1 - m0)
16526
+ if offset < 0:
16527
16527
  row.append("")
16528
+ else:
16529
+ rev = rev_by_cohort[c].get(offset, 0.0)
16530
+ if rev > 0:
16531
+ cell = f"{rev:.1f}"
16532
+ row.append(cell)
16533
+ row_sum += rev
16534
+ else:
16535
+ row.append("0.0")
16528
16536
  row.append(f"{row_sum:.1f}")
16529
16537
  writer.writerow(row)
16530
16538
 
16531
- # вычисляем средний NRR-множитель (геометрическое среднее факторов роста)
16532
- import math
16533
16539
  factors = []
16534
16540
  for c in cohort_months:
16535
- for i in range(1, max_offset + 1):
16541
+ for i in range(1, num_cohorts):
16536
16542
  prev_rev = rev_by_cohort[c].get(i - 1, 0.0)
16537
16543
  curr_rev = rev_by_cohort[c].get(i, 0.0)
16538
16544
  if prev_rev > 0 and curr_rev > 0:
@@ -16548,6 +16554,7 @@ async def return_retention_metrics(bot, PROJECT_USERNAME, EXTRA_D, BASE_P):
16548
16554
  logger.info(log_ % str(e))
16549
16555
  await asyncio.sleep(round(random.uniform(0, 1), 2))
16550
16556
 
16557
+
16551
16558
  # endregion
16552
16559
 
16553
16560
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: yeref
3
- Version: 0.24.78
3
+ Version: 0.24.80
4
4
  Summary: desc-f
5
5
  Author: john smith
6
6
  Dynamic: author
File without changes
File without changes
File without changes
File without changes
File without changes