amochka 0.1.8__py3-none-any.whl → 0.1.9__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.
@@ -0,0 +1,124 @@
1
+ Metadata-Version: 2.4
2
+ Name: amochka
3
+ Version: 0.1.9
4
+ Summary: Python library for working with amoCRM API
5
+ Author-email: Timur <timurdt@gmail.com>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/yourusername/amochka
8
+ Project-URL: Documentation, https://github.com/yourusername/amochka
9
+ Project-URL: Repository, https://github.com/yourusername/amochka
10
+ Project-URL: Bug Tracker, https://github.com/yourusername/amochka/issues
11
+ Keywords: amocrm,crm,api,client,automation
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.6
18
+ Classifier: Programming Language :: Python :: 3.7
19
+ Classifier: Programming Language :: Python :: 3.8
20
+ Classifier: Programming Language :: Python :: 3.9
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
24
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
25
+ Classifier: Topic :: Internet :: WWW/HTTP
26
+ Requires-Python: >=3.6
27
+ Description-Content-Type: text/markdown
28
+ Requires-Dist: requests>=2.25.0
29
+ Requires-Dist: ratelimit>=2.2.0
30
+
31
+ # amochka
32
+
33
+ Официальная документация API amocrm - https://www.amocrm.ru/developers/content/crm_platform/api-reference
34
+
35
+ **amochka** — библиотека для работы с API amoCRM на Python. Она поддерживает:
36
+ - Получение данных сделок с вложенными сущностями (контакты, компании, теги, и т.д.)
37
+ - Редактирование сделок, включая обновление стандартных и кастомных полей
38
+ - Поддержку нескольких amoCRM-аккаунтов с персистентным кэшированием кастомных полей для каждого аккаунта отдельно
39
+ - Ограничение запросов (7 запросов в секунду) с использованием декораторов из библиотеки `ratelimit`
40
+
41
+ ### Основные функции
42
+
43
+ - `get_deal_by_id(deal_id)` — получение детальной информации по сделке
44
+ - `get_pipelines()` — список воронок и статусов
45
+ - `fetch_updated_leads_raw(pipeline_id, updated_from, ...)` — выгрузка необработанных сделок за период
46
+
47
+ ## Требования к окружению
48
+
49
+ Python 3.8 или новее. Потребуются пакеты `requests` и `ratelimit`.
50
+
51
+ ## Установка
52
+
53
+ Установите зависимости командой:
54
+
55
+ ```bash
56
+ pip install requests ratelimit
57
+ ```
58
+
59
+ Затем скопируйте репозиторий или установите пакет из PyPI (после публикации):
60
+
61
+ ```bash
62
+ pip install amochka
63
+ ```
64
+
65
+ ## Кэширование кастомных полей
66
+
67
+ Для уменьшения количества запросов к API кастомные поля кэшируются персистентно. Если параметр cache_file не указан, имя файла кэша генерируется автоматически на основе домена amoCRM-аккаунта. Вы можете обновлять кэш принудительно, передавая параметр force_update=True в метод get_custom_fields_mapping() или настроить время жизни кэша (по умолчанию — 24 часа).
68
+
69
+ ## Выгрузка обновленных сделок
70
+
71
+ Метод `fetch_updated_leads_raw()` позволяет получить все сделки из указанной воронки, которые были изменены в заданный промежуток времени. Результат можно сохранить в JSON-файл без какой‑либо обработки:
72
+
73
+ ```python
74
+ from datetime import datetime, timedelta
75
+ from amochka import AmoCRMClient, CacheConfig
76
+
77
+ client = AmoCRMClient(
78
+ base_url="https://bneginskogo.amocrm.ru",
79
+ token_file="/path/to/token.json",
80
+ cache_config=CacheConfig.disabled(),
81
+ disable_logging=True
82
+ )
83
+
84
+ three_hours_ago = datetime.utcnow() - timedelta(hours=3)
85
+ client.fetch_updated_leads_raw(6241334, updated_from=three_hours_ago, save_to_file="leads.json")
86
+ ```
87
+
88
+ Пример получаемого JSON (укороченный):
89
+
90
+ ```json
91
+ [
92
+ {
93
+ "id": 26282337,
94
+ "name": "Автосделка: Заявка от (Максим Брокер Дубай Бюро Негинского)",
95
+ "custom_fields_values": [
96
+ {
97
+ "field_name": "roistat",
98
+ "values": [{"value": "2026"}]
99
+ }
100
+ ],
101
+ "_embedded": {
102
+ "tags": [
103
+ {"id": 179813, "name": "WZ (Федор 971568113315)"}
104
+ ]
105
+ }
106
+ }
107
+ ]
108
+ ```
109
+
110
+ Для подключения к реальному аккаунту сохраните JSON с OAuth‑токеном и укажите его путь в параметре `token_file` при создании клиента. Базовый URL можно взять из переменной окружения `AMO_BASE_URL`.
111
+
112
+ ## Тесты
113
+
114
+ Файл `tests/test_client.py` содержит небольшой набор автоматических тестов, написанных на [pytest](https://docs.pytest.org/). Они запускают методы клиента на подставном классе `DummyClient` и проверяют, что функции работают так, как ожидается. Запустить тесты можно командой:
115
+
116
+ ```bash
117
+ pytest -q
118
+ ```
119
+
120
+ Эти тесты помогают убедиться, что изменения в коде не ломают основную функциональность.
121
+
122
+ ## Пример использования `fetch_updated_leads_raw`
123
+
124
+ Кроме примера в разделе выше, код из `example_fetch.py` демонстрирует полный процесс получения сделок и сохранения их в файл.
@@ -0,0 +1,4 @@
1
+ amochka-0.1.9.dist-info/METADATA,sha256=wNT6FZm6LKVPEhwjBtBWFTnPIZfx1IKTFYyNIy-AOgM,6271
2
+ amochka-0.1.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
3
+ amochka-0.1.9.dist-info/top_level.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
4
+ amochka-0.1.9.dist-info/RECORD,,
@@ -0,0 +1 @@
1
+
amochka/__init__.py DELETED
@@ -1,28 +0,0 @@
1
- """
2
- amochka: Библиотека для работы с API amoCRM.
3
- """
4
-
5
- __version__ = "0.1.8"
6
-
7
- from .client import AmoCRMClient, CacheConfig
8
- from .etl import (
9
- write_ndjson,
10
- export_leads_to_ndjson,
11
- export_contacts_to_ndjson,
12
- export_notes_to_ndjson,
13
- export_events_to_ndjson,
14
- export_users_to_ndjson,
15
- export_pipelines_to_ndjson,
16
- )
17
-
18
- __all__ = [
19
- "AmoCRMClient",
20
- "CacheConfig",
21
- "write_ndjson",
22
- "export_leads_to_ndjson",
23
- "export_contacts_to_ndjson",
24
- "export_notes_to_ndjson",
25
- "export_events_to_ndjson",
26
- "export_users_to_ndjson",
27
- "export_pipelines_to_ndjson",
28
- ]