bb-integrations-library 4.3.0__tar.gz → 4.3.2__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 (297) hide show
  1. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/PKG-INFO +1 -1
  2. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/sd/directive_upsert.py +2 -2
  3. bb_integrations_library-4.3.2/bb_integrations_lib/pipelines/steps/processing/sftp_archive_aged_files_step.py +94 -0
  4. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/dtn/client.py +44 -3
  5. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/ftp/client.py +10 -0
  6. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/ftp/interface.py +14 -0
  7. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/pyproject.toml +1 -1
  8. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/README.md +0 -0
  9. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/__init__.py +0 -0
  10. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/converters/__init__.py +0 -0
  11. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/__init__.py +0 -0
  12. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/base_api.py +0 -0
  13. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/model.py +0 -0
  14. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/pe_api.py +0 -0
  15. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/rita_api.py +0 -0
  16. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/sd_adapter.py +0 -0
  17. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/sd_api.py +0 -0
  18. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/testing/TTE/sd/models.py +0 -0
  19. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/testing/TTE/sd/tests/test_models.py +0 -0
  20. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/testing/__init__.py +0 -0
  21. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/testing/builder.py +0 -0
  22. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/testing/openapi.py +0 -0
  23. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/testing/util.py +0 -0
  24. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/mappers/__init__.py +0 -0
  25. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/mappers/prices/__init__.py +0 -0
  26. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/mappers/prices/model.py +0 -0
  27. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/mappers/prices/price_mapper.py +0 -0
  28. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/mappers/prices/protocol.py +0 -0
  29. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/mappers/prices/util.py +0 -0
  30. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/mappers/rita_mapper.py +0 -0
  31. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/__init__.py +0 -0
  32. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/dtn_supplier_invoice.py +0 -0
  33. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/enums.py +0 -0
  34. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/fuelquest/__init__.py +0 -0
  35. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/fuelquest/delivery.py +0 -0
  36. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/fuelquest/delivery_plan_converter.py +0 -0
  37. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/fuelquest/invoice.py +0 -0
  38. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/fuelquest/shared.py +0 -0
  39. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/jagged_csv.py +0 -0
  40. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/pe/__init__.py +0 -0
  41. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/pe/common.py +0 -0
  42. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/pe/contracts.py +0 -0
  43. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/pe/counterparty_extract.py +0 -0
  44. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/pe/location_extract.py +0 -0
  45. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/pe/product_extract.py +0 -0
  46. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/pipeline_structs.py +0 -0
  47. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/probe/probe_event.py +0 -0
  48. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/probe/request_data.py +0 -0
  49. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/probe/resume_token.py +0 -0
  50. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/allocation_management.py +0 -0
  51. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/audit.py +0 -0
  52. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/auth.py +0 -0
  53. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/bucket.py +0 -0
  54. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/config.py +0 -0
  55. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/constants.py +0 -0
  56. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/crossrefs.py +0 -0
  57. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/crossroads_entities.py +0 -0
  58. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/crossroads_mapping.py +0 -0
  59. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/crossroads_monitoring.py +0 -0
  60. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/crossroads_network.py +0 -0
  61. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/crossroads_rules.py +0 -0
  62. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/email.py +0 -0
  63. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/gofer.py +0 -0
  64. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/integrations.py +0 -0
  65. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/issue.py +0 -0
  66. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/mapping.py +0 -0
  67. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/monitoring.py +0 -0
  68. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/probe.py +0 -0
  69. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/reference_data.py +0 -0
  70. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/sd_messages.py +0 -0
  71. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/source_system.py +0 -0
  72. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/workers.py +0 -0
  73. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/sd/bols_and_drops.py +0 -0
  74. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/sd/counterparty_upsert.py +0 -0
  75. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/sd/get_order.py +0 -0
  76. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/sd/location_upsert.py +0 -0
  77. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/sd/orders.py +0 -0
  78. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/sd/product_upsert.py +0 -0
  79. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/sd_api.py +0 -0
  80. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/__init__.py +0 -0
  81. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/__init__.py +0 -0
  82. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/bbd_export_parser_utils.py +0 -0
  83. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/circlek_reading_parser.py +0 -0
  84. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/distribution_report/__init__.py +0 -0
  85. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/distribution_report/order_by_site_product_parser.py +0 -0
  86. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/distribution_report/tank_configs_parser.py +0 -0
  87. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/dtn/__init__.py +0 -0
  88. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/dtn/dtn_price_parser.py +0 -0
  89. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/dtn/model.py +0 -0
  90. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/marathon_carrier_reading_parser.py +0 -0
  91. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/pdi_order_parser.py +0 -0
  92. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/price_engine/__init__.py +0 -0
  93. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/price_engine/price_file_upload/__init__.py +0 -0
  94. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/price_engine/price_file_upload/price_merge_parser.py +0 -0
  95. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/price_engine/price_file_upload/price_sync_parser.py +0 -0
  96. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/price_engine/price_file_upload/shared.py +0 -0
  97. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/qde/__init__.py +0 -0
  98. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/qde/model.py +0 -0
  99. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/qde/qde_directive_parser.py +0 -0
  100. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/reduced_reading_parser.py +0 -0
  101. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/standard_reading_parser.py +0 -0
  102. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/tank_reading_parser.py +0 -0
  103. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/tank_sales_parser.py +0 -0
  104. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/shared/__init__.py +0 -0
  105. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/shared/allocation_matcher/__init__.py +0 -0
  106. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/shared/allocation_matcher/matcher.py +0 -0
  107. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/shared/allocation_matcher/matching_utils.py +0 -0
  108. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/shared/allocation_matcher/model.py +0 -0
  109. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/shared/allocation_matcher/test_bol_allocation.py +0 -0
  110. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/__init__.py +0 -0
  111. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/bbd_resolve_alerts_step.py +0 -0
  112. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/create_accessorials_step.py +0 -0
  113. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/distribution_report/__init__.py +0 -0
  114. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/distribution_report/distribution_report_datafram_to_raw_data.py +0 -0
  115. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/distribution_report/get_model_history_step.py +0 -0
  116. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/distribution_report/get_order_by_site_product_step.py +0 -0
  117. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/distribution_report/get_tank_configs_step.py +0 -0
  118. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/distribution_report/join_distribution_order_dos_step.py +0 -0
  119. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/distribution_report/upload_distribution_report_datafram_to_big_query.py +0 -0
  120. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/echo_step.py +0 -0
  121. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/export_dataframe_to_rawdata_step.py +0 -0
  122. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/__init__.py +0 -0
  123. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/bbd_export_payroll_file_step.py +0 -0
  124. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/bbd_export_readings_step.py +0 -0
  125. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/bbd_order_exports/__init__.py +0 -0
  126. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/bbd_order_exports/bbd_export_order_sftp_step.py +0 -0
  127. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/bbd_order_exports/bbd_finalize_export_statuses_step.py +0 -0
  128. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/bbd_order_exports/bbd_get_bols_and_drops_step.py +0 -0
  129. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/bbd_order_exports/bbd_get_orders_to_export_step.py +0 -0
  130. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/bbd_order_exports/bbd_parse_order_step.py +0 -0
  131. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/bbd_order_exports/bbd_set_order_export_status.py +0 -0
  132. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/cargas_wholesale_bundle_upload_step.py +0 -0
  133. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/dataframe_flat_file_export.py +0 -0
  134. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/driver_payroll_export_step.py +0 -0
  135. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/fuelquest/__init__.py +0 -0
  136. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/fuelquest/mark_fuelquest_exported_step.py +0 -0
  137. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/fuelquest/recently_completed_orders_step.py +0 -0
  138. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/fuelquest_export_delivery_plan_step.py +0 -0
  139. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/gcs_bucket_export_file_step.py +0 -0
  140. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/invoice_exports/__init__.py +0 -0
  141. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/invoice_exports/convert_freight_invoices_step.py +0 -0
  142. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/invoice_exports/get_freight_invoices_step.py +0 -0
  143. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/invoice_exports/mark_invoices_exported_step.py +0 -0
  144. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/keyvu_export_step.py +0 -0
  145. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/pe_contract_export_step.py +0 -0
  146. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/pe_price_export_step.py +0 -0
  147. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/platform_science_order_sync_step.py +0 -0
  148. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/save_rawdata_to_disk.py +0 -0
  149. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/sftp_export_file_step.py +0 -0
  150. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/sftp_export_many_files_step.py +0 -0
  151. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/update_exported_orders_table_step.py +0 -0
  152. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/filter_step.py +0 -0
  153. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/get_latest_sync_date.py +0 -0
  154. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/importing/bbd_import_payroll_step.py +0 -0
  155. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/importing/download_azure_blobs_step.py +0 -0
  156. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/importing/get_order_numbers_to_export_step.py +0 -0
  157. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/importing/load_file_to_dataframe_step.py +0 -0
  158. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/importing/load_imap_attachment_step.py +0 -0
  159. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/importing/pe_bulk_sync_price_structure_step.py +0 -0
  160. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/importing/pe_price_merge_step.py +0 -0
  161. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/importing/sftp_file_config_step.py +0 -0
  162. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/importing/test_exact_file_match.py +0 -0
  163. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/importing/truefill_tank_readings_step.py +0 -0
  164. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/include_file_in_report_step.py +0 -0
  165. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/null_step.py +0 -0
  166. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/pe_integration_job_step.py +0 -0
  167. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/__init__.py +0 -0
  168. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/archive_azure_step.py +0 -0
  169. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/archive_gcs_step.py +0 -0
  170. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/archive_sftp_step.py +0 -0
  171. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/bbd_format_tank_readings_step.py +0 -0
  172. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/bbd_upload_prices_step.py +0 -0
  173. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/bbd_upload_tank_sales_step.py +0 -0
  174. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/bbd_upload_tankreading_step.py +0 -0
  175. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/convert_bbd_order_to_cargas_step.py +0 -0
  176. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/delete_sftp_step.py +0 -0
  177. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/dtn/__init__.py +0 -0
  178. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/dtn/convert_dtn_invoice_to_sd_model.py +0 -0
  179. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/dtn/parse_dtn_invoice_step.py +0 -0
  180. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/dtn/sync_and_push_allocations_step.py +0 -0
  181. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/file_config_parser_step.py +0 -0
  182. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/file_config_parser_step_v2.py +0 -0
  183. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/get_sd_price_price_request.py +0 -0
  184. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/keyvu_upload_deliveryplan_step.py +0 -0
  185. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/mark_orders_exported_in_bbd_step.py +0 -0
  186. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/pe_price_rows_processing_step.py +0 -0
  187. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/sd_upsert_directives_step.py +0 -0
  188. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/send_process_report_step.py +0 -0
  189. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/sftp_renamer_step.py +0 -0
  190. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/tank_reading_touchup_steps.py +0 -0
  191. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/upload_supplier_invoice_step.py +0 -0
  192. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/samsara/__init__.py +0 -0
  193. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/samsara/samsara_filter_changed_step.py +0 -0
  194. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/samsara/samsara_retrieve_drivers_step.py +0 -0
  195. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/samsara/samsara_retrieve_hos_data_step.py +0 -0
  196. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/samsara/samsara_transform_eld_step.py +0 -0
  197. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/samsara/samsara_upload_eld_step.py +0 -0
  198. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/send_attached_in_rita_email_step.py +0 -0
  199. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/send_rita_email_step.py +0 -0
  200. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/sleep_step.py +0 -0
  201. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/update_max_sync_context_step.py +0 -0
  202. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/wrappers/__init__.py +0 -0
  203. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/wrappers/distribution_report.py +0 -0
  204. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/wrappers/export_tank_readings.py +0 -0
  205. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/wrappers/freight_invoice_exports.py +0 -0
  206. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/wrappers/fuelquest_export.py +0 -0
  207. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/wrappers/import_tank_readings.py +0 -0
  208. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/wrappers/order_exports.py +0 -0
  209. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/wrappers/wrapper.py +0 -0
  210. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/protocols/__init__.py +0 -0
  211. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/protocols/flat_file.py +0 -0
  212. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/protocols/gofer.py +0 -0
  213. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/protocols/gravitate_client.py +0 -0
  214. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/protocols/pipelines.py +0 -0
  215. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/__init__.py +0 -0
  216. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/__init__.py +0 -0
  217. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/anova/__init__.py +0 -0
  218. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/anova/client.py +0 -0
  219. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/cargas/__init__.py +0 -0
  220. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/cargas/client.py +0 -0
  221. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/cargas/model.py +0 -0
  222. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/cargas/protocol.py +0 -0
  223. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/dtn/__init__.py +0 -0
  224. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/dtn/protocol.py +0 -0
  225. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/kachoolie/__init__.py +0 -0
  226. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/kachoolie/client.py +0 -0
  227. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/keyvu/__init__.py +0 -0
  228. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/keyvu/client.py +0 -0
  229. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/keyvu/model.py +0 -0
  230. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/macropoint/__init__.py +0 -0
  231. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/macropoint/client.py +0 -0
  232. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/macropoint/model.py +0 -0
  233. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/myfluiddata/client.py +0 -0
  234. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/mytankinfo/__init__.py +0 -0
  235. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/mytankinfo/client.py +0 -0
  236. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/pc_miler/__init__.py +0 -0
  237. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/pc_miler/client.py +0 -0
  238. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/pc_miler/model.py +0 -0
  239. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/pc_miler/web_services_apis.py +0 -0
  240. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/platform_science/__init__.py +0 -0
  241. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/platform_science/client.py +0 -0
  242. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/platform_science/model.py +0 -0
  243. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/quicktrip/__init__.py +0 -0
  244. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/quicktrip/client.py +0 -0
  245. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/samsara/__init__.py +0 -0
  246. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/samsara/client.py +0 -0
  247. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/samsara/model.py +0 -0
  248. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/telapoint/__init__.py +0 -0
  249. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/telapoint/client.py +0 -0
  250. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/telapoint/model.py +0 -0
  251. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/truefill/__init__.py +0 -0
  252. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/truefill/client.py +0 -0
  253. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/warren_rogers/__init__.py +0 -0
  254. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/warren_rogers/client.py +0 -0
  255. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/aws/__init__.py +0 -0
  256. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/aws/s3/__init__.py +0 -0
  257. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/aws/s3/client.py +0 -0
  258. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/ftp/__init__.py +0 -0
  259. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/ftp/model.py +0 -0
  260. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/imap/__init__.py +0 -0
  261. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/imap/client.py +0 -0
  262. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/imap/model.py +0 -0
  263. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/sqlserver/__init__.py +0 -0
  264. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/sqlserver/client.py +0 -0
  265. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/secrets/__init__.py +0 -0
  266. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/secrets/adapters.py +0 -0
  267. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/secrets/credential_models.py +0 -0
  268. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/secrets/factory.py +0 -0
  269. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/secrets/providers.py +0 -0
  270. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/shared/__init__.py +0 -0
  271. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/shared/exceptions.py +0 -0
  272. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/shared/model.py +0 -0
  273. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/shared/shared_enums.py +0 -0
  274. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/storage/README.md +0 -0
  275. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/storage/__init__.py +0 -0
  276. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/storage/aws/__init__.py +0 -0
  277. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/storage/aws/s3.py +0 -0
  278. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/storage/defaults.py +0 -0
  279. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/storage/gcs/__init__.py +0 -0
  280. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/storage/gcs/client.py +0 -0
  281. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/storage/gcsmanager/__init__.py +0 -0
  282. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/storage/gcsmanager/client.py +0 -0
  283. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/storage/setup.py +0 -0
  284. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/util/__init__.py +0 -0
  285. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/util/cache/__init__.py +0 -0
  286. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/util/cache/custom_ttl_cache.py +0 -0
  287. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/util/cache/protocol.py +0 -0
  288. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/util/config/__init__.py +0 -0
  289. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/util/config/model.py +0 -0
  290. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/util/exception_logger/__init__.py +0 -0
  291. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/util/exception_logger/exception_logger.py +0 -0
  292. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/util/exception_logger/test.py +0 -0
  293. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/util/utils.py +0 -0
  294. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/workers/__init__.py +0 -0
  295. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/workers/groups.py +0 -0
  296. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/workers/rpc_worker.py +0 -0
  297. {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/workers/topics.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bb-integrations-library
3
- Version: 4.3.0
3
+ Version: 4.3.2
4
4
  Summary: Provides common logic for all types of integration jobs.
5
5
  Author: Alejandro Jordan, Ben Allen, Nicholas De Nova, Kira Threlfall, David Skinner
6
6
  Author-email: Alejandro Jordan <ajordan@capspire.com>, Ben Allen <ben.allen@capspire.com>, Nicholas De Nova <nicholas.denova@gravitate.energy>, Kira Threlfall <kira.threlfall@gravitate.energy>, David Skinner <david.skinner@gravitate.energy>
@@ -96,13 +96,13 @@ class SDContract(BaseModel):
96
96
  if isinstance(value, list):
97
97
  return [serialize_value(v) for v in value]
98
98
  if isinstance(value, BaseModel):
99
- return value.model_dump(exclude_none=True)
99
+ return value.model_dump()
100
100
  return value
101
101
 
102
102
  return {
103
103
  **{
104
104
  key: serialize_value(value)
105
- for key, value in self.model_dump(exclude_none=True).items()
105
+ for key, value in self.model_dump().items()
106
106
  },
107
107
  "min": self._min_directive_volume,
108
108
  "max": self._max_directive_volume,
@@ -0,0 +1,94 @@
1
+ import posixpath
2
+ import uuid
3
+ from datetime import datetime, timedelta, timezone
4
+ from typing import Any
5
+
6
+ from loguru import logger
7
+
8
+ from bb_integrations_lib.protocols.pipelines import Step
9
+ from bb_integrations_lib.provider.ftp.client import FTPIntegrationClient
10
+
11
+
12
+ class SFTPArchiveAgedFilesStep(Step):
13
+ """Move files older than ``max_age`` from ``src_directory`` into ``archive_directory``.
14
+
15
+ Designed as a pipeline ``final_step`` so the sweep runs every cadence regardless of
16
+ whether upstream steps yielded any files.
17
+ """
18
+
19
+ def __init__(
20
+ self,
21
+ ftp_client: FTPIntegrationClient,
22
+ src_directory: str,
23
+ archive_directory: str,
24
+ max_age: timedelta = timedelta(days=14),
25
+ ensure_archive_dir: bool = True,
26
+ *args,
27
+ **kwargs,
28
+ ):
29
+ super().__init__(*args, **kwargs)
30
+ self.ftp_client = ftp_client
31
+ self.src_directory = src_directory
32
+ self.archive_directory = archive_directory
33
+ self.max_age = max_age
34
+ self.ensure_archive_dir = ensure_archive_dir
35
+
36
+ def describe(self) -> str:
37
+ return (
38
+ f"Archive files older than {self.max_age} from "
39
+ f"{self.src_directory} -> {self.archive_directory}"
40
+ )
41
+
42
+ def _archive_one(self, file_name: str) -> None:
43
+ old_path = posixpath.join(self.src_directory, file_name)
44
+ new_path = posixpath.join(self.archive_directory, file_name)
45
+ try:
46
+ logger.debug(f"Archiving {old_path} -> {new_path}")
47
+ self.ftp_client.rename_file(old_path, new_path)
48
+ return
49
+ except Exception:
50
+ logger.debug(f"Archive rename failed for {old_path}, retrying with unique name")
51
+ try:
52
+ unique = posixpath.join(
53
+ self.archive_directory, f"DUPLICATE_{uuid.uuid4()}_{file_name}"
54
+ )
55
+ self.ftp_client.rename_file(old_path, unique)
56
+ logger.debug(f"Archived (dedup) {old_path} -> {unique}")
57
+ except Exception:
58
+ logger.warning(
59
+ f"Archive backup also failed for {old_path}; deleting source to bound directory."
60
+ )
61
+ self.ftp_client.delete_file(old_path)
62
+
63
+ async def execute(self, i: Any = None) -> Any:
64
+ if self.ensure_archive_dir:
65
+ self.ftp_client.mkdir(self.archive_directory, exist_ok=True)
66
+
67
+ cutoff = datetime.now(tz=timezone.utc) - self.max_age
68
+ logger.info(
69
+ f"Scanning {self.src_directory} for files older than {self.max_age} "
70
+ f"(mtime <= {cutoff.isoformat()})"
71
+ )
72
+
73
+ file_names = list(self.ftp_client.list_files(self.src_directory))
74
+ archived = 0
75
+ skipped = 0
76
+ for file_name in file_names:
77
+ file_path = posixpath.join(self.src_directory, file_name)
78
+ info = self.ftp_client.get_file_info(file_path)
79
+ if not info.last_modification_time:
80
+ logger.debug(f"Skipping {file_name}: no server mtime available")
81
+ skipped += 1
82
+ continue
83
+ mtime = datetime.fromtimestamp(info.last_modification_time, tz=timezone.utc)
84
+ if mtime > cutoff:
85
+ skipped += 1
86
+ continue
87
+ self._archive_one(file_name)
88
+ archived += 1
89
+
90
+ logger.info(
91
+ f"Archive sweep complete: archived={archived}, kept={skipped}, "
92
+ f"scanned={len(file_names)}"
93
+ )
94
+ return i
@@ -4,6 +4,30 @@ from typing import Dict
4
4
  import httpx
5
5
  import pandas as pd
6
6
  from httpx import Response
7
+ from loguru import logger
8
+ from tenacity import AsyncRetrying, retry_if_exception, stop_after_attempt, wait_exponential
9
+
10
+
11
+ ALLOCATIONS_MAX_ATTEMPTS = 5
12
+ ALLOCATIONS_RETRY_STATUS = 421
13
+
14
+
15
+ def _is_retriable_allocation_error(exc: BaseException) -> bool:
16
+ # DTN intermittently returns 421 (Misdirected Request); retry those.
17
+ return (
18
+ isinstance(exc, httpx.HTTPStatusError)
19
+ and exc.response.status_code == ALLOCATIONS_RETRY_STATUS
20
+ )
21
+
22
+
23
+ def _log_allocation_retry(retry_state) -> None:
24
+ exc = retry_state.outcome.exception()
25
+ status = exc.response.status_code if isinstance(exc, httpx.HTTPStatusError) else "error"
26
+ wait = retry_state.next_action.sleep
27
+ logger.warning(
28
+ f"DTN /allocations returned {status}, retrying in {wait:.1f}s "
29
+ f"(attempt {retry_state.attempt_number} of {ALLOCATIONS_MAX_ATTEMPTS})"
30
+ )
7
31
 
8
32
 
9
33
  class DTNClient(httpx.AsyncClient):
@@ -21,7 +45,6 @@ class DTNClient(httpx.AsyncClient):
21
45
  self.api_key = api_key
22
46
  self.base_url = base_url.rstrip("/")
23
47
  self._base_url_str = base_url.rstrip("/")
24
- self.client = httpx.AsyncClient(timeout=180)
25
48
  self.timeout = httpx.Timeout(timeout, connect=60.0)
26
49
 
27
50
  def __repr__(self):
@@ -38,8 +61,26 @@ class DTNClient(httpx.AsyncClient):
38
61
 
39
62
  async def get_allocations(self) -> Response:
40
63
  url = "/allocations"
41
- res = await self.get(url=url, headers=self.custom_headers, timeout=self.timeout)
42
- res.raise_for_status()
64
+ try:
65
+ async for attempt in AsyncRetrying(
66
+ stop=stop_after_attempt(ALLOCATIONS_MAX_ATTEMPTS),
67
+ wait=wait_exponential(multiplier=2, min=2, max=30),
68
+ retry=retry_if_exception(_is_retriable_allocation_error),
69
+ before_sleep=_log_allocation_retry,
70
+ reraise=True,
71
+ ):
72
+ with attempt:
73
+ res = await self.get(
74
+ url=url, headers=self.custom_headers, timeout=self.timeout
75
+ )
76
+ res.raise_for_status()
77
+ except httpx.HTTPStatusError as exc:
78
+ if exc.response.status_code == ALLOCATIONS_RETRY_STATUS:
79
+ logger.error(
80
+ f"DTN /allocations still returning {ALLOCATIONS_RETRY_STATUS} "
81
+ f"after {ALLOCATIONS_MAX_ATTEMPTS} attempts; giving up."
82
+ )
83
+ raise
43
84
  return res
44
85
 
45
86
  async def get_data_in_group(self, url: str) -> Response:
@@ -129,6 +129,16 @@ class FTPIntegrationClient:
129
129
  """
130
130
  return self.interface.get_file_info(path)
131
131
 
132
+ def mkdir(self, path: str, exist_ok: bool = True) -> None:
133
+ """
134
+ Create a directory on the remote server.
135
+ :param path: The remote path of the directory to create.
136
+ :param exist_ok: If True (default), do not raise if the directory already exists.
137
+ :raises FileExistsError: If the directory already exists and ``exist_ok`` is False.
138
+ :raises NotImplementedError: For non-SFTP connections.
139
+ """
140
+ self.interface.mkdir(path, exist_ok=exist_ok)
141
+
132
142
  def download_dir(
133
143
  self, directory: str, filt: Callable[[str], bool] = None
134
144
  ) -> Iterable[RawData]:
@@ -48,6 +48,9 @@ class FTPClientInterface(ABC):
48
48
  def download_files(self, paths: Iterable[str]) -> Iterable[RawData]:
49
49
  raise NotImplementedError()
50
50
 
51
+ def mkdir(self, path: str, exist_ok: bool = True) -> None:
52
+ raise NotImplementedError()
53
+
51
54
  @staticmethod
52
55
  def reconnect_retry(func):
53
56
  def wrap(*args, **kwargs):
@@ -249,6 +252,17 @@ class SFTPClient(FTPClientInterface):
249
252
  last_modification_time=file_info.st_mtime,
250
253
  )
251
254
 
255
+ @FTPClientInterface.reconnect_retry
256
+ def mkdir(self, path: str, exist_ok: bool = True) -> None:
257
+ try:
258
+ self.sftp.stat(path)
259
+ except IOError:
260
+ logger.debug(f"Creating directory {path}")
261
+ self.sftp.mkdir(path)
262
+ return
263
+ if not exist_ok:
264
+ raise FileExistsError(f"Directory already exists: {path}")
265
+
252
266
 
253
267
  def get_ppk(path: str = "secrets/id_rsa") -> RSAKey:
254
268
  """
@@ -8,7 +8,7 @@ module-root = ""
8
8
 
9
9
  [project]
10
10
  name = "bb-integrations-library"
11
- version = "4.3.0"
11
+ version = "4.3.2"
12
12
  authors = [
13
13
  {name = "Alejandro Jordan", email = "ajordan@capspire.com"},
14
14
  {name = "Ben Allen", email = "ben.allen@capspire.com"},