csvpath 0.0.619__tar.gz → 0.0.621__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.
- {csvpath-0.0.619 → csvpath-0.0.621}/PKG-INFO +4 -3
- {csvpath-0.0.619 → csvpath-0.0.621}/README.md +1 -2
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/config/jenkins-local-gcs.ini +3 -3
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/config/jenkins-local-s3.ini +3 -3
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/csvpath.py +23 -12
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/csvpaths.py +4 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/files/file_describer.py +16 -10
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/files/file_manager.py +42 -11
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/files/file_registrar.py +4 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/otlp/otlp_results_listener.py +2 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/webhook/webhook_listener.py +1 -1
- csvpath-0.0.621/csvpath/managers/paths/paths_asset_manager.py +78 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/paths/paths_manager.py +71 -11
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/results/result_registrar.py +2 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/results/results_manager.py +31 -11
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/results/results_metadata.py +17 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/results/results_registrar.py +5 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/function_factory.py +4 -0
- csvpath-0.0.621/csvpath/matching/functions/json/jsonschema.py +123 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/misc/fingerprint.py +0 -3
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/strings/format.py +2 -2
- csvpath-0.0.621/csvpath/matching/functions/xml/xsd.py +143 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/modes/files_mode.py +5 -2
- csvpath-0.0.621/csvpath/references/csvpaths_reference_finder_3.py +754 -0
- csvpath-0.0.621/csvpath/references/files_reference_finder_3.py +1430 -0
- csvpath-0.0.621/csvpath/references/function_describer_3.py +104 -0
- csvpath-0.0.621/csvpath/references/functions/__init__.py +0 -0
- csvpath-0.0.621/csvpath/references/functions/fields/__init__.py +0 -0
- csvpath-0.0.621/csvpath/references/functions/fields/actual_data_file_3.py +25 -0
- csvpath-0.0.621/csvpath/references/functions/fields/archive_3.py +50 -0
- csvpath-0.0.621/csvpath/references/functions/fields/archive_path_3.py +31 -0
- csvpath-0.0.621/csvpath/references/functions/fields/completed_3.py +27 -0
- csvpath-0.0.621/csvpath/references/functions/fields/destination_address_3.py +28 -0
- csvpath-0.0.621/csvpath/references/functions/fields/destination_password_3.py +25 -0
- csvpath-0.0.621/csvpath/references/functions/fields/destination_port_3.py +24 -0
- csvpath-0.0.621/csvpath/references/functions/fields/destination_username_3.py +25 -0
- csvpath-0.0.621/csvpath/references/functions/fields/destinations_3.py +28 -0
- csvpath-0.0.621/csvpath/references/functions/fields/error_count_3.py +22 -0
- csvpath-0.0.621/csvpath/references/functions/fields/file_fingerprints_3.py +31 -0
- csvpath-0.0.621/csvpath/references/functions/fields/file_home_3.py +25 -0
- csvpath-0.0.621/csvpath/references/functions/fields/file_manifest_3.py +30 -0
- csvpath-0.0.621/csvpath/references/functions/fields/file_path_3.py +28 -0
- csvpath-0.0.621/csvpath/references/functions/fields/files_complete_3.py +28 -0
- csvpath-0.0.621/csvpath/references/functions/fields/fingerprint_3.py +78 -0
- csvpath-0.0.621/csvpath/references/functions/fields/group_file_3.py +22 -0
- csvpath-0.0.621/csvpath/references/functions/fields/group_home_3.py +26 -0
- csvpath-0.0.621/csvpath/references/functions/fields/group_manifest_3.py +25 -0
- csvpath-0.0.621/csvpath/references/functions/fields/home_3.py +38 -0
- csvpath-0.0.621/csvpath/references/functions/fields/host_3.py +45 -0
- csvpath-0.0.621/csvpath/references/functions/fields/hostname_3.py +34 -0
- csvpath-0.0.621/csvpath/references/functions/fields/identity_3.py +25 -0
- csvpath-0.0.621/csvpath/references/functions/fields/instance_home_3.py +28 -0
- csvpath-0.0.621/csvpath/references/functions/fields/instance_index_3.py +22 -0
- csvpath-0.0.621/csvpath/references/functions/fields/manifest_path_3.py +32 -0
- csvpath-0.0.621/csvpath/references/functions/fields/mark_3.py +26 -0
- csvpath-0.0.621/csvpath/references/functions/fields/method_3.py +16 -0
- csvpath-0.0.621/csvpath/references/functions/fields/named_file_fingerprint_3.py +27 -0
- csvpath-0.0.621/csvpath/references/functions/fields/named_file_home_3.py +25 -0
- csvpath-0.0.621/csvpath/references/functions/fields/named_file_last_change_3.py +25 -0
- csvpath-0.0.621/csvpath/references/functions/fields/named_file_name_3.py +37 -0
- csvpath-0.0.621/csvpath/references/functions/fields/named_file_path_3.py +23 -0
- csvpath-0.0.621/csvpath/references/functions/fields/named_file_size_3.py +24 -0
- csvpath-0.0.621/csvpath/references/functions/fields/named_file_uuid_3.py +23 -0
- csvpath-0.0.621/csvpath/references/functions/fields/named_files_root_3.py +28 -0
- csvpath-0.0.621/csvpath/references/functions/fields/named_paths_3.py +25 -0
- csvpath-0.0.621/csvpath/references/functions/fields/named_paths_count_3.py +24 -0
- csvpath-0.0.621/csvpath/references/functions/fields/named_paths_fingerprint_3.py +35 -0
- csvpath-0.0.621/csvpath/references/functions/fields/named_paths_group_3.py +28 -0
- csvpath-0.0.621/csvpath/references/functions/fields/named_paths_identities_3.py +25 -0
- csvpath-0.0.621/csvpath/references/functions/fields/named_paths_name_3.py +34 -0
- csvpath-0.0.621/csvpath/references/functions/fields/named_paths_root_3.py +28 -0
- csvpath-0.0.621/csvpath/references/functions/fields/named_paths_uuid_3.py +26 -0
- csvpath-0.0.621/csvpath/references/functions/fields/named_results_name_3.py +21 -0
- csvpath-0.0.621/csvpath/references/functions/fields/on_arrival_3.py +44 -0
- csvpath-0.0.621/csvpath/references/functions/fields/origin_3.py +37 -0
- csvpath-0.0.621/csvpath/references/functions/fields/origin_data_file_3.py +29 -0
- csvpath-0.0.621/csvpath/references/functions/fields/preceding_instance_identity_3.py +28 -0
- csvpath-0.0.621/csvpath/references/functions/fields/reference_field_3.py +29 -0
- csvpath-0.0.621/csvpath/references/functions/fields/run_dir_3.py +22 -0
- csvpath-0.0.621/csvpath/references/functions/fields/run_home_3.py +28 -0
- csvpath-0.0.621/csvpath/references/functions/fields/run_method_3.py +28 -0
- csvpath-0.0.621/csvpath/references/functions/fields/run_uuid_3.py +34 -0
- csvpath-0.0.621/csvpath/references/functions/fields/script_on_complete_all_3.py +30 -0
- csvpath-0.0.621/csvpath/references/functions/fields/script_on_complete_error_3.py +25 -0
- csvpath-0.0.621/csvpath/references/functions/fields/script_on_complete_invalid_3.py +25 -0
- csvpath-0.0.621/csvpath/references/functions/fields/script_on_complete_valid_3.py +25 -0
- csvpath-0.0.621/csvpath/references/functions/fields/scripts_3.py +27 -0
- csvpath-0.0.621/csvpath/references/functions/fields/serial_3.py +29 -0
- csvpath-0.0.621/csvpath/references/functions/fields/source_address_3.py +30 -0
- csvpath-0.0.621/csvpath/references/functions/fields/source_mode_preceding_3.py +19 -0
- csvpath-0.0.621/csvpath/references/functions/fields/source_password_3.py +24 -0
- csvpath-0.0.621/csvpath/references/functions/fields/source_port_3.py +24 -0
- csvpath-0.0.621/csvpath/references/functions/fields/source_username_3.py +24 -0
- csvpath-0.0.621/csvpath/references/functions/fields/sources_3.py +27 -0
- csvpath-0.0.621/csvpath/references/functions/fields/status_3.py +26 -0
- csvpath-0.0.621/csvpath/references/functions/fields/template_3.py +68 -0
- csvpath-0.0.621/csvpath/references/functions/fields/time_3.py +34 -0
- csvpath-0.0.621/csvpath/references/functions/fields/time_completed_3.py +33 -0
- csvpath-0.0.621/csvpath/references/functions/fields/transfer_on_complete_all_3.py +32 -0
- csvpath-0.0.621/csvpath/references/functions/fields/transfer_on_complete_error_3.py +29 -0
- csvpath-0.0.621/csvpath/references/functions/fields/transfer_on_complete_invalid_3.py +29 -0
- csvpath-0.0.621/csvpath/references/functions/fields/transfer_on_complete_valid_3.py +27 -0
- csvpath-0.0.621/csvpath/references/functions/fields/transfers_3.py +33 -0
- csvpath-0.0.621/csvpath/references/functions/fields/type_3.py +22 -0
- csvpath-0.0.621/csvpath/references/functions/fields/username_3.py +41 -0
- csvpath-0.0.621/csvpath/references/functions/fields/uuid_3.py +55 -0
- csvpath-0.0.621/csvpath/references/functions/fields/valid_3.py +33 -0
- csvpath-0.0.621/csvpath/references/functions/fields/webhooks_3.py +26 -0
- csvpath-0.0.621/csvpath/references/functions/fields/webhooks_on_complete_all_3.py +27 -0
- csvpath-0.0.621/csvpath/references/functions/fields/webhooks_on_complete_error_3.py +25 -0
- csvpath-0.0.621/csvpath/references/functions/fields/webhooks_on_complete_invalid_3.py +25 -0
- csvpath-0.0.621/csvpath/references/functions/fields/webhooks_on_complete_valid_3.py +25 -0
- csvpath-0.0.621/csvpath/references/functions/filters/__init__.py +0 -0
- csvpath-0.0.621/csvpath/references/functions/filters/empty_3.py +16 -0
- csvpath-0.0.621/csvpath/references/functions/filters/false_3.py +16 -0
- csvpath-0.0.621/csvpath/references/functions/filters/idchain_3.py +96 -0
- csvpath-0.0.621/csvpath/references/functions/filters/none_3.py +16 -0
- csvpath-0.0.621/csvpath/references/functions/filters/not_empty_3.py +16 -0
- csvpath-0.0.621/csvpath/references/functions/filters/not_none_3.py +21 -0
- csvpath-0.0.621/csvpath/references/functions/filters/predicate_function_3.py +22 -0
- csvpath-0.0.621/csvpath/references/functions/filters/true_3.py +29 -0
- csvpath-0.0.621/csvpath/references/functions/function_3.py +361 -0
- csvpath-0.0.621/csvpath/references/functions/reference_function_factory_3.py +347 -0
- csvpath-0.0.621/csvpath/references/functions/selectors/__init__.py +0 -0
- csvpath-0.0.621/csvpath/references/functions/selectors/all_3.py +39 -0
- csvpath-0.0.621/csvpath/references/functions/selectors/date_3.py +31 -0
- csvpath-0.0.621/csvpath/references/functions/selectors/first_3.py +19 -0
- csvpath-0.0.621/csvpath/references/functions/selectors/flatten_3.py +43 -0
- csvpath-0.0.621/csvpath/references/functions/selectors/from_3.py +68 -0
- csvpath-0.0.621/csvpath/references/functions/selectors/groups_3.py +41 -0
- csvpath-0.0.621/csvpath/references/functions/selectors/having_3.py +60 -0
- csvpath-0.0.621/csvpath/references/functions/selectors/index_3.py +25 -0
- csvpath-0.0.621/csvpath/references/functions/selectors/last_3.py +17 -0
- csvpath-0.0.621/csvpath/references/functions/selectors/name_3.py +71 -0
- csvpath-0.0.621/csvpath/references/functions/selectors/regex_3.py +92 -0
- csvpath-0.0.621/csvpath/references/functions/selectors/to_3.py +38 -0
- csvpath-0.0.621/csvpath/references/functions/values/__init__.py +0 -0
- csvpath-0.0.621/csvpath/references/functions/values/day_3.py +17 -0
- csvpath-0.0.621/csvpath/references/functions/values/day_name_3.py +17 -0
- csvpath-0.0.621/csvpath/references/functions/values/hour_24_3.py +18 -0
- csvpath-0.0.621/csvpath/references/functions/values/hour_3.py +19 -0
- csvpath-0.0.621/csvpath/references/functions/values/minute_3.py +17 -0
- csvpath-0.0.621/csvpath/references/functions/values/month_3.py +17 -0
- csvpath-0.0.621/csvpath/references/functions/values/month_name_3.py +17 -0
- csvpath-0.0.621/csvpath/references/functions/values/second_3.py +17 -0
- csvpath-0.0.621/csvpath/references/functions/values/today_3.py +23 -0
- csvpath-0.0.621/csvpath/references/functions/values/year_3.py +39 -0
- csvpath-0.0.621/csvpath/references/functions/values/yesterday_3.py +20 -0
- csvpath-0.0.621/csvpath/references/functions/well_known_files/__init__.py +0 -0
- csvpath-0.0.621/csvpath/references/functions/well_known_files/data_3.py +28 -0
- csvpath-0.0.621/csvpath/references/functions/well_known_files/definition_3.py +49 -0
- csvpath-0.0.621/csvpath/references/functions/well_known_files/errors_3.py +58 -0
- csvpath-0.0.621/csvpath/references/functions/well_known_files/file_3.py +45 -0
- csvpath-0.0.621/csvpath/references/functions/well_known_files/log_3.py +37 -0
- csvpath-0.0.621/csvpath/references/functions/well_known_files/manifest_3.py +65 -0
- csvpath-0.0.621/csvpath/references/functions/well_known_files/meta_3.py +27 -0
- csvpath-0.0.621/csvpath/references/functions/well_known_files/printouts_3.py +31 -0
- csvpath-0.0.621/csvpath/references/functions/well_known_files/unmatched_3.py +29 -0
- csvpath-0.0.621/csvpath/references/functions/well_known_files/vars_3.py +27 -0
- csvpath-0.0.621/csvpath/references/reference_3.py +598 -0
- csvpath-0.0.621/csvpath/references/reference_exceptions_3.py +37 -0
- csvpath-0.0.621/csvpath/references/reference_expression_3.py +382 -0
- csvpath-0.0.621/csvpath/references/reference_finder_3.py +874 -0
- csvpath-0.0.621/csvpath/references/reference_finder_factory_3.py +50 -0
- csvpath-0.0.621/csvpath/references/reference_grammar_3.py +199 -0
- csvpath-0.0.621/csvpath/references/reference_parser_3.py +112 -0
- csvpath-0.0.621/csvpath/references/reference_results_3.py +208 -0
- csvpath-0.0.621/csvpath/references/reference_transformer_3.py +267 -0
- csvpath-0.0.621/csvpath/references/results_reference_finder_3.py +1765 -0
- csvpath-0.0.621/csvpath/scanning/__init__.py +0 -0
- csvpath-0.0.621/csvpath/util/azure/azure_json_document_reader.py +8 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/cache.py +14 -9
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/config.py +24 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/file_readers.py +8 -7
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/file_writers.py +1 -1
- csvpath-0.0.621/csvpath/util/gcs/gcs_json_document_reader.py +8 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/json/json_data_reader.py +1 -5
- csvpath-0.0.621/csvpath/util/json/json_document_reader.py +38 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/json/json_reader_helper.py +28 -8
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/last_line_stats.py +6 -2
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/line_counter.py +6 -3
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/line_monitor.py +3 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/line_spooler.py +93 -8
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/nos.py +6 -2
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/path_util.py +5 -1
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/run_home_maker.py +1 -0
- csvpath-0.0.621/csvpath/util/s3/s3_json_document_reader.py +8 -0
- csvpath-0.0.621/csvpath/util/sftp/sftp_json_document_reader.py +8 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/sftp/sftp_nos.py +5 -3
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/var_utility.py +1 -1
- {csvpath-0.0.619 → csvpath-0.0.621}/pyproject.toml +3 -1
- {csvpath-0.0.619 → csvpath-0.0.621}/LICENSE +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/.DS_Store +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/config/config.ini +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/config/extra-functions.imports +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/config/function.imports +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/config/jenkins-local-azure.ini +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/config/jenkins-local-filesystem-mysql.ini +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/config/jenkins-local-sftp.ini +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/config/jenkins-windows-azure.ini +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/config/jenkins-windows-gcs.ini +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/config/jenkins-windows-local.ini +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/config/jenkins-windows-s3.ini +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/config/jenkins-windows-sftp.ini +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/.DS_Store +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/Mac.goenvironment.json +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/Windows.goenvironment.json +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/mac/azure-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/mac/azure.sh +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/mac/gcs.sh +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/mac/google-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/mac/local-pipeline.gopipeline copy.json +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/mac/local.sh +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/mac/s3-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/mac/s3.sh +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/mac/sftp-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/mac/sftp.sh +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/windows/azure.bat +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/windows/gcs.bat +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/windows/local.bat +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/windows/s3.bat +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/windows/sftp.bat +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/windows/windows-azure.gopipeline.json +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/windows/windows-gcs.gopipeline.json +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/windows/windows-local.gopipeline.json +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/windows/windows-s3.gopipeline.json +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/gocd/windows/windows-sftp.gopipeline.json +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/integrations/.DS_Store +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/integrations/sftpplus/handle_auto_arrival.bat +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/integrations/sftpplus/handle_auto_arrival.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/integrations/sftpplus/handle_auto_arrival.sh +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/integrations/sftpplus/handle_mailbox_arrival.bat +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/integrations/sftpplus/handle_mailbox_arrival.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/integrations/sftpplus/handle_mailbox_arrival.sh +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/integrations/sqlite/csvpath +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/integrations/sqlite/schema.sql +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/libs/release_candidate_maker-0.0.25-py3-none-any.whl +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/libs/release_candidate_maker-0.0.27-py3-none-any.whl +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/libs/release_candidate_maker-0.0.28-py3-none-any.whl +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/libs/release_candidate_maker-0.0.29-py3-none-any.whl +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/libs/release_candidate_maker-0.0.30.tar.gz +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/libs/release_candidate_maker-0.0.31.tar.gz +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/libs/release_candidate_maker-0.0.33.tar.gz +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/libs/release_candidate_maker-0.0.34.tar.gz +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/libs/release_candidate_maker-0.0.35.tar.gz +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/assets/libs/release_candidate_maker-0.0.36.tar.gz +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/config/config.ini +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/config/env.json +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/__init__.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/cli/__init__.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/cli/asker.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/cli/cli.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/cli/const.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/cli/debug_config.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/cli/drill_down.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/cli/function_describer.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/cli/function_lister.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/cli/selecter.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/__init__.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/errors/error.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/errors/error_collector.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/errors/error_comms.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/errors/error_manager.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/files/file_activator.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/files/file_descriptor.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/files/file_metadata.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/files/file_names_rules.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/files/files_activation_listener.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/files/files_listener.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/files/lines_and_headers_cacher.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/ckan/ckan.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/ckan/ckan_listener.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/ckan/datafile.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/ckan/dataset.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/ol/event.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/ol/event_result.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/ol/file_listener_ol.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/ol/job.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/ol/ol_listener.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/ol/paths_listener_ol.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/ol/result_listener_ol.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/ol/results_listener_ol.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/ol/run.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/ol/run_listener_ol.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/ol/run_state.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/ol/sender.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/otlp/error_metrics.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/otlp/metrics.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/otlp/otlp_error_listener.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/otlp/otlp_file_listener.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/otlp/otlp_listener.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/otlp/otlp_paths_listener.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/otlp/otlp_result_listener.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/scripts/scripts_results_listener.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/sftp/sftp_sender.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/slack/event.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/slack/sender.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/sql/engine.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/sql/sql_file_listener.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/sql/sql_listener.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/sql/sql_paths_listener.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/sql/sql_result_listener.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/sql/sql_results_listener.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/sql/tables.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/sql/updates.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/sqlite/schema.sql +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/sqlite/sqlite_result_listener.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/sqlite/sqlite_results_listener.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/webhook/webhook_results_listener.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/listener.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/metadata.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/paths/paths_describer.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/paths/paths_descriptor.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/paths/paths_listener.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/paths/paths_metadata.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/paths/paths_registrar.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/registrar.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/results/readers/file_errors_reader.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/results/readers/file_lines_reader.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/results/readers/file_printouts_reader.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/results/readers/file_unmatched_reader.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/results/readers/readers.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/results/result.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/results/result_file_reader.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/results/result_metadata.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/results/result_serializer.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/results/transfers_manager.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/run/run_listener_stdout.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/run/run_metadata.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/run/run_registrar.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/server_config.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/test_listener.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/__init__.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/__init__.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/args.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/args_helper.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/boolean/all.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/boolean/andf.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/boolean/any.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/boolean/between.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/boolean/empty.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/boolean/exists.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/boolean/inf.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/boolean/no.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/boolean/notf.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/boolean/orf.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/boolean/yes.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/counting/count.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/counting/count_bytes.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/counting/count_headers.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/counting/count_lines.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/counting/count_scans.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/counting/counter.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/counting/every.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/counting/has_matches.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/counting/increment.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/counting/tally.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/counting/total_lines.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/dates/now.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/dates/part.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/dates/roll.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/function.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/function_finder.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/function_focus.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/headers/append.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/headers/collect.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/headers/empty_stack.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/headers/end.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/headers/header_name.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/headers/header_names_mismatch.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/headers/headers.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/headers/headers_stack.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/headers/insert.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/headers/line_before.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/headers/mismatch.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/headers/remove.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/headers/rename.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/headers/replace.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/headers/reset_headers.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/json/jsonpath.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/lines/advance.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/lines/after_blank.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/lines/dups.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/lines/first.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/lines/first_line.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/lines/last.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/lines/stop.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/math/above.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/math/add.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/math/divide.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/math/equals.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/math/intf.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/math/mod.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/math/multiply.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/math/odd.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/math/round.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/math/subtotal.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/math/subtract.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/math/sum.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/misc/env.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/misc/importf.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/misc/metadata.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/misc/parquet.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/misc/random.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/misc/runtime.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/print/jinjaf.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/print/print_line.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/print/print_queue.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/print/printf.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/print/table.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/sql/select.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/sql/sql_in.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/stats/minf.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/stats/nminmax.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/stats/percent.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/stats/percent_unique.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/stats/stdev.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/strings/alter.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/strings/caps.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/strings/concat.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/strings/contains.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/strings/length.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/strings/lower.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/strings/metaphone.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/strings/regex.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/strings/starts_with.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/strings/strip.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/strings/substring.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/strings/upper.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/testing/debug.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/types/__init__.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/types/blank.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/types/boolean.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/types/datatype.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/types/datef.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/types/decimal.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/types/email.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/types/nonef.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/types/string.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/types/type.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/types/url.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/types/uuid.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/types/wildcard.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/validity/fail.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/validity/failed.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/validity/line.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/validity/matches.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/validity/percent_matching.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/variables/clear.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/variables/get.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/variables/index_of.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/variables/pushpop.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/variables/put.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/variables/slice.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/variables/sort.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/variables/track.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/variables/variables.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/functions/xml/xpath.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/lark_parser.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/lark_transformer.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/matcher.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/productions/__init__.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/productions/equality.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/productions/expression.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/productions/header.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/productions/matchable.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/productions/qualified.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/productions/reference.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/productions/term.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/productions/variable.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/util/exceptions.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/util/expression_encoder.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/util/expression_utility.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/util/lark_print_parser.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/util/parquet_utility.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/util/print_parser.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/matching/util/runtime_data_collector.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/modes/error_mode.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/modes/explain_mode.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/modes/logic_mode.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/modes/mode_controller.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/modes/print_mode.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/modes/return_mode.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/modes/run_mode.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/modes/source_mode.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/modes/transfer_mode.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/modes/unmatched_mode.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/modes/validation_mode.py +0 -0
- {csvpath-0.0.619/csvpath/scanning → csvpath-0.0.621/csvpath/references}/__init__.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/scanning/scanner2.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/scanning/scanner2_parser.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/scanning/scanner2_transformer.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/azure/azure_data_reader.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/azure/azure_data_writer.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/azure/azure_fingerprinter.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/azure/azure_json_data_reader.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/azure/azure_nos.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/azure/azure_timing_policy.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/azure/azure_utils.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/azure/azure_xlsx_data_reader.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/backend_check.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/box.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/caser.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/class_loader.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/code.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/config_env.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/config_exception.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/date_util.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/exceptions.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/file_info.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/file_utility.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/gcs/gcs_data_reader.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/gcs/gcs_data_writer.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/gcs/gcs_fingerprinter.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/gcs/gcs_json_data_reader.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/gcs/gcs_nos.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/gcs/gcs_utils.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/gcs/gcs_xlsx_data_reader.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/hasher.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/http/http_data_reader.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/intermediary.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/log_utility.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/metadata_parser.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/pandas_data_reader.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/printer.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/py_file_utility.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/references/files_reference_finder_2.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/references/files_tools/fingerprint_finder.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/references/files_tools/range_finder.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/references/ref_utils.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/references/reference_exceptions.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/references/reference_grammar.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/references/reference_manifest_entry_finder.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/references/reference_parser.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/references/reference_results.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/references/reference_transformer.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/references/results_reference_finder_2.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/references/results_tools/data_finder.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/references/results_tools/date_filter.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/references/results_tools/identity_finder.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/references/results_tools/path_filter.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/references/results_tools/resolve_possibles.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/references/results_tools/token_filters.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/references/results_tools/yesterday_or_today_translator.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/references/tools/date_completer.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/referrer_printer.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/s3/s3_data_reader.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/s3/s3_data_writer.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/s3/s3_fingerprinter.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/s3/s3_json_data_reader.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/s3/s3_nos.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/s3/s3_utils.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/s3/s3_xlsx_data_reader.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/sftp/sftp_config.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/sftp/sftp_data_reader.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/sftp/sftp_data_writer.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/sftp/sftp_fingerprinter.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/sftp/sftp_json_data_reader.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/sftp/sftp_server_creds.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/sftp/sftp_walk.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/sftp/sftp_xlsx_data_reader.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/sqliter.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/stopwatch.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/template_util.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/xlsx/xlsx_data_reader.py +0 -0
- {csvpath-0.0.619 → csvpath-0.0.621}/csvpath/util/xlsx/xlsx_reader_helper.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: csvpath
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.621
|
|
4
4
|
Summary: CsvPath Framework is a data preboarding automation library for receiving, validating, and tracking CSV, Excel, JSONL and other tabular data files before they can corrupt downstream data consumers.
|
|
5
5
|
License-File: LICENSE
|
|
6
6
|
Author: David Kershaw
|
|
@@ -33,6 +33,7 @@ Requires-Dist: jinja2 (==3.1.6)
|
|
|
33
33
|
Requires-Dist: jsonlines (==4.0.0)
|
|
34
34
|
Requires-Dist: jsonpath-ng (==1.8.0)
|
|
35
35
|
Requires-Dist: jsonpickle (==4.1.1)
|
|
36
|
+
Requires-Dist: jsonschema (>=4.26.0,<5.0.0)
|
|
36
37
|
Requires-Dist: lark (==1.3.1)
|
|
37
38
|
Requires-Dist: lxml (==6.0.2)
|
|
38
39
|
Requires-Dist: marquez-python (==0.50.0)
|
|
@@ -59,6 +60,7 @@ Requires-Dist: smart-open[all] (==7.5.1)
|
|
|
59
60
|
Requires-Dist: sqlalchemy (==2.0.48)
|
|
60
61
|
Requires-Dist: tabulate (==0.9.0)
|
|
61
62
|
Requires-Dist: validators (==0.34.0)
|
|
63
|
+
Requires-Dist: xmlschema (>=4.3.2,<5.0.0)
|
|
62
64
|
Project-URL: Csvpath.org, https://www.csvpath.org
|
|
63
65
|
Project-URL: Github, https://github.com/csvpath/csvpath.git
|
|
64
66
|
Description-Content-Type: text/markdown
|
|
@@ -113,8 +115,7 @@ If you need help getting started, there are lots of ways to reach us.
|
|
|
113
115
|
- Email support@csvpath.org
|
|
114
116
|
- Or reach out to one of our [sponsors, below](#sponsors).
|
|
115
117
|
|
|
116
|
-
   [](https://pepy.tech/projects/csvpath)
|
|
118
119
|
|
|
119
120
|
# Contents
|
|
120
121
|
|
|
@@ -48,8 +48,7 @@ If you need help getting started, there are lots of ways to reach us.
|
|
|
48
48
|
- Email support@csvpath.org
|
|
49
49
|
- Or reach out to one of our [sponsors, below](#sponsors).
|
|
50
50
|
|
|
51
|
-
   [](https://pepy.tech/projects/csvpath)
|
|
53
52
|
|
|
54
53
|
# Contents
|
|
55
54
|
|
|
@@ -31,7 +31,7 @@ path = cache
|
|
|
31
31
|
use_cache = no
|
|
32
32
|
|
|
33
33
|
[functions]
|
|
34
|
-
imports =
|
|
34
|
+
imports =
|
|
35
35
|
|
|
36
36
|
[results]
|
|
37
37
|
archive = tmp/gcs/archive
|
|
@@ -91,7 +91,7 @@ port = SFTPPLUS_PORT
|
|
|
91
91
|
admin_username = SFTPPLUS_ADMIN_USERNAME
|
|
92
92
|
admin_password = SFTPPLUS_ADMIN_PASSWORD
|
|
93
93
|
api_url = https://. . . :10020/json
|
|
94
|
-
scripts_dir =
|
|
94
|
+
scripts_dir =
|
|
95
95
|
execute_timeout = 300
|
|
96
96
|
|
|
97
97
|
[ckan]
|
|
@@ -106,5 +106,5 @@ timeout = 5
|
|
|
106
106
|
verify = False
|
|
107
107
|
|
|
108
108
|
[slack]
|
|
109
|
-
webhook_url =
|
|
109
|
+
webhook_url =
|
|
110
110
|
|
|
@@ -31,7 +31,7 @@ path = cache
|
|
|
31
31
|
use_cache = no
|
|
32
32
|
|
|
33
33
|
[functions]
|
|
34
|
-
imports =
|
|
34
|
+
imports =
|
|
35
35
|
|
|
36
36
|
[results]
|
|
37
37
|
archive = tmp/s3/archive
|
|
@@ -91,7 +91,7 @@ port = SFTPPLUS_PORT
|
|
|
91
91
|
admin_username = SFTPPLUS_ADMIN_USERNAME
|
|
92
92
|
admin_password = SFTPPLUS_ADMIN_PASSWORD
|
|
93
93
|
api_url = https://. . . :10020/json
|
|
94
|
-
scripts_dir =
|
|
94
|
+
scripts_dir =
|
|
95
95
|
execute_timeout = 300
|
|
96
96
|
|
|
97
97
|
[ckan]
|
|
@@ -106,5 +106,5 @@ timeout = 5
|
|
|
106
106
|
verify = False
|
|
107
107
|
|
|
108
108
|
[slack]
|
|
109
|
-
webhook_url =
|
|
109
|
+
webhook_url =
|
|
110
110
|
|
|
@@ -1163,6 +1163,13 @@ class CsvPath(ErrorCollector, Printer): # pylint: disable=R0902, R0904
|
|
|
1163
1163
|
lines = []
|
|
1164
1164
|
self.lines = ListLineSpooler(lines=lines)
|
|
1165
1165
|
for _ in self.next():
|
|
1166
|
+
if _ is None:
|
|
1167
|
+
raise ValueError("Next line cannot be None")
|
|
1168
|
+
#
|
|
1169
|
+
# the line can be a non list if it is not CSV data
|
|
1170
|
+
#
|
|
1171
|
+
elif not isinstance(_, (list, tuple)):
|
|
1172
|
+
_ = [_]
|
|
1166
1173
|
_ = _[:]
|
|
1167
1174
|
self.lines.append(_)
|
|
1168
1175
|
if nexts == -1:
|
|
@@ -1311,22 +1318,26 @@ class CsvPath(ErrorCollector, Printer): # pylint: disable=R0902, R0904
|
|
|
1311
1318
|
raise FileException("There is no filename")
|
|
1312
1319
|
#
|
|
1313
1320
|
# DataFileReader is abstract. instantiating it results in a concrete subclass.
|
|
1314
|
-
#
|
|
1315
|
-
# otoh, is this a bad way to do it? it works fine.
|
|
1321
|
+
# ideally we use it as a context mgr.
|
|
1316
1322
|
#
|
|
1323
|
+
"""
|
|
1317
1324
|
reader = DataFileReader( # pylint: disable=E0110
|
|
1318
1325
|
self.scanner.filename, delimiter=self.delimiter, quotechar=self.quotechar
|
|
1319
1326
|
)
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1327
|
+
"""
|
|
1328
|
+
with DataFileReader(
|
|
1329
|
+
self.scanner.filename, delimiter=self.delimiter, quotechar=self.quotechar
|
|
1330
|
+
) as reader:
|
|
1331
|
+
for line in reader.next():
|
|
1332
|
+
self.track_line(line=line)
|
|
1333
|
+
#
|
|
1334
|
+
# some formats embed headers in each line. JSONL headers are the dict keys in
|
|
1335
|
+
# each line that uses a dict
|
|
1336
|
+
#
|
|
1337
|
+
if reader.updates_headers:
|
|
1338
|
+
_ = reader.current_headers
|
|
1339
|
+
self.headers = self.headers if _ is None else _
|
|
1340
|
+
yield line
|
|
1330
1341
|
self.finalize()
|
|
1331
1342
|
|
|
1332
1343
|
def finalize(self) -> None:
|
|
@@ -867,6 +867,7 @@ Cache: {cache}
|
|
|
867
867
|
file=file,
|
|
868
868
|
run_uuid=run_uuid,
|
|
869
869
|
method="collect_paths",
|
|
870
|
+
template=template,
|
|
870
871
|
extra_data=extra_data,
|
|
871
872
|
)
|
|
872
873
|
#
|
|
@@ -1038,6 +1039,7 @@ Cache: {cache}
|
|
|
1038
1039
|
filename=filename,
|
|
1039
1040
|
run_uuid=run_uuid,
|
|
1040
1041
|
method="fast_forward_paths",
|
|
1042
|
+
template=template,
|
|
1041
1043
|
extra_data=extra_data,
|
|
1042
1044
|
)
|
|
1043
1045
|
#
|
|
@@ -1157,6 +1159,7 @@ Cache: {cache}
|
|
|
1157
1159
|
filename=filename,
|
|
1158
1160
|
run_uuid=run_uuid,
|
|
1159
1161
|
method="next_paths",
|
|
1162
|
+
template=template,
|
|
1160
1163
|
extra_data=extra_data,
|
|
1161
1164
|
)
|
|
1162
1165
|
#
|
|
@@ -1652,6 +1655,7 @@ Cache: {cache}
|
|
|
1652
1655
|
filename=filename,
|
|
1653
1656
|
run_uuid=run_uuid,
|
|
1654
1657
|
method="next_paths",
|
|
1658
|
+
template=template,
|
|
1655
1659
|
extra_data=extra_data,
|
|
1656
1660
|
)
|
|
1657
1661
|
#
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import json
|
|
2
|
+
import traceback
|
|
2
3
|
from typing import NewType
|
|
3
4
|
|
|
4
5
|
from csvpath.util.nos import Nos
|
|
@@ -57,16 +58,21 @@ class NamedFileDescriber:
|
|
|
57
58
|
home = self.file_manager.named_file_home(name)
|
|
58
59
|
path = Nos(home).join(self.JSON_FILE)
|
|
59
60
|
nos = Nos(path)
|
|
60
|
-
if nos.exists() is
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
61
|
+
if nos.exists() is True:
|
|
62
|
+
with DataFileReader(path) as file:
|
|
63
|
+
try:
|
|
64
|
+
return json.load(file.source)
|
|
65
|
+
except Exception:
|
|
66
|
+
msg = "Error getting named-file discriptor JSON for {name}: {ex}"
|
|
67
|
+
self.file_manager.csvpaths.logger.error(msg)
|
|
68
|
+
msg = traceback.format_exc()
|
|
69
|
+
self.file_manager.csvpaths.logger.debug(msg)
|
|
70
|
+
#
|
|
71
|
+
# cannot return None (today; << explain?) and we definitely should not
|
|
72
|
+
# create+save a new json file. (<< reasoning?) returning None may be
|
|
73
|
+
# better (<< why?) but for today this works.
|
|
74
|
+
#
|
|
75
|
+
return {}
|
|
70
76
|
|
|
71
77
|
# ========== Templates ============
|
|
72
78
|
|
|
@@ -57,7 +57,6 @@ class FileManager:
|
|
|
57
57
|
|
|
58
58
|
@property
|
|
59
59
|
def csvpaths(self):
|
|
60
|
-
"""@private"""
|
|
61
60
|
return self._csvpaths
|
|
62
61
|
|
|
63
62
|
#
|
|
@@ -65,7 +64,6 @@ class FileManager:
|
|
|
65
64
|
#
|
|
66
65
|
@property
|
|
67
66
|
def named_files_dir(self) -> str:
|
|
68
|
-
"""@private"""
|
|
69
67
|
return self._csvpaths.config.inputs_files_path
|
|
70
68
|
|
|
71
69
|
#
|
|
@@ -75,7 +73,6 @@ class FileManager:
|
|
|
75
73
|
#
|
|
76
74
|
@property
|
|
77
75
|
def files_root_manifest(self) -> dict:
|
|
78
|
-
"""@private"""
|
|
79
76
|
p = self.files_root_manifest_path
|
|
80
77
|
nos = Nos(p)
|
|
81
78
|
if nos.exists():
|
|
@@ -85,7 +82,6 @@ class FileManager:
|
|
|
85
82
|
|
|
86
83
|
@property
|
|
87
84
|
def files_root_manifest_path(self) -> dict:
|
|
88
|
-
"""@private"""
|
|
89
85
|
return Nos(self.named_files_dir).join("manifest.json")
|
|
90
86
|
|
|
91
87
|
def _named_file_ref_to_uuid(self, ref: ReferenceParser) -> str:
|
|
@@ -203,6 +199,31 @@ class FileManager:
|
|
|
203
199
|
return _["reference"]
|
|
204
200
|
return None
|
|
205
201
|
|
|
202
|
+
@property
|
|
203
|
+
def files_root_manifest_path(self) -> str:
|
|
204
|
+
"""@private"""
|
|
205
|
+
r = self.csvpaths.config.get(section="inputs", name="files")
|
|
206
|
+
p = Nos(r).join("manifest.json")
|
|
207
|
+
nos = Nos(r)
|
|
208
|
+
if not nos.dir_exists():
|
|
209
|
+
nos.makedirs()
|
|
210
|
+
nos.path = p
|
|
211
|
+
if not nos.exists():
|
|
212
|
+
with DataFileWriter(path=p) as file:
|
|
213
|
+
file.write("[]")
|
|
214
|
+
return p
|
|
215
|
+
|
|
216
|
+
@property
|
|
217
|
+
def files_root_manifest(self) -> list:
|
|
218
|
+
"""the Named-File Arrivals Manifest -- a single global ledger
|
|
219
|
+
tracking every named-file arrival across every name, distinct
|
|
220
|
+
from get_manifest()'s per-name manifest. mirrors PathsManager's
|
|
221
|
+
paths_root_manifest. used by FilesReferenceFinder3 to resolve
|
|
222
|
+
"*" root_major references (bare :manifest(), optionally with a
|
|
223
|
+
pointer to select one entry by ordinal)."""
|
|
224
|
+
with DataFileReader(self.files_root_manifest_path) as reader:
|
|
225
|
+
return json.load(reader.source)
|
|
226
|
+
|
|
206
227
|
def get_manifest(self, name: NamedFileName) -> json:
|
|
207
228
|
if name is None:
|
|
208
229
|
raise ValueError("Paths name cannot be None")
|
|
@@ -523,6 +544,7 @@ class FileManager:
|
|
|
523
544
|
recurse=True,
|
|
524
545
|
regex: str = None,
|
|
525
546
|
) -> list[str]:
|
|
547
|
+
self.csvpaths.logger.info("Starting add_named_files_from_dir for: %s", dirname)
|
|
526
548
|
ret = []
|
|
527
549
|
#
|
|
528
550
|
# legal_name check handled at add_named_file
|
|
@@ -546,6 +568,9 @@ class FileManager:
|
|
|
546
568
|
if regex is not None:
|
|
547
569
|
m = re.search(regex, p)
|
|
548
570
|
if not m:
|
|
571
|
+
self.csvpaths.logger.info(
|
|
572
|
+
"Skipping file: %s doesn't match %s", p, regex
|
|
573
|
+
)
|
|
549
574
|
continue
|
|
550
575
|
#
|
|
551
576
|
#
|
|
@@ -564,6 +589,7 @@ class FileManager:
|
|
|
564
589
|
# this should be consistent across backends, if ever not, fix it there, not here.
|
|
565
590
|
#
|
|
566
591
|
ref = self.add_named_file(name=n, path=p, template=template)
|
|
592
|
+
self.csvpaths.logger.info("add_named_files_from_dir added: %s", ref)
|
|
567
593
|
if ref is not None:
|
|
568
594
|
ret.append(ref)
|
|
569
595
|
else:
|
|
@@ -713,7 +739,6 @@ class FileManager:
|
|
|
713
739
|
http = str(http).strip().lower() in ["on", "yes", "true"]
|
|
714
740
|
local = config.get(section="inputs", name="allow_local_files", default=False)
|
|
715
741
|
local = str(local).strip().lower() in ["on", "yes", "true"]
|
|
716
|
-
nos = Nos(path)
|
|
717
742
|
self.csvpaths.logger.info(
|
|
718
743
|
"Adding named file %s: checking permission, if needed, to register local and http files",
|
|
719
744
|
name,
|
|
@@ -723,6 +748,7 @@ class FileManager:
|
|
|
723
748
|
# no. the project may be controlled by a context like FlightPath Server, where
|
|
724
749
|
# the user cannot just override certain settings.
|
|
725
750
|
#
|
|
751
|
+
nos = Nos(path)
|
|
726
752
|
if nos.is_http and http is not True:
|
|
727
753
|
_ = {
|
|
728
754
|
"name": name,
|
|
@@ -784,12 +810,10 @@ class FileManager:
|
|
|
784
810
|
#
|
|
785
811
|
config = self.describer.get_config(name)
|
|
786
812
|
servers = config.sources
|
|
813
|
+
self.csvpaths.logger.debug(
|
|
814
|
+
"Adding named file. Available server configs: %s", servers
|
|
815
|
+
)
|
|
787
816
|
nos.server_config = servers
|
|
788
|
-
#
|
|
789
|
-
# for _ in servers:
|
|
790
|
-
# if _.matches(nos.path):
|
|
791
|
-
# nos.do._config = SftpConfig(_)
|
|
792
|
-
#
|
|
793
817
|
isfile = nos.is_http or nos.isfile()
|
|
794
818
|
self.csvpaths.logger.debug(
|
|
795
819
|
"Adding named file %s: path %s is a file? %s", name, path, isfile
|
|
@@ -813,6 +837,7 @@ class FileManager:
|
|
|
813
837
|
# create folder tree in inputs/named_files/name/filename
|
|
814
838
|
#
|
|
815
839
|
home = self.assure_file_home(name, path, template)
|
|
840
|
+
self.csvpaths.logger.debug("File home is %s", home)
|
|
816
841
|
file_home = home
|
|
817
842
|
mark = None
|
|
818
843
|
#
|
|
@@ -828,6 +853,7 @@ class FileManager:
|
|
|
828
853
|
if pm > -1:
|
|
829
854
|
mark = path[pm + 1 :]
|
|
830
855
|
path = path[0:pm]
|
|
856
|
+
self.csvpaths.logger.debug("File path, mark: %s, %s", path, mark)
|
|
831
857
|
#
|
|
832
858
|
# we're registering with a mark, so we need to be Xlsx and have a tab with that name.
|
|
833
859
|
#
|
|
@@ -944,7 +970,7 @@ class FileManager:
|
|
|
944
970
|
mdata.template = data.get("template") or ""
|
|
945
971
|
mdata.uuid_string = data.get("registration_uuid")
|
|
946
972
|
mdata.status = "Registration failed"
|
|
947
|
-
self.csvpaths.logger.
|
|
973
|
+
self.csvpaths.logger.warning(
|
|
948
974
|
"[%s] Registration failed for %s", mdata.named_file_name, data
|
|
949
975
|
)
|
|
950
976
|
lst.metadata_update(mdata)
|
|
@@ -980,6 +1006,9 @@ class FileManager:
|
|
|
980
1006
|
copy = pathu.parts(path)[0] == pathu.parts(home)[0]
|
|
981
1007
|
copy = copy and nos.is_local
|
|
982
1008
|
if copy:
|
|
1009
|
+
self.csvpaths.logger.debug(
|
|
1010
|
+
"Above nos copy: path: %s, name: %s, temp: %s", path, name, temp
|
|
1011
|
+
)
|
|
983
1012
|
nos.path = path
|
|
984
1013
|
config = self.describer.get_config(name)
|
|
985
1014
|
servers = config.sources
|
|
@@ -1016,6 +1045,7 @@ class FileManager:
|
|
|
1016
1045
|
#
|
|
1017
1046
|
nos = Nos(path)
|
|
1018
1047
|
if nos.is_sftp:
|
|
1048
|
+
self.csvpaths.logger.debug("Doing copy_down with sftp path %s", path)
|
|
1019
1049
|
reader = DataFileReader(path)
|
|
1020
1050
|
#
|
|
1021
1051
|
# adding config to the reader allows the reader to look to the config
|
|
@@ -1032,6 +1062,7 @@ class FileManager:
|
|
|
1032
1062
|
with DataFileWriter(path=temp, mode=mode) as writer:
|
|
1033
1063
|
writer.write(lines)
|
|
1034
1064
|
else:
|
|
1065
|
+
self.csvpaths.logger.debug("Doing copy_down with non-sftp path %s", path)
|
|
1035
1066
|
with DataFileReader(path) as reader:
|
|
1036
1067
|
with DataFileWriter(path=temp, mode=mode) as writer:
|
|
1037
1068
|
for line in reader.next_raw():
|
|
@@ -131,6 +131,10 @@ class FileRegistrar(Registrar, Listener):
|
|
|
131
131
|
if mark is not None:
|
|
132
132
|
mani["mark"] = mark
|
|
133
133
|
mani["template"] = mdata.template or ""
|
|
134
|
+
mani["manifest_path"] = manifest_path
|
|
135
|
+
mani["file_name"] = mdata.file_name
|
|
136
|
+
mani["username"] = mdata.username
|
|
137
|
+
mani["hostname"] = mdata.hostname
|
|
134
138
|
jdata = self.get_manifest(manifest_path)
|
|
135
139
|
jdata.append(mani)
|
|
136
140
|
self.intermediary.put_json(manifest_path, jdata)
|
{csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/otlp/otlp_results_listener.py
RENAMED
|
@@ -60,4 +60,6 @@ class OpenTelemetryResultsListener(OtlpListener):
|
|
|
60
60
|
cmeta["time_completed"] = mdata.time_completed_string
|
|
61
61
|
if mdata.named_paths_uuid_string:
|
|
62
62
|
cmeta["named_paths_uuid_string"] = mdata.named_paths_uuid_string
|
|
63
|
+
if mdata.named_paths_fingerprint:
|
|
64
|
+
cmeta["named_paths_fingerprint"] = mdata.named_paths_fingerprint
|
|
63
65
|
return cmeta
|
{csvpath-0.0.619 → csvpath-0.0.621}/csvpath/managers/integrations/webhook/webhook_listener.py
RENAMED
|
@@ -128,7 +128,7 @@ class WebhookListener(Listener, threading.Thread):
|
|
|
128
128
|
url=url, payload=payload, headers=headers, timeout=self.timeout
|
|
129
129
|
)
|
|
130
130
|
# x = requests.post(url, json=payload, headers=headers, timeout=self.timeout)
|
|
131
|
-
if x and x.status_code
|
|
131
|
+
if x and x.status_code >= 200 and x.status_code < 300:
|
|
132
132
|
if self.csvpaths is not None:
|
|
133
133
|
self.csvpaths.logger.warning(
|
|
134
134
|
"WebhookListener received status code %s from %s",
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
from typing import NewType
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
from csvpath.util.nos import Nos
|
|
5
|
+
from csvpath.util.file_writers import DataFileWriter
|
|
6
|
+
from csvpath.util.file_readers import DataFileReader
|
|
7
|
+
from csvpath.util.references.reference_parser import ReferenceParser
|
|
8
|
+
|
|
9
|
+
NamedPathsName = NewType("NamedPathsName", str)
|
|
10
|
+
|
|
11
|
+
#
|
|
12
|
+
# TODO: scripts should be handled as assets, not config. move here
|
|
13
|
+
# from the describer.
|
|
14
|
+
#
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class PathsAssetManager:
|
|
18
|
+
ASSETS = "assets"
|
|
19
|
+
|
|
20
|
+
def __init__(self, paths_manager) -> None:
|
|
21
|
+
self.paths_manager = paths_manager
|
|
22
|
+
|
|
23
|
+
def _name_for_name(self, name: NamedPathsName) -> str:
|
|
24
|
+
if name.startswith("$"):
|
|
25
|
+
ref = ReferenceParser(name, csvpaths=self.paths_manager.csvpaths)
|
|
26
|
+
return ref.root_major
|
|
27
|
+
return name
|
|
28
|
+
|
|
29
|
+
def assets_dir_path(self, name: NamedPathsName) -> str:
|
|
30
|
+
name = self._name_for_name(name)
|
|
31
|
+
if not self.paths_manager.has_named_paths(name):
|
|
32
|
+
raise ValueError(f"No such named-paths group: {name}")
|
|
33
|
+
home = self.paths_manager.named_paths_home(name)
|
|
34
|
+
return Nos(home).join(self.ASSETS)
|
|
35
|
+
|
|
36
|
+
def assure_assets_dir(self, name: NamedPathsName) -> None:
|
|
37
|
+
p = self.assets_dir_path
|
|
38
|
+
nos = Nos(p)
|
|
39
|
+
if not nos.direxists():
|
|
40
|
+
Nos(p).makedirs()
|
|
41
|
+
|
|
42
|
+
def make_asset_file_path(self, name: NamedPathsName, filename: str) -> str:
|
|
43
|
+
path = self.assets_dir_path(name)
|
|
44
|
+
if not Nos(path).dir_exists():
|
|
45
|
+
Nos(path).makedirs()
|
|
46
|
+
path = Nos(path).join(filename)
|
|
47
|
+
return path
|
|
48
|
+
|
|
49
|
+
def store_asset_file(
|
|
50
|
+
self,
|
|
51
|
+
*,
|
|
52
|
+
name: NamedPathsName,
|
|
53
|
+
filename: str,
|
|
54
|
+
contents: str,
|
|
55
|
+
mode: str = "w",
|
|
56
|
+
overwrite: bool = True,
|
|
57
|
+
) -> None:
|
|
58
|
+
path = self.make_asset_file_path(name, filename)
|
|
59
|
+
if overwrite is False and Nos(path).exists():
|
|
60
|
+
raise ValueError(f"Cannot overwrite {path}")
|
|
61
|
+
with DataFileWriter(path=path, mode=mode) as writer:
|
|
62
|
+
writer.write(contents)
|
|
63
|
+
|
|
64
|
+
def get_asset_file(self, name: NamedPathsName, filename: str) -> None:
|
|
65
|
+
path = self.make_asset_file_path(name, filename)
|
|
66
|
+
if not Nos(path).exists():
|
|
67
|
+
return None
|
|
68
|
+
with DataFileReader(path=path) as reader:
|
|
69
|
+
return reader.read()
|
|
70
|
+
|
|
71
|
+
def delete_asset_file(self, name: NamedPathsName, filename: str) -> None:
|
|
72
|
+
path = self.make_asset_file_path(name, filename)
|
|
73
|
+
if Nos(path).exists():
|
|
74
|
+
return Nos(path).remove()
|
|
75
|
+
|
|
76
|
+
def list_asset_files(self, name: NamedPathsName) -> None:
|
|
77
|
+
path = self.assets_dir_path(name)
|
|
78
|
+
return Nos(path).listdir(files_only=True)
|
|
@@ -13,6 +13,7 @@ from csvpath.util.nos import Nos
|
|
|
13
13
|
from .paths_registrar import PathsRegistrar
|
|
14
14
|
from .paths_metadata import PathsMetadata
|
|
15
15
|
from .paths_describer import NamedPathsDescriber
|
|
16
|
+
from .paths_asset_manager import PathsAssetManager
|
|
16
17
|
from csvpath.util.template_util import TemplateUtility as temu
|
|
17
18
|
from csvpath.matching.util.expression_utility import ExpressionUtility as expu
|
|
18
19
|
|
|
@@ -51,6 +52,17 @@ class PathsManager:
|
|
|
51
52
|
def describer(self) -> NamedPathsDescriber:
|
|
52
53
|
return NamedPathsDescriber(self)
|
|
53
54
|
|
|
55
|
+
@property
|
|
56
|
+
def asset_manager(self) -> PathsAssetManager:
|
|
57
|
+
return PathsAssetManager(self)
|
|
58
|
+
|
|
59
|
+
@property
|
|
60
|
+
def registrar(self) -> PathsRegistrar:
|
|
61
|
+
"""@private"""
|
|
62
|
+
if self._registrar is None:
|
|
63
|
+
self._registrar = PathsRegistrar(self.csvpaths)
|
|
64
|
+
return self._registrar
|
|
65
|
+
|
|
54
66
|
@property
|
|
55
67
|
def last_add_metadata(self) -> PathsMetadata:
|
|
56
68
|
#
|
|
@@ -115,18 +127,9 @@ class PathsManager:
|
|
|
115
127
|
# home = os.path.join(home, "manifest.json")
|
|
116
128
|
return self.registrar.get_manifest(home)
|
|
117
129
|
|
|
118
|
-
@property
|
|
119
|
-
def registrar(self) -> PathsRegistrar:
|
|
120
|
-
"""@private"""
|
|
121
|
-
if self._registrar is None:
|
|
122
|
-
self._registrar = PathsRegistrar(self.csvpaths)
|
|
123
|
-
return self._registrar
|
|
124
|
-
|
|
125
130
|
def named_paths_home(self, name: NamedPathsName) -> str:
|
|
126
131
|
"""@private"""
|
|
127
132
|
home = Nos(self.named_paths_dir).join(name)
|
|
128
|
-
# home = os.path.join(self.named_paths_dir, name)
|
|
129
|
-
# nos = self.nos
|
|
130
133
|
nos = Nos(home)
|
|
131
134
|
b = nos.dir_exists()
|
|
132
135
|
if not b:
|
|
@@ -148,7 +151,6 @@ class PathsManager:
|
|
|
148
151
|
|
|
149
152
|
path = self.named_paths_home(name)
|
|
150
153
|
path = Nos(path).join("manifest.json")
|
|
151
|
-
# nos = self.nos
|
|
152
154
|
nos = Nos(path)
|
|
153
155
|
if nos.exists():
|
|
154
156
|
with DataFileReader(path) as reader:
|
|
@@ -156,6 +158,39 @@ class PathsManager:
|
|
|
156
158
|
return m[len(m) - 1]["uuid"]
|
|
157
159
|
raise ValueError(f"No manifest for path named {name}")
|
|
158
160
|
|
|
161
|
+
def get_fingerprint_for_name(self, name: NamedPathsName) -> str:
|
|
162
|
+
"""@private -- the most recently registered version's own
|
|
163
|
+
content fingerprint for named-paths group `name` (the group's
|
|
164
|
+
own group.csvpaths text, not any run's copy of it) -- mirrors
|
|
165
|
+
get_named_paths_uuid's own name/reference resolution exactly,
|
|
166
|
+
just returning "fingerprint" instead of "uuid" off the same last
|
|
167
|
+
manifest entry. Used by ResultsRegistrar to record which
|
|
168
|
+
named-paths CONTENT drove a run (Results Run Manifest's own
|
|
169
|
+
named_paths_fingerprint field), distinct from named_paths_uuid,
|
|
170
|
+
which only records the group version's registration identity --
|
|
171
|
+
two groups loaded from identical group.csvpaths text under
|
|
172
|
+
different names get different uuids but identical fingerprints."""
|
|
173
|
+
if name is None:
|
|
174
|
+
raise ValueError("Paths name cannot be None")
|
|
175
|
+
if name.find("#") > -1:
|
|
176
|
+
name = name[0 : name.find("#")]
|
|
177
|
+
if name.startswith("$"):
|
|
178
|
+
ref = ReferenceParser(name, csvpaths=self.csvpaths)
|
|
179
|
+
if ref.datatype != ReferenceParser.CSVPATHS:
|
|
180
|
+
raise ValueError(
|
|
181
|
+
"Must be a reference of type {ReferenceParser.CSVPATHS}"
|
|
182
|
+
)
|
|
183
|
+
name = ref.root_major
|
|
184
|
+
|
|
185
|
+
path = self.named_paths_home(name)
|
|
186
|
+
path = Nos(path).join("manifest.json")
|
|
187
|
+
nos = Nos(path)
|
|
188
|
+
if nos.exists():
|
|
189
|
+
with DataFileReader(path) as reader:
|
|
190
|
+
m = json.load(reader.source)
|
|
191
|
+
return m[len(m) - 1]["fingerprint"]
|
|
192
|
+
raise ValueError(f"No manifest for path named {name}")
|
|
193
|
+
|
|
159
194
|
@property
|
|
160
195
|
def named_paths_dir(self) -> str:
|
|
161
196
|
"""@private"""
|
|
@@ -592,6 +627,10 @@ class PathsManager:
|
|
|
592
627
|
####################################################
|
|
593
628
|
|
|
594
629
|
def store_json_paths_file(self, name: NamedPathsName, jsonpath: str) -> None:
|
|
630
|
+
#
|
|
631
|
+
# this method stores the definition.json file. it is not general purpose
|
|
632
|
+
# for any other json files
|
|
633
|
+
#
|
|
595
634
|
if name is None:
|
|
596
635
|
raise ValueError("Name cannot be None")
|
|
597
636
|
if name.startswith("$"):
|
|
@@ -702,7 +741,7 @@ class PathsManager:
|
|
|
702
741
|
return self.total_named_paths()
|
|
703
742
|
|
|
704
743
|
#
|
|
705
|
-
#
|
|
744
|
+
# ==============================
|
|
706
745
|
#
|
|
707
746
|
|
|
708
747
|
def _get_named_paths(self, name: NamedPathsName) -> list[Csvpath]:
|
|
@@ -764,9 +803,30 @@ class PathsManager:
|
|
|
764
803
|
return temp
|
|
765
804
|
|
|
766
805
|
def _group_file_path(self, name: NamedPathsName) -> str:
|
|
806
|
+
#
|
|
807
|
+
# TODO: note that in principle name could be a reference. should we allow
|
|
808
|
+
# that? We would just check for '$' and use ReferenceParser.
|
|
809
|
+
#
|
|
767
810
|
temp = Nos(self.named_paths_home(name)).join("group.csvpaths")
|
|
768
811
|
return temp
|
|
769
812
|
|
|
813
|
+
def group_file_path(self, name: NamedPathsName) -> str:
|
|
814
|
+
#
|
|
815
|
+
# supports references as well as names
|
|
816
|
+
#
|
|
817
|
+
if name is None:
|
|
818
|
+
raise ValueError("Name cannot be None")
|
|
819
|
+
name = str(name).strip()
|
|
820
|
+
if len(name) == 0:
|
|
821
|
+
raise ValueError("Name cannot be length 0")
|
|
822
|
+
if name[0] == "$":
|
|
823
|
+
name = ReferenceParser(name, csvpaths=self.csvpaths).root_major
|
|
824
|
+
#
|
|
825
|
+
# TODO: future state references v3 can return * or a function. that might
|
|
826
|
+
# not be supported (quite reasonably) but it would be a legal root_major.
|
|
827
|
+
#
|
|
828
|
+
return self._group_file_path(name)
|
|
829
|
+
|
|
770
830
|
def _get_csvpaths_from_file(self, file_path: str) -> list[Csvpath]:
|
|
771
831
|
if self.can_load(file_path) is not True:
|
|
772
832
|
return []
|
|
@@ -148,6 +148,8 @@ class ResultRegistrar(Registrar, Listener):
|
|
|
148
148
|
m["number_of_files_generated"] = mdata.number_of_files_generated
|
|
149
149
|
m["valid"] = mdata.valid if mdata.valid is not None else ""
|
|
150
150
|
m["completed"] = mdata.completed
|
|
151
|
+
m["error_count"] = mdata.error_count
|
|
152
|
+
m["method"] = mdata.method
|
|
151
153
|
m["source_mode_preceding"] = mdata.source_mode_preceding
|
|
152
154
|
if mdata.source_mode_preceding:
|
|
153
155
|
m["preceding_instance_identity"] = mdata.preceding_instance_identity
|