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.
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/PKG-INFO +1 -1
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/sd/directive_upsert.py +2 -2
- bb_integrations_library-4.3.2/bb_integrations_lib/pipelines/steps/processing/sftp_archive_aged_files_step.py +94 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/dtn/client.py +44 -3
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/ftp/client.py +10 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/ftp/interface.py +14 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/pyproject.toml +1 -1
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/README.md +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/converters/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/base_api.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/model.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/pe_api.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/rita_api.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/sd_adapter.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/sd_api.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/testing/TTE/sd/models.py +0 -0
- {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
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/testing/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/testing/builder.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/testing/openapi.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/gravitate/testing/util.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/mappers/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/mappers/prices/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/mappers/prices/model.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/mappers/prices/price_mapper.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/mappers/prices/protocol.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/mappers/prices/util.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/mappers/rita_mapper.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/dtn_supplier_invoice.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/enums.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/fuelquest/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/fuelquest/delivery.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/fuelquest/delivery_plan_converter.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/fuelquest/invoice.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/fuelquest/shared.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/jagged_csv.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/pe/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/pe/common.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/pe/contracts.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/pe/counterparty_extract.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/pe/location_extract.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/pe/product_extract.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/pipeline_structs.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/probe/probe_event.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/probe/request_data.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/probe/resume_token.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/allocation_management.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/audit.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/auth.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/bucket.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/config.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/constants.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/crossrefs.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/crossroads_entities.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/crossroads_mapping.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/crossroads_monitoring.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/crossroads_network.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/crossroads_rules.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/email.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/gofer.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/integrations.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/issue.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/mapping.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/monitoring.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/probe.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/reference_data.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/sd_messages.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/source_system.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/rita/workers.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/sd/bols_and_drops.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/sd/counterparty_upsert.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/sd/get_order.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/sd/location_upsert.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/sd/orders.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/sd/product_upsert.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/sd_api.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/bbd_export_parser_utils.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/circlek_reading_parser.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/distribution_report/__init__.py +0 -0
- {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
- {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
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/dtn/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/dtn/dtn_price_parser.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/dtn/model.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/marathon_carrier_reading_parser.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/pdi_order_parser.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/price_engine/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/qde/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/qde/model.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/qde/qde_directive_parser.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/reduced_reading_parser.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/standard_reading_parser.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/tank_reading_parser.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/parsers/tank_sales_parser.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/shared/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/shared/allocation_matcher/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/shared/allocation_matcher/matcher.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/shared/allocation_matcher/matching_utils.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/shared/allocation_matcher/model.py +0 -0
- {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
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/bbd_resolve_alerts_step.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/create_accessorials_step.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/distribution_report/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/echo_step.py +0 -0
- {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
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/fuelquest/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/invoice_exports/__init__.py +0 -0
- {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
- {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
- {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
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/exporting/keyvu_export_step.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/filter_step.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/get_latest_sync_date.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/null_step.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/pe_integration_job_step.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/archive_azure_step.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/archive_gcs_step.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/archive_sftp_step.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/delete_sftp_step.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/dtn/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/processing/sftp_renamer_step.py +0 -0
- {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
- {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
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/samsara/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/send_rita_email_step.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/steps/sleep_step.py +0 -0
- {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
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/wrappers/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/wrappers/distribution_report.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/wrappers/export_tank_readings.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/wrappers/freight_invoice_exports.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/wrappers/fuelquest_export.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/wrappers/import_tank_readings.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/wrappers/order_exports.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/pipelines/wrappers/wrapper.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/protocols/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/protocols/flat_file.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/protocols/gofer.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/protocols/gravitate_client.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/protocols/pipelines.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/anova/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/anova/client.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/cargas/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/cargas/client.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/cargas/model.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/cargas/protocol.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/dtn/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/dtn/protocol.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/kachoolie/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/kachoolie/client.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/keyvu/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/keyvu/client.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/keyvu/model.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/macropoint/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/macropoint/client.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/macropoint/model.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/myfluiddata/client.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/mytankinfo/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/mytankinfo/client.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/pc_miler/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/pc_miler/client.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/pc_miler/model.py +0 -0
- {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
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/platform_science/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/platform_science/client.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/platform_science/model.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/quicktrip/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/quicktrip/client.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/samsara/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/samsara/client.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/samsara/model.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/telapoint/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/telapoint/client.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/telapoint/model.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/truefill/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/truefill/client.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/warren_rogers/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/api/warren_rogers/client.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/aws/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/aws/s3/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/aws/s3/client.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/ftp/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/ftp/model.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/imap/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/imap/client.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/imap/model.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/sqlserver/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/provider/sqlserver/client.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/secrets/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/secrets/adapters.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/secrets/credential_models.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/secrets/factory.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/secrets/providers.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/shared/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/shared/exceptions.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/shared/model.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/shared/shared_enums.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/storage/README.md +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/storage/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/storage/aws/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/storage/aws/s3.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/storage/defaults.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/storage/gcs/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/storage/gcs/client.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/storage/gcsmanager/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/storage/gcsmanager/client.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/storage/setup.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/util/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/util/cache/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/util/cache/custom_ttl_cache.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/util/cache/protocol.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/util/config/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/util/config/model.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/util/exception_logger/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/util/exception_logger/exception_logger.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/util/exception_logger/test.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/util/utils.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/workers/__init__.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/workers/groups.py +0 -0
- {bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/workers/rpc_worker.py +0 -0
- {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.
|
|
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(
|
|
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(
|
|
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
|
-
|
|
42
|
-
|
|
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
|
"""
|
|
File without changes
|
{bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/enums.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bb_integrations_library-4.3.0 → bb_integrations_library-4.3.2}/bb_integrations_lib/models/sd_api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|