b1sl-python 0.2.0__tar.gz → 0.3.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 (636) hide show
  1. b1sl_python-0.3.0/PKG-INFO +315 -0
  2. b1sl_python-0.3.0/README.md +268 -0
  3. b1sl_python-0.3.0/ROADMAP.md +14 -0
  4. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/pyproject.toml +1 -1
  5. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/adapter_protocol.py +4 -4
  6. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/async_client.py +25 -0
  7. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/async_rest_adapter.py +30 -12
  8. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/base_adapter.py +34 -0
  9. b1sl_python-0.3.0/src/b1sl/b1sl/batch/__init__.py +6 -0
  10. b1sl_python-0.3.0/src/b1sl/b1sl/batch/_recording_adapter.py +67 -0
  11. b1sl_python-0.3.0/src/b1sl/b1sl/batch/changeset.py +29 -0
  12. b1sl_python-0.3.0/src/b1sl/b1sl/batch/client.py +124 -0
  13. b1sl_python-0.3.0/src/b1sl/b1sl/batch/parser.py +120 -0
  14. b1sl_python-0.3.0/src/b1sl/b1sl/batch/results.py +56 -0
  15. b1sl_python-0.3.0/src/b1sl/b1sl/batch/serializer.py +71 -0
  16. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/client.py +25 -0
  17. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/config.py +3 -0
  18. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/models/base.py +78 -0
  19. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/models/result.py +3 -1
  20. b1sl_python-0.3.0/src/b1sl/b1sl/pagination.py +54 -0
  21. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/async_base.py +88 -2
  22. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/base.py +119 -1
  23. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/odata.py +135 -33
  24. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/rest_adapter.py +15 -12
  25. b1sl_python-0.3.0/src/b1sl/b1sl/schemas/__init__.py +3 -0
  26. b1sl_python-0.3.0/src/b1sl/b1sl/schemas/udf.py +79 -0
  27. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/fakes/fake_rest_adapter.py +11 -5
  28. b1sl_python-0.3.0/tests/unit/test_advanced_features.py +156 -0
  29. b1sl_python-0.3.0/tests/unit/test_batch.py +151 -0
  30. b1sl_python-0.3.0/tests/unit/test_pagination.py +59 -0
  31. b1sl_python-0.3.0/tests/unit/test_schema_header.py +271 -0
  32. b1sl_python-0.3.0/tests/unit/test_stream_execution.py +152 -0
  33. b1sl_python-0.3.0/tests/unit/test_udfs.py +176 -0
  34. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/uv.lock +1 -1
  35. b1sl_python-0.2.0/PKG-INFO +0 -205
  36. b1sl_python-0.2.0/README.md +0 -158
  37. b1sl_python-0.2.0/ROADMAP.md +0 -25
  38. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/.env.example +0 -0
  39. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/.github/workflows/ci.yml +0 -0
  40. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/.github/workflows/publish.yml +0 -0
  41. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/.gitignore +0 -0
  42. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/LICENSE +0 -0
  43. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/Makefile +0 -0
  44. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/configs/dev.json +0 -0
  45. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/configs/qa.json.example +0 -0
  46. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/__init__.py +0 -0
  47. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/__init__.py +0 -0
  48. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/_types.py +0 -0
  49. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/adapter.py +0 -0
  50. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/config_manager.py +0 -0
  51. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/contrib/__init__.py +0 -0
  52. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/contrib/django/__init__.py +0 -0
  53. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/contrib/django/middleware/__init__.py +0 -0
  54. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/contrib/django/middleware/base.py +0 -0
  55. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/contrib/django/middleware/odata_decode_middleware.py +0 -0
  56. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/contrib/django/middleware/odata_transform_url_middleware.py +0 -0
  57. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/entities/__init__.py +0 -0
  58. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/environment.py +0 -0
  59. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/exceptions/__init__.py +0 -0
  60. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/exceptions/exceptions.py +0 -0
  61. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/fields/__init__.py +0 -0
  62. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/fields/_generated/__init__.py +0 -0
  63. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/fields/_generated/complex_types.py +0 -0
  64. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/fields/_generated/entities/__init__.py +0 -0
  65. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/fields/_generated/entities/businesspartners.py +0 -0
  66. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/fields/_generated/entities/finance.py +0 -0
  67. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/fields/_generated/entities/general.py +0 -0
  68. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/fields/_generated/entities/inventory.py +0 -0
  69. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/fields/_generated/entities/production.py +0 -0
  70. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/fields/_generated/entities/purchasing.py +0 -0
  71. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/fields/_generated/entities/sales.py +0 -0
  72. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/fields/base.py +0 -0
  73. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/logging_utils.py +0 -0
  74. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/models/__init__.py +0 -0
  75. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/models/_generated/__init__.py +0 -0
  76. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/models/_generated/_types.py +0 -0
  77. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/models/_generated/complex_types.py +0 -0
  78. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/models/_generated/entities/__init__.py +0 -0
  79. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/models/_generated/entities/businesspartners.py +0 -0
  80. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/models/_generated/entities/finance.py +0 -0
  81. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/models/_generated/entities/general.py +0 -0
  82. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/models/_generated/entities/inventory.py +0 -0
  83. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/models/_generated/entities/production.py +0 -0
  84. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/models/_generated/entities/purchasing.py +0 -0
  85. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/models/_generated/entities/sales.py +0 -0
  86. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/models/_generated/enums.py +0 -0
  87. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/models/_generated/resources/__init__.py +0 -0
  88. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/models/_overrides/inventory.py +0 -0
  89. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/models/odata_query_model.py +0 -0
  90. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/models/paginated_result.py +0 -0
  91. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/__init__.py +0 -0
  92. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/__init__.py +0 -0
  93. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/account_category.py +0 -0
  94. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/account_category_service.py +0 -0
  95. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/account_segmentation_categories.py +0 -0
  96. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/account_segmentations.py +0 -0
  97. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/accounts_service.py +0 -0
  98. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/accrual_types.py +0 -0
  99. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/accrual_types_service.py +0 -0
  100. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/activities.py +0 -0
  101. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/activities_service.py +0 -0
  102. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/activity_locations.py +0 -0
  103. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/activity_recipient_lists.py +0 -0
  104. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/activity_recipient_lists_service.py +0 -0
  105. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/activity_statuses.py +0 -0
  106. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/activity_types.py +0 -0
  107. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/additional_expenses.py +0 -0
  108. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/address_service.py +0 -0
  109. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/alert_managements.py +0 -0
  110. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/alternate_cat_num.py +0 -0
  111. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/alternative_items_service.py +0 -0
  112. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/approval_requests.py +0 -0
  113. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/approval_requests_service.py +0 -0
  114. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/approval_stages.py +0 -0
  115. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/approval_stages_service.py +0 -0
  116. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/approval_templates.py +0 -0
  117. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/approval_templates_service.py +0 -0
  118. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/asset_capitalization.py +0 -0
  119. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/asset_capitalization_credit_memo.py +0 -0
  120. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/asset_capitalization_credit_memo_service.py +0 -0
  121. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/asset_capitalization_service.py +0 -0
  122. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/asset_classes.py +0 -0
  123. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/asset_classes_service.py +0 -0
  124. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/asset_depreciation_groups.py +0 -0
  125. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/asset_depreciation_groups_service.py +0 -0
  126. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/asset_groups.py +0 -0
  127. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/asset_groups_service.py +0 -0
  128. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/asset_manual_depreciation.py +0 -0
  129. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/asset_manual_depreciation_service.py +0 -0
  130. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/asset_retirement.py +0 -0
  131. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/asset_retirement_service.py +0 -0
  132. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/asset_transfer.py +0 -0
  133. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/asset_transfer_service.py +0 -0
  134. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/attachments2.py +0 -0
  135. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/attribute_groups.py +0 -0
  136. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/attribute_groups_service.py +0 -0
  137. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/bank_charges_allocation_codes.py +0 -0
  138. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/bank_charges_allocation_codes_service.py +0 -0
  139. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/bank_pages.py +0 -0
  140. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/bank_statements.py +0 -0
  141. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/bank_statements_service.py +0 -0
  142. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/banks.py +0 -0
  143. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/bar_codes.py +0 -0
  144. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/bar_codes_service.py +0 -0
  145. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/batch_number_details.py +0 -0
  146. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/bill_of_exchange_transactions.py +0 -0
  147. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/bin_location_attributes.py +0 -0
  148. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/bin_location_attributes_service.py +0 -0
  149. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/bin_location_fields.py +0 -0
  150. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/bin_location_fields_service.py +0 -0
  151. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/bin_locations.py +0 -0
  152. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/bin_locations_service.py +0 -0
  153. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/blanket_agreements.py +0 -0
  154. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/blanket_agreements_service.py +0 -0
  155. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/boe_document_types.py +0 -0
  156. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/boe_document_types_service.py +0 -0
  157. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/boe_instructions.py +0 -0
  158. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/boe_instructions_service.py +0 -0
  159. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/boe_lines_service.py +0 -0
  160. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/boe_portfolios.py +0 -0
  161. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/boe_portfolios_service.py +0 -0
  162. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/bp_fiscal_registry_id.py +0 -0
  163. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/bp_opening_balance_service.py +0 -0
  164. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/bp_priorities.py +0 -0
  165. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/branches.py +0 -0
  166. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/branches_service.py +0 -0
  167. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/brazil_beverage_indexers.py +0 -0
  168. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/brazil_beverage_indexers_service.py +0 -0
  169. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/brazil_fuel_indexers.py +0 -0
  170. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/brazil_fuel_indexers_service.py +0 -0
  171. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/brazil_multi_indexers.py +0 -0
  172. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/brazil_numeric_indexers.py +0 -0
  173. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/brazil_string_indexers.py +0 -0
  174. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/budget_distributions.py +0 -0
  175. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/budget_scenarios.py +0 -0
  176. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/budgets.py +0 -0
  177. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/business_partner_groups.py +0 -0
  178. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/business_partner_properties.py +0 -0
  179. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/business_partner_properties_service.py +0 -0
  180. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/business_partners.py +0 -0
  181. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/business_partners_service.py +0 -0
  182. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/business_places.py +0 -0
  183. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/campaign_response_type.py +0 -0
  184. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/campaign_response_type_service.py +0 -0
  185. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/campaigns.py +0 -0
  186. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/campaigns_service.py +0 -0
  187. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/cash_discounts.py +0 -0
  188. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/cash_discounts_service.py +0 -0
  189. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/cash_flow_line_items.py +0 -0
  190. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/cash_flow_line_items_service.py +0 -0
  191. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/certificate_series.py +0 -0
  192. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/certificate_series_service.py +0 -0
  193. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/change_logs_service.py +0 -0
  194. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/chart_of_accounts.py +0 -0
  195. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/check_lines_service.py +0 -0
  196. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/checksfor_payment.py +0 -0
  197. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/choose_from_list.py +0 -0
  198. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/closing_date_procedure.py +0 -0
  199. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/cockpits.py +0 -0
  200. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/cockpits_service.py +0 -0
  201. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/commission_groups.py +0 -0
  202. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/company_service.py +0 -0
  203. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/contacts.py +0 -0
  204. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/contract_templates.py +0 -0
  205. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/correction_invoice.py +0 -0
  206. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/correction_invoice_reversal.py +0 -0
  207. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/correction_invoice_reversal_service.py +0 -0
  208. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/correction_invoice_service.py +0 -0
  209. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/correction_purchase_invoice.py +0 -0
  210. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/correction_purchase_invoice_reversal.py +0 -0
  211. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/correction_purchase_invoice_reversal_service.py +0 -0
  212. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/correction_purchase_invoice_service.py +0 -0
  213. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/cost_center_types.py +0 -0
  214. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/cost_center_types_service.py +0 -0
  215. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/cost_element_service.py +0 -0
  216. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/cost_elements.py +0 -0
  217. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/counties.py +0 -0
  218. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/counties_service.py +0 -0
  219. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/countries.py +0 -0
  220. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/countries_service.py +0 -0
  221. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/credit_card_payments.py +0 -0
  222. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/credit_cards.py +0 -0
  223. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/credit_lines_service.py +0 -0
  224. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/credit_notes.py +0 -0
  225. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/credit_notes_service.py +0 -0
  226. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/credit_payment_methods.py +0 -0
  227. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/currencies.py +0 -0
  228. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/customer_equipment_cards.py +0 -0
  229. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/customs_declaration.py +0 -0
  230. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/customs_groups.py +0 -0
  231. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/cycle_count_determinations.py +0 -0
  232. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/cycle_count_determinations_service.py +0 -0
  233. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/dashboard_packages_service.py +0 -0
  234. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/deductible_tax_service.py +0 -0
  235. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/deductible_taxes.py +0 -0
  236. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/deduction_tax_groups.py +0 -0
  237. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/deduction_tax_hierarchies.py +0 -0
  238. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/deduction_tax_sub_groups.py +0 -0
  239. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/deduction_tax_sub_groups_service.py +0 -0
  240. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/delivery_notes.py +0 -0
  241. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/delivery_notes_service.py +0 -0
  242. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/departments.py +0 -0
  243. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/departments_service.py +0 -0
  244. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/deposits.py +0 -0
  245. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/deposits_service.py +0 -0
  246. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/depreciation_areas.py +0 -0
  247. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/depreciation_areas_service.py +0 -0
  248. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/depreciation_type_pools.py +0 -0
  249. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/depreciation_type_pools_service.py +0 -0
  250. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/depreciation_types.py +0 -0
  251. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/depreciation_types_service.py +0 -0
  252. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/determination_criterias.py +0 -0
  253. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/determination_criterias_service.py +0 -0
  254. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/dimensions.py +0 -0
  255. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/dimensions_service.py +0 -0
  256. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/distribution_rules.py +0 -0
  257. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/distribution_rules_service.py +0 -0
  258. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/dnf_code_setup.py +0 -0
  259. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/dnf_code_setup_service.py +0 -0
  260. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/down_payments.py +0 -0
  261. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/down_payments_service.py +0 -0
  262. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/drafts.py +0 -0
  263. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/drafts_service.py +0 -0
  264. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/dunning_letters.py +0 -0
  265. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/dunning_terms.py +0 -0
  266. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/dunning_terms_service.py +0 -0
  267. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/dynamic_system_strings.py +0 -0
  268. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/electronic_communication_action_service.py +0 -0
  269. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/electronic_communication_actions_service.py +0 -0
  270. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/electronic_file_formats.py +0 -0
  271. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/electronic_file_formats_service.py +0 -0
  272. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/email_groups.py +0 -0
  273. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/email_groups_service.py +0 -0
  274. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/employee_id_type.py +0 -0
  275. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/employee_id_type_service.py +0 -0
  276. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/employee_position.py +0 -0
  277. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/employee_position_service.py +0 -0
  278. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/employee_roles_setup.py +0 -0
  279. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/employee_roles_setup_service.py +0 -0
  280. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/employee_status.py +0 -0
  281. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/employee_status_service.py +0 -0
  282. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/employee_transfers.py +0 -0
  283. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/employee_transfers_service.py +0 -0
  284. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/employees_info.py +0 -0
  285. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/employment_category_service.py +0 -0
  286. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/employment_categorys.py +0 -0
  287. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/enhanced_discount_groups.py +0 -0
  288. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/enhanced_discount_groups_service.py +0 -0
  289. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/exceptional_event_service.py +0 -0
  290. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/exceptional_events.py +0 -0
  291. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/extended_translations.py +0 -0
  292. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/extended_translations_service.py +0 -0
  293. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/external_calls_service.py +0 -0
  294. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/external_reconciliations_service.py +0 -0
  295. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/fa_account_determinations.py +0 -0
  296. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/fa_account_determinations_service.py +0 -0
  297. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/factoring_indicators.py +0 -0
  298. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/financial_years.py +0 -0
  299. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/financial_years_service.py +0 -0
  300. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/fiscal_printer.py +0 -0
  301. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/fiscal_printer_service.py +0 -0
  302. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/fixed_asset_items_service.py +0 -0
  303. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/form_preferences.py +0 -0
  304. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/formatted_searches.py +0 -0
  305. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/forms1099.py +0 -0
  306. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/gl_account_advanced_rules.py +0 -0
  307. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/gl_account_advanced_rules_service.py +0 -0
  308. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/goods_return_request.py +0 -0
  309. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/goods_return_request_service.py +0 -0
  310. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/gov_pay_codes.py +0 -0
  311. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/gov_pay_codes_service.py +0 -0
  312. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/gt_is_service.py +0 -0
  313. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/holidays.py +0 -0
  314. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/house_bank_accounts.py +0 -0
  315. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/incoming_payments.py +0 -0
  316. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/india_hsn.py +0 -0
  317. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/india_hsn_service.py +0 -0
  318. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/industries.py +0 -0
  319. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/integration_packages_configure.py +0 -0
  320. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/integration_packages_configure_service.py +0 -0
  321. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/internal_reconciliations.py +0 -0
  322. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/internal_reconciliations_service.py +0 -0
  323. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/intrastat_configuration.py +0 -0
  324. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/intrastat_configuration_service.py +0 -0
  325. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/inventory_countings.py +0 -0
  326. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/inventory_countings_service.py +0 -0
  327. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/inventory_cycles.py +0 -0
  328. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/inventory_gen_entries.py +0 -0
  329. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/inventory_gen_entry_service.py +0 -0
  330. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/inventory_gen_exit_service.py +0 -0
  331. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/inventory_gen_exits.py +0 -0
  332. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/inventory_opening_balances.py +0 -0
  333. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/inventory_opening_balances_service.py +0 -0
  334. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/inventory_postings.py +0 -0
  335. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/inventory_postings_service.py +0 -0
  336. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/inventory_transfer_requests.py +0 -0
  337. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/inventory_transfer_requests_service.py +0 -0
  338. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/invoices.py +0 -0
  339. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/invoices_service.py +0 -0
  340. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/item_groups.py +0 -0
  341. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/item_properties.py +0 -0
  342. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/items.py +0 -0
  343. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/journal_entries.py +0 -0
  344. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/journal_entry_document_type_service.py +0 -0
  345. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/journal_entry_document_types.py +0 -0
  346. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/journal_vouchers_service.py +0 -0
  347. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/knowledge_base_solutions.py +0 -0
  348. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/kp_is.py +0 -0
  349. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/kp_is_service.py +0 -0
  350. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/landed_costs.py +0 -0
  351. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/landed_costs_codes.py +0 -0
  352. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/landed_costs_service.py +0 -0
  353. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/legal_data.py +0 -0
  354. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/length_measures.py +0 -0
  355. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/license_service.py +0 -0
  356. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/local_era.py +0 -0
  357. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/manufacturers.py +0 -0
  358. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/material_groups.py +0 -0
  359. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/material_groups_service.py +0 -0
  360. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/material_revaluation.py +0 -0
  361. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/material_revaluation_fifo_service.py +0 -0
  362. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/material_revaluation_snb_service.py +0 -0
  363. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/messages.py +0 -0
  364. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/messages_service.py +0 -0
  365. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/mobile_add_on_setting.py +0 -0
  366. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/mobile_add_on_setting_service.py +0 -0
  367. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/mobile_app_service.py +0 -0
  368. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/multi_language_translations.py +0 -0
  369. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/nature_of_assessees.py +0 -0
  370. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/nature_of_assessees_service.py +0 -0
  371. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/ncm_codes_setup.py +0 -0
  372. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/ncm_codes_setup_service.py +0 -0
  373. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/nf_models.py +0 -0
  374. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/nf_models_service.py +0 -0
  375. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/nf_tax_categories.py +0 -0
  376. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/nf_tax_categories_service.py +0 -0
  377. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/nota_fiscal_cfop.py +0 -0
  378. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/nota_fiscal_cst.py +0 -0
  379. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/nota_fiscal_usage.py +0 -0
  380. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/occurrence_codes.py +0 -0
  381. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/occurrence_codes_service.py +0 -0
  382. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/orders.py +0 -0
  383. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/orders_service.py +0 -0
  384. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/packages_types.py +0 -0
  385. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/partners_setups.py +0 -0
  386. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/partners_setups_service.py +0 -0
  387. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/payment_blocks.py +0 -0
  388. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/payment_blocks_service.py +0 -0
  389. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/payment_calculation_service.py +0 -0
  390. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/payment_drafts.py +0 -0
  391. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/payment_reason_code_service.py +0 -0
  392. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/payment_reason_codes.py +0 -0
  393. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/payment_run_export.py +0 -0
  394. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/payment_terms_types.py +0 -0
  395. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/payment_terms_types_service.py +0 -0
  396. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/pick_lists.py +0 -0
  397. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/pick_lists_service.py +0 -0
  398. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/pos_daily_summary.py +0 -0
  399. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/predefined_texts.py +0 -0
  400. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/predefined_texts_service.py +0 -0
  401. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/price_lists.py +0 -0
  402. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/product_trees.py +0 -0
  403. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/production_orders.py +0 -0
  404. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/profit_centers.py +0 -0
  405. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/profit_centers_service.py +0 -0
  406. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/project_management_configuration_service.py +0 -0
  407. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/project_management_service.py +0 -0
  408. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/project_management_time_sheet.py +0 -0
  409. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/project_managements.py +0 -0
  410. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/projects.py +0 -0
  411. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/projects_service.py +0 -0
  412. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/purchase_credit_notes.py +0 -0
  413. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/purchase_credit_notes_service.py +0 -0
  414. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/purchase_delivery_notes.py +0 -0
  415. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/purchase_delivery_notes_service.py +0 -0
  416. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/purchase_down_payments.py +0 -0
  417. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/purchase_down_payments_service.py +0 -0
  418. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/purchase_invoices.py +0 -0
  419. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/purchase_invoices_service.py +0 -0
  420. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/purchase_orders.py +0 -0
  421. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/purchase_orders_service.py +0 -0
  422. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/purchase_quotations.py +0 -0
  423. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/purchase_quotations_service.py +0 -0
  424. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/purchase_request_service.py +0 -0
  425. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/purchase_requests.py +0 -0
  426. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/purchase_returns.py +0 -0
  427. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/purchase_returns_service.py +0 -0
  428. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/purchase_tax_invoices.py +0 -0
  429. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/qr_code_service.py +0 -0
  430. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/query_auth_groups.py +0 -0
  431. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/query_categories.py +0 -0
  432. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/query_service.py +0 -0
  433. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/queue.py +0 -0
  434. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/quotations.py +0 -0
  435. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/quotations_service.py +0 -0
  436. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/recurring_transaction_service.py +0 -0
  437. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/relationships.py +0 -0
  438. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/report_filter.py +0 -0
  439. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/report_filter_service.py +0 -0
  440. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/report_layouts_service.py +0 -0
  441. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/report_types.py +0 -0
  442. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/report_types_service.py +0 -0
  443. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/resource_capacities.py +0 -0
  444. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/resource_capacities_service.py +0 -0
  445. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/resource_groups.py +0 -0
  446. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/resource_groups_service.py +0 -0
  447. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/resource_properties.py +0 -0
  448. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/resource_properties_service.py +0 -0
  449. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/resources.py +0 -0
  450. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/resources_service.py +0 -0
  451. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/retorno_codes.py +0 -0
  452. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/retorno_codes_service.py +0 -0
  453. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/return_request.py +0 -0
  454. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/return_request_service.py +0 -0
  455. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/returns.py +0 -0
  456. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/returns_service.py +0 -0
  457. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/route_stages.py +0 -0
  458. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/route_stages_service.py +0 -0
  459. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/sales_forecast.py +0 -0
  460. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/sales_opportunities.py +0 -0
  461. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/sales_opportunity_competitors_setup.py +0 -0
  462. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/sales_opportunity_competitors_setup_service.py +0 -0
  463. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/sales_opportunity_interests_setup.py +0 -0
  464. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/sales_opportunity_interests_setup_service.py +0 -0
  465. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/sales_opportunity_reasons_setup.py +0 -0
  466. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/sales_opportunity_reasons_setup_service.py +0 -0
  467. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/sales_opportunity_sources_setup.py +0 -0
  468. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/sales_opportunity_sources_setup_service.py +0 -0
  469. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/sales_persons.py +0 -0
  470. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/sales_stages.py +0 -0
  471. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/sales_tax_authorities.py +0 -0
  472. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/sales_tax_authorities_types.py +0 -0
  473. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/sales_tax_codes.py +0 -0
  474. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/sales_tax_invoices.py +0 -0
  475. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/sbo_bob_service.py +0 -0
  476. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/sections.py +0 -0
  477. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/sections_service.py +0 -0
  478. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/self_credit_memo_service.py +0 -0
  479. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/self_credit_memos.py +0 -0
  480. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/self_invoice_service.py +0 -0
  481. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/self_invoices.py +0 -0
  482. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/serial_number_details.py +0 -0
  483. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/series_service.py +0 -0
  484. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/service_call_origins.py +0 -0
  485. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/service_call_origins_service.py +0 -0
  486. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/service_call_problem_sub_types.py +0 -0
  487. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/service_call_problem_sub_types_service.py +0 -0
  488. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/service_call_problem_types.py +0 -0
  489. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/service_call_problem_types_service.py +0 -0
  490. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/service_call_solution_status.py +0 -0
  491. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/service_call_solution_status_service.py +0 -0
  492. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/service_call_status.py +0 -0
  493. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/service_call_status_service.py +0 -0
  494. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/service_call_types.py +0 -0
  495. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/service_call_types_service.py +0 -0
  496. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/service_calls.py +0 -0
  497. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/service_contracts.py +0 -0
  498. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/service_groups.py +0 -0
  499. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/service_groups_service.py +0 -0
  500. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/service_tax_posting_service.py +0 -0
  501. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/shipping_types.py +0 -0
  502. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/short_link_mappings_service.py +0 -0
  503. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/special_prices.py +0 -0
  504. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/states.py +0 -0
  505. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/states_service.py +0 -0
  506. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/stock_takings.py +0 -0
  507. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/stock_transfer_draft_service.py +0 -0
  508. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/stock_transfer_drafts.py +0 -0
  509. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/stock_transfer_service.py +0 -0
  510. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/stock_transfers.py +0 -0
  511. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/target_groups.py +0 -0
  512. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/target_groups_service.py +0 -0
  513. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/tax_code_determinations.py +0 -0
  514. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/tax_code_determinations_service.py +0 -0
  515. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/tax_code_determinations_tcd.py +0 -0
  516. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/tax_code_determinations_tcd_service.py +0 -0
  517. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/tax_invoice_report.py +0 -0
  518. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/tax_web_sites.py +0 -0
  519. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/tax_web_sites_service.py +0 -0
  520. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/teams.py +0 -0
  521. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/termination_reason.py +0 -0
  522. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/termination_reason_service.py +0 -0
  523. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/territories.py +0 -0
  524. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/tracking_notes.py +0 -0
  525. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/tracking_notes_service.py +0 -0
  526. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/transaction_codes.py +0 -0
  527. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/transaction_codes_service.py +0 -0
  528. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/transportation_document.py +0 -0
  529. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/tsr_exceptional_event_service.py +0 -0
  530. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/tsr_exceptional_events.py +0 -0
  531. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/unit_of_measurement_groups.py +0 -0
  532. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/unit_of_measurement_groups_service.py +0 -0
  533. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/unit_of_measurements.py +0 -0
  534. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/unit_of_measurements_service.py +0 -0
  535. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/user_default_groups.py +0 -0
  536. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/user_fields_md.py +0 -0
  537. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/user_keys_md.py +0 -0
  538. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/user_languages.py +0 -0
  539. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/user_menu_service.py +0 -0
  540. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/user_objects_md.py +0 -0
  541. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/user_permission_tree.py +0 -0
  542. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/user_queries.py +0 -0
  543. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/user_tables_md.py +0 -0
  544. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/users.py +0 -0
  545. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/users_service.py +0 -0
  546. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/value_mapping.py +0 -0
  547. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/value_mapping_communication.py +0 -0
  548. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/value_mapping_service.py +0 -0
  549. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/vat_groups.py +0 -0
  550. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/vendor_payments.py +0 -0
  551. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/w_tax_type_code_service.py +0 -0
  552. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/w_tax_type_codes.py +0 -0
  553. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/warehouse_locations.py +0 -0
  554. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/warehouse_sublevel_codes.py +0 -0
  555. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/warehouse_sublevel_codes_service.py +0 -0
  556. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/warehouses.py +0 -0
  557. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/web_client_bookmark_tile_service.py +0 -0
  558. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/web_client_bookmark_tiles.py +0 -0
  559. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/web_client_dashboard_service.py +0 -0
  560. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/web_client_dashboards.py +0 -0
  561. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/web_client_form_setting_service.py +0 -0
  562. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/web_client_form_settings.py +0 -0
  563. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/web_client_launchpad_service.py +0 -0
  564. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/web_client_launchpads.py +0 -0
  565. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/web_client_listview_filter_service.py +0 -0
  566. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/web_client_listview_filters.py +0 -0
  567. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/web_client_notification_service.py +0 -0
  568. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/web_client_notifications.py +0 -0
  569. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/web_client_preference_service.py +0 -0
  570. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/web_client_preferences.py +0 -0
  571. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/web_client_recent_activities.py +0 -0
  572. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/web_client_recent_activity_service.py +0 -0
  573. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/web_client_variant_group_service.py +0 -0
  574. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/web_client_variant_groups.py +0 -0
  575. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/web_client_variant_service.py +0 -0
  576. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/web_client_variants.py +0 -0
  577. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/weight_measures.py +0 -0
  578. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/withholding_tax_codes.py +0 -0
  579. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/witholding_tax_definition.py +0 -0
  580. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/wizard_payment_methods.py +0 -0
  581. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/_generated/workflow_task_service.py +0 -0
  582. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/resources/udo.py +0 -0
  583. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/testing.py +0 -0
  584. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/tests/__init__.py +0 -0
  585. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/tests/test_01_settings.py +0 -0
  586. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/tests/test_02_rest_adapter.py +0 -0
  587. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/tests/test_03_items_endpoint.py +0 -0
  588. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/tests/test_04_serialnumberdetails_endpoint.py +0 -0
  589. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/tests/test_observability.py +0 -0
  590. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/b1sl/tests/test_utils.py +0 -0
  591. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/contrib/__init__.py +0 -0
  592. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/contrib/django/__init__.py +0 -0
  593. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/contrib/django/base.py +0 -0
  594. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/contrib/django/odata_decode_middleware.py +0 -0
  595. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/contrib/django/odata_transform_url_middleware.py +0 -0
  596. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/py.typed +0 -0
  597. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/saphdb/__init__.py +0 -0
  598. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/saphdb/adapter.py +0 -0
  599. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/saphdb/client.py +0 -0
  600. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/saphdb/config.py +0 -0
  601. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/saphdb/endpoints/serialnumberdetailodbc.py +0 -0
  602. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/saphdb/exceptions/exceptions.py +0 -0
  603. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/saphdb/main.py +0 -0
  604. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/saphdb/models/result.py +0 -0
  605. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/saphdb/models/serial.py +0 -0
  606. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/saphdb/odbc_adapter.py +0 -0
  607. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/saphdb/tests/__init__.py +0 -0
  608. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/saphdb/tests/test_01_settings.py +0 -0
  609. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/saphdb/tests/test_02_odbc_adapter.py +0 -0
  610. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/src/b1sl/saphdb/tests/test_04_serialnumberdetails_endpoint.py +0 -0
  611. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/__init__.py +0 -0
  612. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/conftest.py +0 -0
  613. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/fakes/__init__.py +0 -0
  614. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/fixtures/__init__.py +0 -0
  615. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/fixtures/mock_responses/items_list.json +0 -0
  616. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/fixtures/mock_responses/items_single.json +0 -0
  617. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/fixtures/test_data.py +0 -0
  618. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/integration/__init__.py +0 -0
  619. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/integration/cassettes/test_items_real/test_get_item_real.yaml +0 -0
  620. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/integration/cassettes/test_items_real/test_list_items_real.yaml +0 -0
  621. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/integration/conftest.py +0 -0
  622. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/integration/test_items_real.py +0 -0
  623. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/test_async_adapter.py +0 -0
  624. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/test_b1sl_adapter.py +0 -0
  625. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/test_middleware.py +0 -0
  626. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/test_saphdb_adapter.py +0 -0
  627. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/unit/__init__.py +0 -0
  628. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/unit/mocks/items_list.json +0 -0
  629. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/unit/mocks/items_single.json +0 -0
  630. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/unit/test_bool_serialisation.py +0 -0
  631. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/unit/test_dry_run.py +0 -0
  632. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/unit/test_items_mock.py +0 -0
  633. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/unit/test_model_resolution.py +0 -0
  634. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/unit/test_odata_builder.py +0 -0
  635. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/unit/test_rest_adapter.py +0 -0
  636. {b1sl_python-0.2.0 → b1sl_python-0.3.0}/tests/unit/test_service_calls.py +0 -0
@@ -0,0 +1,315 @@
1
+ Metadata-Version: 2.4
2
+ Name: b1sl-python
3
+ Version: 0.3.0
4
+ Summary: A framework-agnostic Python SDK for SAP Business One Service Layer and SAP HANA. (Unofficial)
5
+ Project-URL: Homepage, https://github.com/operator-ita/b1sl-python
6
+ Project-URL: Repository, https://github.com/operator-ita/b1sl-python
7
+ Project-URL: Bug Tracker, https://github.com/operator-ita/b1sl-python/issues
8
+ Project-URL: Documentation, https://github.com/operator-ita/b1sl-python/tree/main/docs
9
+ Author: Eliceo Guzman
10
+ License: MIT
11
+ License-File: LICENSE
12
+ Keywords: erp,hana,odata,sap,sap-b1,service-layer
13
+ Classifier: Development Status :: 3 - Alpha
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Typing :: Typed
19
+ Requires-Python: <3.13,>=3.11
20
+ Requires-Dist: httpx<1,>=0.28.1
21
+ Requires-Dist: pydantic<3,>=2.0.0
22
+ Requires-Dist: python-dotenv>=1.2.2
23
+ Provides-Extra: all
24
+ Requires-Dist: beautifulsoup4>=4.14.3; extra == 'all'
25
+ Requires-Dist: django<6,>=4.2; extra == 'all'
26
+ Requires-Dist: hdbcli<3,>=2.20.0; extra == 'all'
27
+ Requires-Dist: lxml>=6.0.2; extra == 'all'
28
+ Provides-Extra: dev
29
+ Requires-Dist: mypy; extra == 'dev'
30
+ Requires-Dist: pytest-asyncio>=1.3.0; extra == 'dev'
31
+ Requires-Dist: pytest-cov; extra == 'dev'
32
+ Requires-Dist: pytest-django; extra == 'dev'
33
+ Requires-Dist: pytest-recording>=0.13.4; extra == 'dev'
34
+ Requires-Dist: pytest<9.0,>=8.0; extra == 'dev'
35
+ Requires-Dist: python-dotenv>=1.2.2; extra == 'dev'
36
+ Requires-Dist: responses>=0.26.0; extra == 'dev'
37
+ Requires-Dist: respx>=0.22.0; extra == 'dev'
38
+ Requires-Dist: ruff; extra == 'dev'
39
+ Provides-Extra: django
40
+ Requires-Dist: django<6,>=4.2; extra == 'django'
41
+ Provides-Extra: generator
42
+ Requires-Dist: beautifulsoup4>=4.14.3; extra == 'generator'
43
+ Requires-Dist: lxml>=6.0.2; extra == 'generator'
44
+ Provides-Extra: hana
45
+ Requires-Dist: hdbcli<3,>=2.20.0; extra == 'hana'
46
+ Description-Content-Type: text/markdown
47
+
48
+ # b1sl-python
49
+ ### Modern, async-first Python SDK for SAP Business One Service Layer.
50
+
51
+ ![b1sl Banner](docs/assets/hero-banner.png.png)
52
+
53
+ [![Python Version](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
54
+ [![License](https://img.shields.io/badge/license-MIT-green.svg)](https://opensource.org/licenses/MIT)
55
+ [![Pydantic v2](https://img.shields.io/badge/Pydantic-v2-orange.svg)](https://docs.pydantic.dev/)
56
+ [![Built with httpx](https://img.shields.io/badge/HTTP-httpx-blueviolet.svg)](https://www.python-httpx.org/)
57
+
58
+ b1sl is a high-performance SDK for the SAP B1 Service Layer, designed around concurrency, type safety, and developer experience. It covers the full lifecycle of a SAP integration — from single-record reads to transactional batch operations over large paginated datasets.
59
+
60
+ ---
61
+
62
+ ## Key Features
63
+
64
+ - **Async-First Architecture**: Built on `httpx` for non-blocking I/O. Full sync client parity for scripts and non-async contexts.
65
+ - **Type Safety**: Pydantic v2 integration for all SAP entities, with IDE autocomplete and runtime validation.
66
+ - **Smart Session Management**: Automatic 401 re-authentication with internal locking to prevent license exhaustion.
67
+ - **Session Hydration**: Reuse existing `B1SESSION` IDs across serverless functions or Temporal activities.
68
+ - **Optimistic Concurrency**: Automated ETag handling with smart cache invalidation on 412 conflicts.
69
+ - **Pythonic Querying**: Fluent OData builder with operator overloading (`F.ItemCode == "A001"`) and type-safe field access.
70
+ - **Transparent Pagination**: Automatic `nextLink` handling via Python generators — `async for item in client.items.stream()`.
71
+ - **`$batch` Support**: Group multiple operations into a single HTTP round-trip with full changeset atomicity.
72
+ - **Dynamic UDFs**: Schema-aware proxy for type-safe interaction with User Defined Fields, including opt-in Pydantic validation.
73
+ - **Observability**: Structured logging and event hooks for performance monitoring.
74
+ - **Safe Development**: Global and per-request Dry Run mode to intercept write operations without hitting SAP.
75
+
76
+ ---
77
+
78
+ ## Installation
79
+
80
+ ```bash
81
+ # Using pip
82
+ pip install b1sl-python
83
+
84
+ # Using uv
85
+ uv add b1sl-python
86
+ ```
87
+
88
+ ---
89
+
90
+ ## Quick Start
91
+
92
+ ```python
93
+ import asyncio
94
+ from b1sl.b1sl import AsyncB1Client, B1Config
95
+
96
+ async def main():
97
+ config = B1Config.from_env()
98
+
99
+ async with AsyncB1Client(config) as b1:
100
+ item = await b1.items.get("I1000")
101
+ print(f"Item: {item.item_name}")
102
+
103
+ # UDF access via protected mapping proxy
104
+ print(f"Custom color: {item.udfs['U_Color']}")
105
+
106
+ asyncio.run(main())
107
+ ```
108
+
109
+ ---
110
+
111
+ ## Pythonic Querying
112
+
113
+ Experience a fluent OData builder that uses operator overloading. You can choose between the zero-import **`F` Proxy** (requires SAP CamelCase names) or **Static Constants** (provides Pythonic snake_case autocomplete).
114
+
115
+ ```python
116
+ from b1sl.b1sl.resources.odata import F
117
+ from b1sl.b1sl.fields import Item
118
+
119
+ # 1. Dynamic F Proxy (Quick, use SAP field names)
120
+ items = await b1.items.filter(F.QuantityOnStock > 0).top(5).execute()
121
+
122
+ # 2. Static fields (Type-safe, uses Pythonic snake_case autocomplete)
123
+ items = await b1.items.filter(Item.quantity_on_stock > 0).top(5).execute()
124
+
125
+ for item in items:
126
+ print(f"[{item.item_code}] {item.item_name}")
127
+ ```
128
+
129
+ ---
130
+
131
+ ## Transparent Pagination
132
+
133
+ `.execute()` returns only the first page SAP gives you. `.stream()` transparently follows every `odata.nextLink` until the dataset is exhausted.
134
+
135
+ ```python
136
+ # Silently incomplete for large collections:
137
+ first_page = await b1.items.execute() # → 20 items (SAP's default page)
138
+
139
+ # Full dataset, zero boilerplate:
140
+ async for item in b1.items.stream(): # → all items, all pages
141
+ process(item)
142
+
143
+ # .top(N) is a hard global cap — not a page size:
144
+ async for item in b1.items.top(100).stream(page_size=20):
145
+ ... # exactly 100 items, fetched in batches of 20
146
+
147
+ # Safety ceiling on HTTP requests for large tables:
148
+ async for item in b1.items.stream(page_size=50, max_pages=5):
149
+ ... # at most 250 items, at most 5 requests
150
+
151
+ # Filters are preserved across every page boundary:
152
+ async for item in b1.items.filter(F.ItemType == "itItems").stream():
153
+ assert item.item_type == "itItems" # guaranteed on page 2, 3, ...
154
+ ```
155
+
156
+ The sync client has full parity:
157
+
158
+ ```python
159
+ from itertools import islice
160
+ from b1sl.b1sl import B1Client
161
+
162
+ with B1Client(config) as b1:
163
+ for item in b1.items.top(50).stream(page_size=10):
164
+ print(item.item_code)
165
+
166
+ # islice limits consumption — not HTTP requests.
167
+ # Use .top(N) when you want to limit requests.
168
+ first_5 = list(islice(b1.items.stream(page_size=20), 5))
169
+ ```
170
+
171
+ ---
172
+
173
+ ## `$batch` Requests
174
+
175
+ Group multiple operations into a single HTTP round-trip. Use changesets for atomic write transactions.
176
+
177
+ ```python
178
+ from b1sl.b1sl import entities as en
179
+
180
+ async with AsyncB1Client(config) as b1:
181
+ async with b1.batch() as batch:
182
+ # Reads — enqueued, not executed
183
+ await batch.items.top(1).execute()
184
+ await batch.business_partners.top(1).execute()
185
+
186
+ # Atomic changeset — all succeed or all fail
187
+ async with batch.changeset() as cs:
188
+ await cs.items.create(en.Item(item_code="B001", item_name="New Item"))
189
+ await cs.items.update("A001", en.Item(item_name="Renamed"))
190
+
191
+ results = await batch.execute()
192
+
193
+ if results.all_ok:
194
+ print(f"Created/Updated items successfully")
195
+ else:
196
+ for r in results.failed:
197
+ print(f"Operation {r.index} failed: {r.error}")
198
+ ```
199
+
200
+ ---
201
+
202
+ ## Dynamic UDF Handling
203
+
204
+ Schema discovery, type-safe access, and opt-in Pydantic validation — no manual model extensions required.
205
+
206
+ ```python
207
+ # Constructor injection
208
+ new_item = en.Item(item_code="NEW", udfs={"U_Category": "Hardware"})
209
+
210
+ # Surgical update
211
+ await b1.items.update("A001", en.Item(udfs={"U_Status": "Active"}))
212
+
213
+ # Schema discovery
214
+ schema = await b1.items.get_udf_schema()
215
+ print(schema) # UDFSchema(table='OITM', fields=12)
216
+ print("U_Category" in schema) # True
217
+ print(schema["U_Category"].type) # 'db_Alpha'
218
+
219
+ # Opt-in validation — generates a scoped Pydantic model on demand
220
+ DynamicUDFs = schema.to_pydantic_model("ItemUDFs")
221
+ validated = DynamicUDFs.model_validate({"U_Category": "Hardware"})
222
+
223
+ # Or the full shortcut: validate + serialize in one call
224
+ payload = schema.validate_and_dump({"U_Category": "Hardware"})
225
+ await b1.items.update("A001", en.Item(udfs=payload))
226
+ ```
227
+
228
+ > [!IMPORTANT]
229
+ > The `.udfs` proxy enforces the `U_` prefix to prevent accidental overwrites of SAP core fields.
230
+
231
+ ---
232
+
233
+ ## Advanced Usage: FastAPI Integration
234
+
235
+ b1sl is optimized for modern web frameworks. Use the Lifespan pattern to share a single connection pool across all requests.
236
+
237
+ ```python
238
+ from fastapi import FastAPI
239
+ from contextlib import asynccontextmanager
240
+ from b1sl.b1sl import AsyncB1Client, B1Config
241
+
242
+ b1_client: AsyncB1Client | None = None
243
+
244
+ @asynccontextmanager
245
+ async def lifespan(app: FastAPI):
246
+ global b1_client
247
+ b1_client = AsyncB1Client(B1Config.from_env())
248
+ await b1_client.connect()
249
+ yield
250
+ await b1_client.aclose()
251
+
252
+ app = FastAPI(lifespan=lifespan)
253
+
254
+ @app.get("/items/{item_code}")
255
+ async def get_item(item_code: str):
256
+ return await b1_client.items.get(item_code)
257
+
258
+ @app.get("/items")
259
+ async def list_items():
260
+ # Stream the full catalog without loading it all into memory
261
+ return [item async for item in b1_client.items.stream(page_size=100)]
262
+ ```
263
+
264
+ ---
265
+
266
+ ## Architecture Overview
267
+
268
+ | Feature | Implementation | Benefit |
269
+ |:---|:---|:---|
270
+ | **HTTP Engine** | `httpx` (Async + Sync) | Superior performance, timeouts, connection pooling |
271
+ | **Data Models** | Pydantic v2 | Runtime validation, IDE autocomplete, zero surprises |
272
+ | **Auth** | Auto-retry 401 + Session Hydration | Zero-downtime in serverless and long-running contexts |
273
+ | **Concurrency** | Shared connection pool + internal locking | Prevents SAP license exhaustion under concurrent load |
274
+ | **Pagination** | Generator-based `nextLink` follower | Memory-efficient iteration over arbitrarily large datasets |
275
+ | **Batch** | `RecordingAdapter` proxy pattern | Full SDK API reuse inside transactions, no new methods to learn |
276
+ | **UDFs** | `UDFSchema` container + dynamic Pydantic | Schema discovery, validation, and serialization in one object |
277
+
278
+ ---
279
+
280
+ ## Why b1sl?
281
+
282
+ SAP Business One Service Layer is sensitive to session limits and licensing costs. Traditional wrappers often create redundant connections, leading to overhead and frequent auth failures. Beyond auth, naive implementations silently truncate paginated results and require manual OData string construction.
283
+
284
+ b1sl addresses the full stack of these concerns:
285
+
286
+ 1. **Session Persistence**: Long-lived sessions with atomic re-authentication and internal locking.
287
+ 2. **Complete Data Access**: `.stream()` ensures you never silently miss records due to SAP's default page size.
288
+ 3. **Transactional Integrity**: `$batch` with changesets gives you atomicity without writing multipart HTTP by hand.
289
+ 4. **Zero Learning Curve for New APIs**: The batch proxy reuses the same SDK API — `batch.items.create()` works identically to `b1.items.create()`.
290
+
291
+ ---
292
+
293
+ ## SAP Compatibility
294
+
295
+ Defaults to **OData V4 (Service Layer v2)**.
296
+
297
+ | Requirement | Minimum Version |
298
+ |:---|:---|
299
+ | Verified baseline | Service Layer 1.27 (SAP 10.0 FP 2405) |
300
+ | ETag support | Service Layer 1.21+ (March 2021) |
301
+ | OData V2 fallback | Configurable via client options |
302
+
303
+ For the full compatibility timeline, see [docs/02-compatibility.md](https://github.com/operator-ita/b1sl-python/blob/main/docs/02-compatibility.md).
304
+
305
+ ---
306
+
307
+ ## Contributing
308
+
309
+ Contributions are welcome. Please open an issue to discuss proposed changes before submitting a pull request.
310
+
311
+ ---
312
+
313
+ ## License
314
+
315
+ MIT © 2026.
@@ -0,0 +1,268 @@
1
+ # b1sl-python
2
+ ### Modern, async-first Python SDK for SAP Business One Service Layer.
3
+
4
+ ![b1sl Banner](docs/assets/hero-banner.png.png)
5
+
6
+ [![Python Version](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
7
+ [![License](https://img.shields.io/badge/license-MIT-green.svg)](https://opensource.org/licenses/MIT)
8
+ [![Pydantic v2](https://img.shields.io/badge/Pydantic-v2-orange.svg)](https://docs.pydantic.dev/)
9
+ [![Built with httpx](https://img.shields.io/badge/HTTP-httpx-blueviolet.svg)](https://www.python-httpx.org/)
10
+
11
+ b1sl is a high-performance SDK for the SAP B1 Service Layer, designed around concurrency, type safety, and developer experience. It covers the full lifecycle of a SAP integration — from single-record reads to transactional batch operations over large paginated datasets.
12
+
13
+ ---
14
+
15
+ ## Key Features
16
+
17
+ - **Async-First Architecture**: Built on `httpx` for non-blocking I/O. Full sync client parity for scripts and non-async contexts.
18
+ - **Type Safety**: Pydantic v2 integration for all SAP entities, with IDE autocomplete and runtime validation.
19
+ - **Smart Session Management**: Automatic 401 re-authentication with internal locking to prevent license exhaustion.
20
+ - **Session Hydration**: Reuse existing `B1SESSION` IDs across serverless functions or Temporal activities.
21
+ - **Optimistic Concurrency**: Automated ETag handling with smart cache invalidation on 412 conflicts.
22
+ - **Pythonic Querying**: Fluent OData builder with operator overloading (`F.ItemCode == "A001"`) and type-safe field access.
23
+ - **Transparent Pagination**: Automatic `nextLink` handling via Python generators — `async for item in client.items.stream()`.
24
+ - **`$batch` Support**: Group multiple operations into a single HTTP round-trip with full changeset atomicity.
25
+ - **Dynamic UDFs**: Schema-aware proxy for type-safe interaction with User Defined Fields, including opt-in Pydantic validation.
26
+ - **Observability**: Structured logging and event hooks for performance monitoring.
27
+ - **Safe Development**: Global and per-request Dry Run mode to intercept write operations without hitting SAP.
28
+
29
+ ---
30
+
31
+ ## Installation
32
+
33
+ ```bash
34
+ # Using pip
35
+ pip install b1sl-python
36
+
37
+ # Using uv
38
+ uv add b1sl-python
39
+ ```
40
+
41
+ ---
42
+
43
+ ## Quick Start
44
+
45
+ ```python
46
+ import asyncio
47
+ from b1sl.b1sl import AsyncB1Client, B1Config
48
+
49
+ async def main():
50
+ config = B1Config.from_env()
51
+
52
+ async with AsyncB1Client(config) as b1:
53
+ item = await b1.items.get("I1000")
54
+ print(f"Item: {item.item_name}")
55
+
56
+ # UDF access via protected mapping proxy
57
+ print(f"Custom color: {item.udfs['U_Color']}")
58
+
59
+ asyncio.run(main())
60
+ ```
61
+
62
+ ---
63
+
64
+ ## Pythonic Querying
65
+
66
+ Experience a fluent OData builder that uses operator overloading. You can choose between the zero-import **`F` Proxy** (requires SAP CamelCase names) or **Static Constants** (provides Pythonic snake_case autocomplete).
67
+
68
+ ```python
69
+ from b1sl.b1sl.resources.odata import F
70
+ from b1sl.b1sl.fields import Item
71
+
72
+ # 1. Dynamic F Proxy (Quick, use SAP field names)
73
+ items = await b1.items.filter(F.QuantityOnStock > 0).top(5).execute()
74
+
75
+ # 2. Static fields (Type-safe, uses Pythonic snake_case autocomplete)
76
+ items = await b1.items.filter(Item.quantity_on_stock > 0).top(5).execute()
77
+
78
+ for item in items:
79
+ print(f"[{item.item_code}] {item.item_name}")
80
+ ```
81
+
82
+ ---
83
+
84
+ ## Transparent Pagination
85
+
86
+ `.execute()` returns only the first page SAP gives you. `.stream()` transparently follows every `odata.nextLink` until the dataset is exhausted.
87
+
88
+ ```python
89
+ # Silently incomplete for large collections:
90
+ first_page = await b1.items.execute() # → 20 items (SAP's default page)
91
+
92
+ # Full dataset, zero boilerplate:
93
+ async for item in b1.items.stream(): # → all items, all pages
94
+ process(item)
95
+
96
+ # .top(N) is a hard global cap — not a page size:
97
+ async for item in b1.items.top(100).stream(page_size=20):
98
+ ... # exactly 100 items, fetched in batches of 20
99
+
100
+ # Safety ceiling on HTTP requests for large tables:
101
+ async for item in b1.items.stream(page_size=50, max_pages=5):
102
+ ... # at most 250 items, at most 5 requests
103
+
104
+ # Filters are preserved across every page boundary:
105
+ async for item in b1.items.filter(F.ItemType == "itItems").stream():
106
+ assert item.item_type == "itItems" # guaranteed on page 2, 3, ...
107
+ ```
108
+
109
+ The sync client has full parity:
110
+
111
+ ```python
112
+ from itertools import islice
113
+ from b1sl.b1sl import B1Client
114
+
115
+ with B1Client(config) as b1:
116
+ for item in b1.items.top(50).stream(page_size=10):
117
+ print(item.item_code)
118
+
119
+ # islice limits consumption — not HTTP requests.
120
+ # Use .top(N) when you want to limit requests.
121
+ first_5 = list(islice(b1.items.stream(page_size=20), 5))
122
+ ```
123
+
124
+ ---
125
+
126
+ ## `$batch` Requests
127
+
128
+ Group multiple operations into a single HTTP round-trip. Use changesets for atomic write transactions.
129
+
130
+ ```python
131
+ from b1sl.b1sl import entities as en
132
+
133
+ async with AsyncB1Client(config) as b1:
134
+ async with b1.batch() as batch:
135
+ # Reads — enqueued, not executed
136
+ await batch.items.top(1).execute()
137
+ await batch.business_partners.top(1).execute()
138
+
139
+ # Atomic changeset — all succeed or all fail
140
+ async with batch.changeset() as cs:
141
+ await cs.items.create(en.Item(item_code="B001", item_name="New Item"))
142
+ await cs.items.update("A001", en.Item(item_name="Renamed"))
143
+
144
+ results = await batch.execute()
145
+
146
+ if results.all_ok:
147
+ print(f"Created/Updated items successfully")
148
+ else:
149
+ for r in results.failed:
150
+ print(f"Operation {r.index} failed: {r.error}")
151
+ ```
152
+
153
+ ---
154
+
155
+ ## Dynamic UDF Handling
156
+
157
+ Schema discovery, type-safe access, and opt-in Pydantic validation — no manual model extensions required.
158
+
159
+ ```python
160
+ # Constructor injection
161
+ new_item = en.Item(item_code="NEW", udfs={"U_Category": "Hardware"})
162
+
163
+ # Surgical update
164
+ await b1.items.update("A001", en.Item(udfs={"U_Status": "Active"}))
165
+
166
+ # Schema discovery
167
+ schema = await b1.items.get_udf_schema()
168
+ print(schema) # UDFSchema(table='OITM', fields=12)
169
+ print("U_Category" in schema) # True
170
+ print(schema["U_Category"].type) # 'db_Alpha'
171
+
172
+ # Opt-in validation — generates a scoped Pydantic model on demand
173
+ DynamicUDFs = schema.to_pydantic_model("ItemUDFs")
174
+ validated = DynamicUDFs.model_validate({"U_Category": "Hardware"})
175
+
176
+ # Or the full shortcut: validate + serialize in one call
177
+ payload = schema.validate_and_dump({"U_Category": "Hardware"})
178
+ await b1.items.update("A001", en.Item(udfs=payload))
179
+ ```
180
+
181
+ > [!IMPORTANT]
182
+ > The `.udfs` proxy enforces the `U_` prefix to prevent accidental overwrites of SAP core fields.
183
+
184
+ ---
185
+
186
+ ## Advanced Usage: FastAPI Integration
187
+
188
+ b1sl is optimized for modern web frameworks. Use the Lifespan pattern to share a single connection pool across all requests.
189
+
190
+ ```python
191
+ from fastapi import FastAPI
192
+ from contextlib import asynccontextmanager
193
+ from b1sl.b1sl import AsyncB1Client, B1Config
194
+
195
+ b1_client: AsyncB1Client | None = None
196
+
197
+ @asynccontextmanager
198
+ async def lifespan(app: FastAPI):
199
+ global b1_client
200
+ b1_client = AsyncB1Client(B1Config.from_env())
201
+ await b1_client.connect()
202
+ yield
203
+ await b1_client.aclose()
204
+
205
+ app = FastAPI(lifespan=lifespan)
206
+
207
+ @app.get("/items/{item_code}")
208
+ async def get_item(item_code: str):
209
+ return await b1_client.items.get(item_code)
210
+
211
+ @app.get("/items")
212
+ async def list_items():
213
+ # Stream the full catalog without loading it all into memory
214
+ return [item async for item in b1_client.items.stream(page_size=100)]
215
+ ```
216
+
217
+ ---
218
+
219
+ ## Architecture Overview
220
+
221
+ | Feature | Implementation | Benefit |
222
+ |:---|:---|:---|
223
+ | **HTTP Engine** | `httpx` (Async + Sync) | Superior performance, timeouts, connection pooling |
224
+ | **Data Models** | Pydantic v2 | Runtime validation, IDE autocomplete, zero surprises |
225
+ | **Auth** | Auto-retry 401 + Session Hydration | Zero-downtime in serverless and long-running contexts |
226
+ | **Concurrency** | Shared connection pool + internal locking | Prevents SAP license exhaustion under concurrent load |
227
+ | **Pagination** | Generator-based `nextLink` follower | Memory-efficient iteration over arbitrarily large datasets |
228
+ | **Batch** | `RecordingAdapter` proxy pattern | Full SDK API reuse inside transactions, no new methods to learn |
229
+ | **UDFs** | `UDFSchema` container + dynamic Pydantic | Schema discovery, validation, and serialization in one object |
230
+
231
+ ---
232
+
233
+ ## Why b1sl?
234
+
235
+ SAP Business One Service Layer is sensitive to session limits and licensing costs. Traditional wrappers often create redundant connections, leading to overhead and frequent auth failures. Beyond auth, naive implementations silently truncate paginated results and require manual OData string construction.
236
+
237
+ b1sl addresses the full stack of these concerns:
238
+
239
+ 1. **Session Persistence**: Long-lived sessions with atomic re-authentication and internal locking.
240
+ 2. **Complete Data Access**: `.stream()` ensures you never silently miss records due to SAP's default page size.
241
+ 3. **Transactional Integrity**: `$batch` with changesets gives you atomicity without writing multipart HTTP by hand.
242
+ 4. **Zero Learning Curve for New APIs**: The batch proxy reuses the same SDK API — `batch.items.create()` works identically to `b1.items.create()`.
243
+
244
+ ---
245
+
246
+ ## SAP Compatibility
247
+
248
+ Defaults to **OData V4 (Service Layer v2)**.
249
+
250
+ | Requirement | Minimum Version |
251
+ |:---|:---|
252
+ | Verified baseline | Service Layer 1.27 (SAP 10.0 FP 2405) |
253
+ | ETag support | Service Layer 1.21+ (March 2021) |
254
+ | OData V2 fallback | Configurable via client options |
255
+
256
+ For the full compatibility timeline, see [docs/02-compatibility.md](https://github.com/operator-ita/b1sl-python/blob/main/docs/02-compatibility.md).
257
+
258
+ ---
259
+
260
+ ## Contributing
261
+
262
+ Contributions are welcome. Please open an issue to discuss proposed changes before submitting a pull request.
263
+
264
+ ---
265
+
266
+ ## License
267
+
268
+ MIT © 2026.
@@ -0,0 +1,14 @@
1
+ # Roadmap / TODOs (Target: v0.1.x+)
2
+
3
+ *(All v0.1.x roadmap items have been completed!)*
4
+
5
+ ---
6
+
7
+ ## ✅ Recently Completed
8
+
9
+ - **Transparent Pagination Generators**: Implemented `.stream()` for resources to automatically handle fetching next pages using `odata.nextLink`.
10
+ - **$batch Request Support**: Implemented a recording-adapter based `BatchClient` that supports multi-resource transactions and complex result parsing.
11
+ - **Dynamic UDF Handling**: Implemented a unified `.udfs` proxy on the `B1Model` base class for type-safe, ergonomic User-Defined Field access.
12
+ - **OData Query Builder (Fluent API)**: Implemented Pythonic operator overloading on `F` schema constants.
13
+ - **Example Usage:** `client.items.filter((F.Item.on_hand > 5) & (F.Item.item_name.contains("QUESO")))`
14
+
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "b1sl-python"
7
- version = "0.2.0"
7
+ version = "0.3.0"
8
8
  description = "A framework-agnostic Python SDK for SAP Business One Service Layer and SAP HANA. (Unofficial)"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11,<3.13"
@@ -12,17 +12,17 @@ class RestAdapterProtocol(Protocol):
12
12
  """
13
13
 
14
14
  def get(
15
- self, endpoint: str, ep_params: dict | None = None, data: dict | None = None
15
+ self, endpoint: str, ep_params: dict | None = None, data: dict | None = None, headers: dict | None = None
16
16
  ) -> Result: ...
17
17
 
18
18
  def post(
19
- self, endpoint: str, ep_params: dict | None = None, data: dict | None = None
19
+ self, endpoint: str, ep_params: dict | None = None, data: dict | None = None, headers: dict | None = None
20
20
  ) -> Result: ...
21
21
 
22
22
  def patch(
23
- self, endpoint: str, ep_params: dict | None = None, data: dict | None = None
23
+ self, endpoint: str, ep_params: dict | None = None, data: dict | None = None, headers: dict | None = None
24
24
  ) -> Result: ...
25
25
 
26
26
  def delete(
27
- self, endpoint: str, ep_params: dict | None = None, data: dict | None = None
27
+ self, endpoint: str, ep_params: dict | None = None, data: dict | None = None, headers: dict | None = None
28
28
  ) -> Result: ...
@@ -8,6 +8,7 @@ from b1sl.b1sl.base_adapter import ObservabilityConfig
8
8
  from b1sl.b1sl.config import B1Config
9
9
 
10
10
  if TYPE_CHECKING:
11
+ from b1sl.b1sl.batch.client import BatchClient
11
12
  from b1sl.b1sl.models._generated.entities.businesspartners import (
12
13
  Activity,
13
14
  BusinessPartner,
@@ -98,6 +99,30 @@ class AsyncB1Client:
98
99
  """
99
100
  return self._adapter.dry_run(enabled)
100
101
 
102
+ def with_schema(self, name: str):
103
+ """
104
+ Context manager to temporarily set the B1S-Schema header
105
+ **for the current asyncio.Task only** (task-safe via ContextVar).
106
+
107
+ Usage::
108
+
109
+ async with AsyncB1Client(config) as b1:
110
+ async with b1.with_schema("demo.schema"):
111
+ await b1.items.get("A0001")
112
+ """
113
+ return self._adapter.with_schema(name)
114
+
115
+ def batch(self) -> BatchClient:
116
+ """
117
+ Returns a context manager that groups multiple resource operations
118
+ into a single OData $batch HTTP request.
119
+
120
+ Use this for high-concurrency scenarios (bulk GETs) or transactional
121
+ integrity (atomic ChangeSets). See :class:`BatchClient` for details.
122
+ """
123
+ from b1sl.b1sl.batch.client import BatchClient
124
+ return BatchClient(self)
125
+
101
126
  async def connect(self) -> None:
102
127
  """
103
128
  Initializes the underlying HTTP client and logs in.