lago-python-client 1.31.0__tar.gz → 1.32.0__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.
Files changed (147) hide show
  1. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/PKG-INFO +14 -6
  2. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/README.md +11 -5
  3. lago_python_client-1.32.0/lago_python_client/api_logs/clients.py +18 -0
  4. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/client.py +5 -0
  5. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/__init__.py +1 -0
  6. lago_python_client-1.32.0/lago_python_client/models/api_log.py +33 -0
  7. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/charge.py +6 -0
  8. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/customer_usage.py +9 -0
  9. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/fee.py +12 -0
  10. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/subscription.py +2 -0
  11. lago_python_client-1.32.0/lago_python_client/version.py +1 -0
  12. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client.egg-info/PKG-INFO +14 -6
  13. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client.egg-info/SOURCES.txt +8 -0
  14. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client.egg-info/requires.txt +3 -0
  15. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/setup.cfg +2 -0
  16. lago_python_client-1.32.0/tests/__init__.py +0 -0
  17. lago_python_client-1.32.0/tests/test_api_logs_client.py +100 -0
  18. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_subscription_client.py +22 -0
  19. lago_python_client-1.31.0/lago_python_client/version.py +0 -1
  20. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/LICENSE +0 -0
  21. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/__init__.py +0 -0
  22. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/activity_logs/__init__.py +0 -0
  23. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/activity_logs/clients.py +0 -0
  24. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/add_ons/__init__.py +0 -0
  25. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/add_ons/clients.py +0 -0
  26. {lago_python_client-1.31.0/lago_python_client/billable_metrics → lago_python_client-1.32.0/lago_python_client/api_logs}/__init__.py +0 -0
  27. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/base_client.py +0 -0
  28. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/base_model.py +0 -0
  29. {lago_python_client-1.31.0/lago_python_client/billing_entities → lago_python_client-1.32.0/lago_python_client/billable_metrics}/__init__.py +0 -0
  30. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/billable_metrics/clients.py +0 -0
  31. {lago_python_client-1.31.0/lago_python_client/coupons → lago_python_client-1.32.0/lago_python_client/billing_entities}/__init__.py +0 -0
  32. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/billing_entities/clients.py +0 -0
  33. {lago_python_client-1.31.0/lago_python_client/credit_notes → lago_python_client-1.32.0/lago_python_client/coupons}/__init__.py +0 -0
  34. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/coupons/clients.py +0 -0
  35. {lago_python_client-1.31.0/lago_python_client/customers → lago_python_client-1.32.0/lago_python_client/credit_notes}/__init__.py +0 -0
  36. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/credit_notes/clients.py +0 -0
  37. {lago_python_client-1.31.0/lago_python_client/events → lago_python_client-1.32.0/lago_python_client/customers}/__init__.py +0 -0
  38. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/customers/clients.py +0 -0
  39. {lago_python_client-1.31.0/lago_python_client/fees → lago_python_client-1.32.0/lago_python_client/events}/__init__.py +0 -0
  40. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/events/clients.py +0 -0
  41. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/exceptions.py +0 -0
  42. {lago_python_client-1.31.0/lago_python_client/gross_revenues → lago_python_client-1.32.0/lago_python_client/fees}/__init__.py +0 -0
  43. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/fees/clients.py +0 -0
  44. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/functools_ext.py +0 -0
  45. {lago_python_client-1.31.0/lago_python_client/invoice_collections → lago_python_client-1.32.0/lago_python_client/gross_revenues}/__init__.py +0 -0
  46. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/gross_revenues/clients.py +0 -0
  47. {lago_python_client-1.31.0/lago_python_client/invoiced_usages → lago_python_client-1.32.0/lago_python_client/invoice_collections}/__init__.py +0 -0
  48. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/invoice_collections/clients.py +0 -0
  49. {lago_python_client-1.31.0/lago_python_client/invoices → lago_python_client-1.32.0/lago_python_client/invoiced_usages}/__init__.py +0 -0
  50. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/invoiced_usages/clients.py +0 -0
  51. {lago_python_client-1.31.0/lago_python_client/mrrs → lago_python_client-1.32.0/lago_python_client/invoices}/__init__.py +0 -0
  52. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/invoices/clients.py +0 -0
  53. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/mixins.py +0 -0
  54. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/activity_log.py +0 -0
  55. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/add_on.py +0 -0
  56. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/applied_coupon.py +0 -0
  57. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/billable_metric.py +0 -0
  58. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/billing_entity.py +0 -0
  59. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/billing_period.py +0 -0
  60. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/coupon.py +0 -0
  61. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/credit.py +0 -0
  62. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/credit_note.py +0 -0
  63. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/customer.py +0 -0
  64. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/error_detail.py +0 -0
  65. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/event.py +0 -0
  66. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/gross_revenue.py +0 -0
  67. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/invoice.py +0 -0
  68. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/invoice_collection.py +0 -0
  69. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/invoice_item.py +0 -0
  70. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/invoiced_usage.py +0 -0
  71. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/lifetime_usage.py +0 -0
  72. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/minimum_commitment.py +0 -0
  73. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/mrr.py +0 -0
  74. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/organization.py +0 -0
  75. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/overdue_balance.py +0 -0
  76. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/payment.py +0 -0
  77. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/payment_receipt.py +0 -0
  78. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/payment_request.py +0 -0
  79. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/plan.py +0 -0
  80. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/tax.py +0 -0
  81. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/usage_threshold.py +0 -0
  82. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/wallet.py +0 -0
  83. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/wallet_transaction.py +0 -0
  84. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/models/webhook_endpoint.py +0 -0
  85. {lago_python_client-1.31.0/lago_python_client/organizations → lago_python_client-1.32.0/lago_python_client/mrrs}/__init__.py +0 -0
  86. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/mrrs/clients.py +0 -0
  87. {lago_python_client-1.31.0/lago_python_client/overdue_balances → lago_python_client-1.32.0/lago_python_client/organizations}/__init__.py +0 -0
  88. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/organizations/clients.py +0 -0
  89. {lago_python_client-1.31.0/lago_python_client/payment_receipts → lago_python_client-1.32.0/lago_python_client/overdue_balances}/__init__.py +0 -0
  90. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/overdue_balances/clients.py +0 -0
  91. {lago_python_client-1.31.0/lago_python_client/payment_requests → lago_python_client-1.32.0/lago_python_client/payment_receipts}/__init__.py +0 -0
  92. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/payment_receipts/clients.py +0 -0
  93. {lago_python_client-1.31.0/lago_python_client/payments → lago_python_client-1.32.0/lago_python_client/payment_requests}/__init__.py +0 -0
  94. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/payment_requests/clients.py +0 -0
  95. {lago_python_client-1.31.0/lago_python_client/plans → lago_python_client-1.32.0/lago_python_client/payments}/__init__.py +0 -0
  96. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/payments/clients.py +0 -0
  97. {lago_python_client-1.31.0/lago_python_client/services → lago_python_client-1.32.0/lago_python_client/plans}/__init__.py +0 -0
  98. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/plans/clients.py +0 -0
  99. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/py.typed +0 -0
  100. {lago_python_client-1.31.0/lago_python_client/subscriptions → lago_python_client-1.32.0/lago_python_client/services}/__init__.py +0 -0
  101. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/services/json.py +0 -0
  102. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/services/request.py +0 -0
  103. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/services/response.py +0 -0
  104. {lago_python_client-1.31.0/lago_python_client/taxes → lago_python_client-1.32.0/lago_python_client/subscriptions}/__init__.py +0 -0
  105. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/subscriptions/clients.py +0 -0
  106. {lago_python_client-1.31.0/lago_python_client/wallets → lago_python_client-1.32.0/lago_python_client/taxes}/__init__.py +0 -0
  107. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/taxes/clients.py +0 -0
  108. {lago_python_client-1.31.0/lago_python_client/webhook_endpoints → lago_python_client-1.32.0/lago_python_client/wallets}/__init__.py +0 -0
  109. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/wallets/clients.py +0 -0
  110. {lago_python_client-1.31.0/lago_python_client/webhooks → lago_python_client-1.32.0/lago_python_client/webhook_endpoints}/__init__.py +0 -0
  111. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/webhook_endpoints/clients.py +0 -0
  112. {lago_python_client-1.31.0/tests → lago_python_client-1.32.0/lago_python_client/webhooks}/__init__.py +0 -0
  113. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client/webhooks/clients.py +0 -0
  114. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client.egg-info/dependency_links.txt +0 -0
  115. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/lago_python_client.egg-info/top_level.txt +0 -0
  116. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/pyproject.toml +0 -0
  117. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_activity_logs_client.py +0 -0
  118. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_add_on_client.py +0 -0
  119. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_applied_coupon_client.py +0 -0
  120. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_billable_metric_client.py +0 -0
  121. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_billing_entity_client.py +0 -0
  122. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_client.py +0 -0
  123. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_coupon_client.py +0 -0
  124. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_credit_note_client.py +0 -0
  125. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_customer_client.py +0 -0
  126. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_event_client.py +0 -0
  127. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_fee_client.py +0 -0
  128. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_functools_ext.py +0 -0
  129. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_gross_revenue_client.py +0 -0
  130. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_invoice_client.py +0 -0
  131. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_invoice_collection_client.py +0 -0
  132. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_invoiced_usage_client.py +0 -0
  133. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_json_services.py +0 -0
  134. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_mrr_client.py +0 -0
  135. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_organization_client.py +0 -0
  136. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_overdue_balance_client.py +0 -0
  137. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_payment_client.py +0 -0
  138. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_payment_receipt_client.py +0 -0
  139. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_payment_request_client.py +0 -0
  140. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_plan_client.py +0 -0
  141. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_request_services.py +0 -0
  142. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_response_services.py +0 -0
  143. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_tax_client.py +0 -0
  144. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_wallet_client.py +0 -0
  145. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_wallet_transaction_client.py +0 -0
  146. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_webhook_client.py +0 -0
  147. {lago_python_client-1.31.0 → lago_python_client-1.32.0}/tests/test_webhook_endpoint_client.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lago-python-client
3
- Version: 1.31.0
3
+ Version: 1.32.0
4
4
  Summary: Lago Python API Client
5
5
  Home-page: https://github.com/getlago/lago-python-client
6
6
  Author: Lovro Colic
@@ -29,6 +29,8 @@ Provides-Extra: test
29
29
  Requires-Dist: mypy==0.971; extra == "test"
30
30
  Requires-Dist: pytest; extra == "test"
31
31
  Requires-Dist: pytest_httpx; extra == "test"
32
+ Provides-Extra: lint
33
+ Requires-Dist: ruff; extra == "lint"
32
34
  Dynamic: license-file
33
35
 
34
36
  # Lago Python Client
@@ -40,10 +42,10 @@ This is a python wrapper for Lago API
40
42
 
41
43
  ## Current Releases
42
44
 
43
- | Project | Release Badge |
44
- |--------------------|-----------------------------------------------------------------------------------------------------|
45
- | **Lago** | [![Lago Release](https://img.shields.io/github/v/release/getlago/lago)](https://github.com/getlago/lago/releases) |
46
- | **Lago Python Client** | [![Lago Python Client Release](https://img.shields.io/github/v/release/getlago/lago-python-client)](https://github.com/getlago/lago-python-client/releases) |
45
+ | Project | Release Badge |
46
+ | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
47
+ | **Lago** | [![Lago Release](https://img.shields.io/github/v/release/getlago/lago)](https://github.com/getlago/lago/releases) |
48
+ | **Lago Python Client** | [![Lago Python Client Release](https://img.shields.io/github/v/release/getlago/lago-python-client)](https://github.com/getlago/lago-python-client/releases) |
47
49
 
48
50
  ## Installation
49
51
 
@@ -65,7 +67,7 @@ Check the [lago API reference](https://doc.getlago.com/docs/api/intro)
65
67
 
66
68
  ```bash
67
69
  python -m pip install --upgrade pip setuptools wheel
68
- python -m pip install '.[test]'
70
+ python -m pip install '.[test,lint]'
69
71
  ```
70
72
 
71
73
  ### Run tests
@@ -74,6 +76,12 @@ python -m pip install '.[test]'
74
76
  pytest
75
77
  ```
76
78
 
79
+ ### Lint
80
+
81
+ ```bash
82
+ ruff format
83
+ ```
84
+
77
85
  ## Documentation
78
86
 
79
87
  The Lago documentation is available at [doc.getlago.com](https://doc.getlago.com/docs/api/intro).
@@ -7,10 +7,10 @@ This is a python wrapper for Lago API
7
7
 
8
8
  ## Current Releases
9
9
 
10
- | Project | Release Badge |
11
- |--------------------|-----------------------------------------------------------------------------------------------------|
12
- | **Lago** | [![Lago Release](https://img.shields.io/github/v/release/getlago/lago)](https://github.com/getlago/lago/releases) |
13
- | **Lago Python Client** | [![Lago Python Client Release](https://img.shields.io/github/v/release/getlago/lago-python-client)](https://github.com/getlago/lago-python-client/releases) |
10
+ | Project | Release Badge |
11
+ | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
12
+ | **Lago** | [![Lago Release](https://img.shields.io/github/v/release/getlago/lago)](https://github.com/getlago/lago/releases) |
13
+ | **Lago Python Client** | [![Lago Python Client Release](https://img.shields.io/github/v/release/getlago/lago-python-client)](https://github.com/getlago/lago-python-client/releases) |
14
14
 
15
15
  ## Installation
16
16
 
@@ -32,7 +32,7 @@ Check the [lago API reference](https://doc.getlago.com/docs/api/intro)
32
32
 
33
33
  ```bash
34
34
  python -m pip install --upgrade pip setuptools wheel
35
- python -m pip install '.[test]'
35
+ python -m pip install '.[test,lint]'
36
36
  ```
37
37
 
38
38
  ### Run tests
@@ -41,6 +41,12 @@ python -m pip install '.[test]'
41
41
  pytest
42
42
  ```
43
43
 
44
+ ### Lint
45
+
46
+ ```bash
47
+ ruff format
48
+ ```
49
+
44
50
  ## Documentation
45
51
 
46
52
  The Lago documentation is available at [doc.getlago.com](https://doc.getlago.com/docs/api/intro).
@@ -0,0 +1,18 @@
1
+ from typing import ClassVar, Type
2
+
3
+ from ..base_client import BaseClient
4
+ from ..mixins import (
5
+ FindAllCommandMixin,
6
+ FindCommandMixin,
7
+ )
8
+ from ..models.api_log import ApiLogResponse
9
+
10
+
11
+ class ApiLogClient(
12
+ FindAllCommandMixin[ApiLogResponse],
13
+ FindCommandMixin[ApiLogResponse],
14
+ BaseClient,
15
+ ):
16
+ API_RESOURCE: ClassVar[str] = "api_logs"
17
+ RESPONSE_MODEL: ClassVar[Type[ApiLogResponse]] = ApiLogResponse
18
+ ROOT_NAME: ClassVar[str] = "api_log"
@@ -26,6 +26,7 @@ from .wallets.clients import WalletClient, WalletTransactionClient
26
26
  from .webhooks.clients import WebhookClient
27
27
  from .webhook_endpoints.clients import WebhookEndpointClient
28
28
  from .activity_logs.clients import ActivityLogClient
29
+ from .api_logs.clients import ApiLogClient
29
30
 
30
31
  try:
31
32
  from typing import Final
@@ -169,3 +170,7 @@ class Client:
169
170
  @callable_cached_property
170
171
  def activity_logs(self) -> ActivityLogClient:
171
172
  return ActivityLogClient(self.base_api_url, self.api_key)
173
+
174
+ @callable_cached_property
175
+ def api_logs(self) -> ApiLogClient:
176
+ return ApiLogClient(self.base_api_url, self.api_key)
@@ -1,4 +1,5 @@
1
1
  from .activity_log import ActivityLog as ActivityLog, ActivityLogResponse as ActivityLogResponse
2
+ from .api_log import ApiLog as ApiLog, ApiLogResponse as ApiLogResponse
2
3
  from .applied_coupon import AppliedCoupon as AppliedCoupon
3
4
  from .billable_metric import (
4
5
  BillableMetric as BillableMetric,
@@ -0,0 +1,33 @@
1
+ from typing import Optional
2
+
3
+ from lago_python_client.base_model import BaseModel
4
+
5
+ from ..base_model import BaseResponseModel
6
+
7
+
8
+ class ApiLog(BaseModel):
9
+ api_version: str
10
+ client: str
11
+ http_method: str
12
+ http_status: int
13
+ request_body: dict
14
+ logged_at: str
15
+ request_origin: str
16
+ created_at: str
17
+ request_path: str
18
+ request_response: Optional[dict]
19
+ request_id: str
20
+
21
+
22
+ class ApiLogResponse(BaseResponseModel):
23
+ request_id: str
24
+ client: str
25
+ http_method: str
26
+ http_status: int
27
+ request_origin: str
28
+ request_path: str
29
+ request_body: dict
30
+ request_response: Optional[dict]
31
+ api_version: str
32
+ logged_at: str
33
+ created_at: str
@@ -12,6 +12,11 @@ class ChargeFilter(BaseModel):
12
12
  values: Optional[Dict[str, List[str]]]
13
13
 
14
14
 
15
+ class AppliedPricingUnit(BaseModel):
16
+ code: Optional[str]
17
+ conversion_rate: Optional[float]
18
+
19
+
15
20
  class ChargeFilters(BaseModel):
16
21
  __root__: List[ChargeFilter]
17
22
 
@@ -29,6 +34,7 @@ class Charge(BaseModel):
29
34
  properties: Optional[Dict[str, Any]]
30
35
  filters: Optional[ChargeFilters]
31
36
  tax_codes: Optional[List[str]]
37
+ applied_pricing_unit: Optional[AppliedPricingUnit]
32
38
 
33
39
 
34
40
  class Charges(BaseModel):
@@ -12,12 +12,19 @@ class Metric(BaseModel):
12
12
  aggregation_type: str
13
13
 
14
14
 
15
+ class PricingUnitDetails(BaseModel):
16
+ amount_cents: int
17
+ short_name: str
18
+ conversion_rate: float
19
+
20
+
15
21
  class ChargeFilterUsage(BaseModel):
16
22
  invoice_display_name: Optional[str]
17
23
  values: Dict[str, List[str]]
18
24
  units: str
19
25
  amount_cents: int
20
26
  events_count: int
27
+ pricing_unit_details: Optional[PricingUnitDetails]
21
28
 
22
29
 
23
30
  class ChargeObject(BaseModel):
@@ -32,6 +39,7 @@ class GroupedUsage(BaseModel):
32
39
  units: float
33
40
  grouped_by: Dict[str, str]
34
41
  filters: List[ChargeFilterUsage]
42
+ pricing_unit_details: Optional[PricingUnitDetails]
35
43
 
36
44
 
37
45
  class ChargeUsage(BaseModel):
@@ -43,6 +51,7 @@ class ChargeUsage(BaseModel):
43
51
  billable_metric: Metric
44
52
  filters: List[ChargeFilterUsage]
45
53
  grouped_usage: Optional[List[GroupedUsage]]
54
+ pricing_unit_details: Optional[PricingUnitDetails]
46
55
 
47
56
 
48
57
  class CustomerUsageResponse(BaseResponseModel):
@@ -26,6 +26,17 @@ class FeeAppliedTaxes(BaseResponseModel):
26
26
  __root__: List[FeeAppliedTax]
27
27
 
28
28
 
29
+ class PricingUnitDetails(BaseResponseModel):
30
+ lago_pricing_unit_id: Optional[str]
31
+ pricing_unit_code: Optional[str]
32
+ short_name: Optional[str]
33
+ amount_cents: Optional[int]
34
+ precise_amount_cents: Optional[str]
35
+ unit_amount_cents: Optional[int]
36
+ precise_unit_amount: Optional[str]
37
+ conversion_rate: Optional[float]
38
+
39
+
29
40
  class FeeResponse(BaseResponseModel):
30
41
  lago_id: Optional[str]
31
42
  lago_charge_id: Optional[str]
@@ -59,6 +70,7 @@ class FeeResponse(BaseResponseModel):
59
70
  from_date: Optional[str]
60
71
  to_date: Optional[str]
61
72
  amount_details: Optional[Dict[str, Any]]
73
+ pricing_unit_details: Optional[PricingUnitDetails]
62
74
  billing_entity_code: Optional[str]
63
75
 
64
76
  item: Optional[InvoiceItemResponse]
@@ -44,6 +44,8 @@ class SubscriptionResponse(BaseResponseModel):
44
44
  downgrade_plan_date: Optional[str]
45
45
  current_billing_period_started_at: Optional[str]
46
46
  current_billing_period_ending_at: Optional[str]
47
+ on_termination_credit_note: Optional[str]
48
+ on_termination_invoice: Optional[str]
47
49
 
48
50
 
49
51
  class SubscriptionsResponse(BaseResponseModel):
@@ -0,0 +1 @@
1
+ LAGO_VERSION = "1.32.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lago-python-client
3
- Version: 1.31.0
3
+ Version: 1.32.0
4
4
  Summary: Lago Python API Client
5
5
  Home-page: https://github.com/getlago/lago-python-client
6
6
  Author: Lovro Colic
@@ -29,6 +29,8 @@ Provides-Extra: test
29
29
  Requires-Dist: mypy==0.971; extra == "test"
30
30
  Requires-Dist: pytest; extra == "test"
31
31
  Requires-Dist: pytest_httpx; extra == "test"
32
+ Provides-Extra: lint
33
+ Requires-Dist: ruff; extra == "lint"
32
34
  Dynamic: license-file
33
35
 
34
36
  # Lago Python Client
@@ -40,10 +42,10 @@ This is a python wrapper for Lago API
40
42
 
41
43
  ## Current Releases
42
44
 
43
- | Project | Release Badge |
44
- |--------------------|-----------------------------------------------------------------------------------------------------|
45
- | **Lago** | [![Lago Release](https://img.shields.io/github/v/release/getlago/lago)](https://github.com/getlago/lago/releases) |
46
- | **Lago Python Client** | [![Lago Python Client Release](https://img.shields.io/github/v/release/getlago/lago-python-client)](https://github.com/getlago/lago-python-client/releases) |
45
+ | Project | Release Badge |
46
+ | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
47
+ | **Lago** | [![Lago Release](https://img.shields.io/github/v/release/getlago/lago)](https://github.com/getlago/lago/releases) |
48
+ | **Lago Python Client** | [![Lago Python Client Release](https://img.shields.io/github/v/release/getlago/lago-python-client)](https://github.com/getlago/lago-python-client/releases) |
47
49
 
48
50
  ## Installation
49
51
 
@@ -65,7 +67,7 @@ Check the [lago API reference](https://doc.getlago.com/docs/api/intro)
65
67
 
66
68
  ```bash
67
69
  python -m pip install --upgrade pip setuptools wheel
68
- python -m pip install '.[test]'
70
+ python -m pip install '.[test,lint]'
69
71
  ```
70
72
 
71
73
  ### Run tests
@@ -74,6 +76,12 @@ python -m pip install '.[test]'
74
76
  pytest
75
77
  ```
76
78
 
79
+ ### Lint
80
+
81
+ ```bash
82
+ ruff format
83
+ ```
84
+
77
85
  ## Documentation
78
86
 
79
87
  The Lago documentation is available at [doc.getlago.com](https://doc.getlago.com/docs/api/intro).
@@ -15,6 +15,8 @@ setup.cfg
15
15
  ./lago_python_client/activity_logs/clients.py
16
16
  ./lago_python_client/add_ons/__init__.py
17
17
  ./lago_python_client/add_ons/clients.py
18
+ ./lago_python_client/api_logs/__init__.py
19
+ ./lago_python_client/api_logs/clients.py
18
20
  ./lago_python_client/billable_metrics/__init__.py
19
21
  ./lago_python_client/billable_metrics/clients.py
20
22
  ./lago_python_client/billing_entities/__init__.py
@@ -40,6 +42,7 @@ setup.cfg
40
42
  ./lago_python_client/models/__init__.py
41
43
  ./lago_python_client/models/activity_log.py
42
44
  ./lago_python_client/models/add_on.py
45
+ ./lago_python_client/models/api_log.py
43
46
  ./lago_python_client/models/applied_coupon.py
44
47
  ./lago_python_client/models/billable_metric.py
45
48
  ./lago_python_client/models/billing_entity.py
@@ -104,6 +107,7 @@ setup.cfg
104
107
  ./tests/__init__.py
105
108
  ./tests/test_activity_logs_client.py
106
109
  ./tests/test_add_on_client.py
110
+ ./tests/test_api_logs_client.py
107
111
  ./tests/test_applied_coupon_client.py
108
112
  ./tests/test_billable_metric_client.py
109
113
  ./tests/test_billing_entity_client.py
@@ -152,6 +156,8 @@ lago_python_client/activity_logs/__init__.py
152
156
  lago_python_client/activity_logs/clients.py
153
157
  lago_python_client/add_ons/__init__.py
154
158
  lago_python_client/add_ons/clients.py
159
+ lago_python_client/api_logs/__init__.py
160
+ lago_python_client/api_logs/clients.py
155
161
  lago_python_client/billable_metrics/__init__.py
156
162
  lago_python_client/billable_metrics/clients.py
157
163
  lago_python_client/billing_entities/__init__.py
@@ -177,6 +183,7 @@ lago_python_client/invoices/clients.py
177
183
  lago_python_client/models/__init__.py
178
184
  lago_python_client/models/activity_log.py
179
185
  lago_python_client/models/add_on.py
186
+ lago_python_client/models/api_log.py
180
187
  lago_python_client/models/applied_coupon.py
181
188
  lago_python_client/models/billable_metric.py
182
189
  lago_python_client/models/billing_entity.py
@@ -241,6 +248,7 @@ lago_python_client/webhooks/clients.py
241
248
  tests/__init__.py
242
249
  tests/test_activity_logs_client.py
243
250
  tests/test_add_on_client.py
251
+ tests/test_api_logs_client.py
244
252
  tests/test_applied_coupon_client.py
245
253
  tests/test_billable_metric_client.py
246
254
  tests/test_billing_entity_client.py
@@ -4,6 +4,9 @@ orjson~=3.8
4
4
  pydantic<3,>=1.10
5
5
  typeguard~=3.0.2
6
6
 
7
+ [lint]
8
+ ruff
9
+
7
10
  [test]
8
11
  mypy==0.971
9
12
  pytest
@@ -38,6 +38,8 @@ test =
38
38
  mypy==0.971
39
39
  pytest
40
40
  pytest_httpx
41
+ lint =
42
+ ruff
41
43
 
42
44
  [options.package_data]
43
45
  * = py.typed
File without changes
@@ -0,0 +1,100 @@
1
+ import os
2
+
3
+ import pytest
4
+ from pytest_httpx import HTTPXMock
5
+
6
+ from urllib.parse import urlencode
7
+
8
+ from lago_python_client.client import Client
9
+ from lago_python_client.exceptions import LagoApiError
10
+
11
+ ENDPOINT = "https://api.getlago.com/api/v1/api_logs"
12
+
13
+
14
+ def mock_response(fixture_path):
15
+ this_dir = os.path.dirname(os.path.abspath(__file__))
16
+ data_path = os.path.join(this_dir, fixture_path)
17
+
18
+ with open(data_path, "rb") as response:
19
+ return response.read()
20
+
21
+
22
+ def test_valid_find_api_log_request(httpx_mock: HTTPXMock):
23
+ client = Client(api_key="886fe239-927d-4072-ab72-6dd345e8dd0d")
24
+ request_id = "8fae2f0e-fe8e-44d3-bbf7-1c552eba3a24"
25
+
26
+ httpx_mock.add_response(
27
+ method="GET",
28
+ url=ENDPOINT + f"/{request_id}",
29
+ content=mock_response("fixtures/api_log.json"),
30
+ )
31
+ response = client.api_logs.find(request_id)
32
+
33
+ assert response.request_id == request_id
34
+ assert response.client == "LagoClient.0.0.0"
35
+
36
+
37
+ def test_invalid_find_api_log_request(httpx_mock: HTTPXMock):
38
+ client = Client(api_key="invalid")
39
+ request_id = "invalid"
40
+
41
+ httpx_mock.add_response(
42
+ method="GET",
43
+ url=ENDPOINT + f"/{request_id}",
44
+ status_code=404,
45
+ content=b"",
46
+ )
47
+
48
+ with pytest.raises(LagoApiError):
49
+ client.api_logs.find(request_id)
50
+
51
+
52
+ def test_valid_find_all_api_log_request(httpx_mock: HTTPXMock):
53
+ client = Client(api_key="886fe239-927d-4072-ab72-6dd345e8dd0d")
54
+
55
+ httpx_mock.add_response(
56
+ method="GET",
57
+ url=ENDPOINT,
58
+ content=mock_response("fixtures/api_log_index.json"),
59
+ )
60
+ response = client.api_logs.find_all()
61
+
62
+ assert response["api_logs"][0].request_id == "8fae2f0e-fe8e-44d3-bbf7-1c552eba3a24"
63
+ assert response["api_logs"][1].request_id == "65ec835e-43f4-40ad-a4bd-da663349d583"
64
+ assert response["meta"]["current_page"] == 1
65
+
66
+
67
+ def test_valid_find_all_api_log_request_with_options(httpx_mock: HTTPXMock):
68
+ client = Client(api_key="886fe239-927d-4072-ab72-6dd345e8dd0d")
69
+ options = {"per_page": 1, "page": 1}
70
+
71
+ httpx_mock.add_response(
72
+ method="GET",
73
+ url=ENDPOINT + f"?{urlencode(options)}",
74
+ content=mock_response("fixtures/api_log_index.json"),
75
+ )
76
+ response = client.api_logs.find_all(options)
77
+
78
+ assert response["api_logs"][1].request_id == "65ec835e-43f4-40ad-a4bd-da663349d583"
79
+ assert response["meta"]["current_page"] == 1
80
+
81
+
82
+ def test_invalid_find_all_api_log_request(httpx_mock: HTTPXMock):
83
+ client = Client(api_key="invalid")
84
+
85
+ httpx_mock.add_response(
86
+ method="GET",
87
+ url=ENDPOINT,
88
+ status_code=404,
89
+ content=b"",
90
+ )
91
+
92
+ with pytest.raises(LagoApiError):
93
+ client.api_logs.find_all()
94
+
95
+
96
+ def test_invalid_operations_for_api_log_request():
97
+ client = Client(api_key="886fe239-927d-4072-ab72-6dd345e8dd0d")
98
+ assert not hasattr(client.api_logs, "create")
99
+ assert not hasattr(client.api_logs, "update")
100
+ assert not hasattr(client.api_logs, "destroy")
@@ -140,6 +140,28 @@ def test_valid_destroy_subscription_request(httpx_mock: HTTPXMock):
140
140
  assert response.plan_code == "eartha lynch"
141
141
 
142
142
 
143
+ def test_valid_destroy_subscription_with_on_termination_actions_request(httpx_mock: HTTPXMock):
144
+ client = Client(api_key="886fe239-927d-4072-ab72-6dd345e8dd0d")
145
+ identifier = "sub_id"
146
+
147
+ httpx_mock.add_response(
148
+ method="DELETE",
149
+ url="https://api.getlago.com/api/v1/subscriptions/"
150
+ + identifier
151
+ + "?on_termination_credit_note=skip&on_termination_invoice=skip",
152
+ content=mock_response(),
153
+ )
154
+ response = client.subscriptions.destroy(
155
+ identifier, {"on_termination_credit_note": "skip", "on_termination_invoice": "skip"}
156
+ )
157
+
158
+ assert response.external_customer_id == "5eb02857-a71e-4ea2-bcf9-57d3a41bc6ba"
159
+ assert response.status == "active"
160
+ assert response.plan_code == "eartha lynch"
161
+ assert response.on_termination_credit_note == "skip"
162
+ assert response.on_termination_invoice == "skip"
163
+
164
+
143
165
  def test_valid_destroy_pending_subscription_request(httpx_mock: HTTPXMock):
144
166
  client = Client(api_key="886fe239-927d-4072-ab72-6dd345e8dd0d")
145
167
  identifier = "sub_id"
@@ -1 +0,0 @@
1
- LAGO_VERSION = "1.31.0"