csvpath 0.0.620__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.620 → csvpath-0.0.621}/PKG-INFO +3 -1
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/config/jenkins-local-gcs.ini +3 -3
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/config/jenkins-local-s3.ini +3 -3
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/csvpath.py +23 -12
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/csvpaths.py +4 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/files/file_manager.py +41 -6
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/files/file_registrar.py +4 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/otlp/otlp_results_listener.py +2 -0
- csvpath-0.0.621/csvpath/managers/paths/paths_asset_manager.py +78 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/paths/paths_manager.py +71 -11
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/results/result_registrar.py +2 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/results/results_manager.py +31 -11
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/results/results_metadata.py +17 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/results/results_registrar.py +5 -0
- {csvpath-0.0.620 → 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.620 → csvpath-0.0.621}/csvpath/matching/functions/misc/fingerprint.py +0 -3
- csvpath-0.0.621/csvpath/matching/functions/xml/xsd.py +143 -0
- {csvpath-0.0.620 → 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.620 → csvpath-0.0.621}/csvpath/util/cache.py +14 -9
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/config.py +24 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/file_readers.py +8 -7
- {csvpath-0.0.620 → 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.620 → 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.620 → csvpath-0.0.621}/csvpath/util/json/json_reader_helper.py +28 -8
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/last_line_stats.py +6 -2
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/line_counter.py +6 -3
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/line_monitor.py +3 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/line_spooler.py +93 -8
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/nos.py +6 -2
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/path_util.py +5 -1
- {csvpath-0.0.620 → 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.620 → csvpath-0.0.621}/csvpath/util/sftp/sftp_nos.py +5 -3
- {csvpath-0.0.620 → csvpath-0.0.621}/pyproject.toml +3 -1
- {csvpath-0.0.620 → csvpath-0.0.621}/LICENSE +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/README.md +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/.DS_Store +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/config/config.ini +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/config/extra-functions.imports +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/config/function.imports +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/config/jenkins-local-azure.ini +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/config/jenkins-local-filesystem-mysql.ini +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/config/jenkins-local-sftp.ini +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/config/jenkins-windows-azure.ini +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/config/jenkins-windows-gcs.ini +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/config/jenkins-windows-local.ini +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/config/jenkins-windows-s3.ini +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/config/jenkins-windows-sftp.ini +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/.DS_Store +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/Mac.goenvironment.json +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/Windows.goenvironment.json +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/mac/azure-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/mac/azure.sh +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/mac/gcs.sh +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/mac/google-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/mac/local-pipeline.gopipeline copy.json +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/mac/local.sh +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/mac/s3-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/mac/s3.sh +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/mac/sftp-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/mac/sftp.sh +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/windows/azure.bat +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/windows/gcs.bat +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/windows/local.bat +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/windows/s3.bat +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/windows/sftp.bat +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/windows/windows-azure.gopipeline.json +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/windows/windows-gcs.gopipeline.json +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/windows/windows-local.gopipeline.json +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/windows/windows-s3.gopipeline.json +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/gocd/windows/windows-sftp.gopipeline.json +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/integrations/.DS_Store +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/integrations/sftpplus/handle_auto_arrival.bat +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/integrations/sftpplus/handle_auto_arrival.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/integrations/sftpplus/handle_auto_arrival.sh +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/integrations/sftpplus/handle_mailbox_arrival.bat +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/integrations/sftpplus/handle_mailbox_arrival.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/integrations/sftpplus/handle_mailbox_arrival.sh +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/integrations/sqlite/csvpath +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/integrations/sqlite/schema.sql +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/libs/release_candidate_maker-0.0.25-py3-none-any.whl +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/libs/release_candidate_maker-0.0.27-py3-none-any.whl +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/libs/release_candidate_maker-0.0.28-py3-none-any.whl +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/libs/release_candidate_maker-0.0.29-py3-none-any.whl +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/libs/release_candidate_maker-0.0.30.tar.gz +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/libs/release_candidate_maker-0.0.31.tar.gz +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/libs/release_candidate_maker-0.0.33.tar.gz +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/libs/release_candidate_maker-0.0.34.tar.gz +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/libs/release_candidate_maker-0.0.35.tar.gz +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/assets/libs/release_candidate_maker-0.0.36.tar.gz +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/config/config.ini +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/config/env.json +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/__init__.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/cli/__init__.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/cli/asker.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/cli/cli.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/cli/const.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/cli/debug_config.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/cli/drill_down.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/cli/function_describer.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/cli/function_lister.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/cli/selecter.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/__init__.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/errors/error.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/errors/error_collector.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/errors/error_comms.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/errors/error_manager.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/files/file_activator.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/files/file_describer.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/files/file_descriptor.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/files/file_metadata.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/files/file_names_rules.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/files/files_activation_listener.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/files/files_listener.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/files/lines_and_headers_cacher.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/ckan/ckan.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/ckan/ckan_listener.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/ckan/datafile.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/ckan/dataset.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/ol/event.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/ol/event_result.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/ol/file_listener_ol.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/ol/job.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/ol/ol_listener.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/ol/paths_listener_ol.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/ol/result_listener_ol.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/ol/results_listener_ol.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/ol/run.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/ol/run_listener_ol.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/ol/run_state.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/ol/sender.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/otlp/error_metrics.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/otlp/metrics.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/otlp/otlp_error_listener.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/otlp/otlp_file_listener.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/otlp/otlp_listener.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/otlp/otlp_paths_listener.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/otlp/otlp_result_listener.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/scripts/scripts_results_listener.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/sftp/sftp_sender.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/slack/event.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/slack/sender.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/sql/engine.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/sql/sql_file_listener.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/sql/sql_listener.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/sql/sql_paths_listener.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/sql/sql_result_listener.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/sql/sql_results_listener.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/sql/tables.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/sql/updates.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/sqlite/schema.sql +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/sqlite/sqlite_result_listener.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/sqlite/sqlite_results_listener.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/webhook/webhook_listener.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/integrations/webhook/webhook_results_listener.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/listener.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/metadata.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/paths/paths_describer.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/paths/paths_descriptor.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/paths/paths_listener.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/paths/paths_metadata.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/paths/paths_registrar.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/registrar.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/results/readers/file_errors_reader.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/results/readers/file_lines_reader.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/results/readers/file_printouts_reader.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/results/readers/file_unmatched_reader.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/results/readers/readers.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/results/result.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/results/result_file_reader.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/results/result_metadata.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/results/result_serializer.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/results/transfers_manager.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/run/run_listener_stdout.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/run/run_metadata.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/run/run_registrar.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/server_config.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/managers/test_listener.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/__init__.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/__init__.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/args.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/args_helper.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/boolean/all.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/boolean/andf.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/boolean/any.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/boolean/between.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/boolean/empty.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/boolean/exists.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/boolean/inf.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/boolean/no.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/boolean/notf.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/boolean/orf.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/boolean/yes.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/counting/count.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/counting/count_bytes.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/counting/count_headers.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/counting/count_lines.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/counting/count_scans.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/counting/counter.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/counting/every.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/counting/has_matches.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/counting/increment.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/counting/tally.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/counting/total_lines.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/dates/now.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/dates/part.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/dates/roll.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/function.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/function_finder.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/function_focus.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/headers/append.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/headers/collect.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/headers/empty_stack.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/headers/end.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/headers/header_name.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/headers/header_names_mismatch.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/headers/headers.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/headers/headers_stack.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/headers/insert.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/headers/line_before.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/headers/mismatch.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/headers/remove.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/headers/rename.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/headers/replace.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/headers/reset_headers.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/json/jsonpath.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/lines/advance.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/lines/after_blank.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/lines/dups.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/lines/first.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/lines/first_line.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/lines/last.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/lines/stop.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/math/above.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/math/add.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/math/divide.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/math/equals.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/math/intf.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/math/mod.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/math/multiply.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/math/odd.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/math/round.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/math/subtotal.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/math/subtract.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/math/sum.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/misc/env.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/misc/importf.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/misc/metadata.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/misc/parquet.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/misc/random.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/misc/runtime.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/print/jinjaf.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/print/print_line.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/print/print_queue.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/print/printf.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/print/table.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/sql/select.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/sql/sql_in.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/stats/minf.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/stats/nminmax.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/stats/percent.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/stats/percent_unique.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/stats/stdev.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/strings/alter.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/strings/caps.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/strings/concat.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/strings/contains.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/strings/format.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/strings/length.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/strings/lower.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/strings/metaphone.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/strings/regex.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/strings/starts_with.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/strings/strip.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/strings/substring.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/strings/upper.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/testing/debug.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/types/__init__.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/types/blank.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/types/boolean.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/types/datatype.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/types/datef.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/types/decimal.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/types/email.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/types/nonef.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/types/string.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/types/type.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/types/url.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/types/uuid.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/types/wildcard.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/validity/fail.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/validity/failed.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/validity/line.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/validity/matches.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/validity/percent_matching.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/variables/clear.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/variables/get.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/variables/index_of.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/variables/pushpop.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/variables/put.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/variables/slice.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/variables/sort.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/variables/track.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/variables/variables.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/functions/xml/xpath.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/lark_parser.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/lark_transformer.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/matcher.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/productions/__init__.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/productions/equality.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/productions/expression.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/productions/header.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/productions/matchable.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/productions/qualified.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/productions/reference.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/productions/term.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/productions/variable.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/util/exceptions.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/util/expression_encoder.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/util/expression_utility.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/util/lark_print_parser.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/util/parquet_utility.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/util/print_parser.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/matching/util/runtime_data_collector.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/modes/error_mode.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/modes/explain_mode.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/modes/logic_mode.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/modes/mode_controller.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/modes/print_mode.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/modes/return_mode.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/modes/run_mode.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/modes/source_mode.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/modes/transfer_mode.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/modes/unmatched_mode.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/modes/validation_mode.py +0 -0
- {csvpath-0.0.620/csvpath/scanning → csvpath-0.0.621/csvpath/references}/__init__.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/scanning/scanner2.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/scanning/scanner2_parser.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/scanning/scanner2_transformer.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/azure/azure_data_reader.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/azure/azure_data_writer.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/azure/azure_fingerprinter.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/azure/azure_json_data_reader.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/azure/azure_nos.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/azure/azure_timing_policy.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/azure/azure_utils.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/azure/azure_xlsx_data_reader.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/backend_check.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/box.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/caser.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/class_loader.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/code.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/config_env.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/config_exception.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/date_util.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/exceptions.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/file_info.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/file_utility.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/gcs/gcs_data_reader.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/gcs/gcs_data_writer.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/gcs/gcs_fingerprinter.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/gcs/gcs_json_data_reader.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/gcs/gcs_nos.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/gcs/gcs_utils.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/gcs/gcs_xlsx_data_reader.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/hasher.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/http/http_data_reader.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/intermediary.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/log_utility.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/metadata_parser.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/pandas_data_reader.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/printer.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/py_file_utility.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/references/files_reference_finder_2.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/references/files_tools/fingerprint_finder.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/references/files_tools/range_finder.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/references/ref_utils.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/references/reference_exceptions.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/references/reference_grammar.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/references/reference_manifest_entry_finder.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/references/reference_parser.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/references/reference_results.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/references/reference_transformer.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/references/results_reference_finder_2.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/references/results_tools/data_finder.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/references/results_tools/date_filter.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/references/results_tools/identity_finder.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/references/results_tools/path_filter.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/references/results_tools/resolve_possibles.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/references/results_tools/token_filters.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/references/results_tools/yesterday_or_today_translator.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/references/tools/date_completer.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/referrer_printer.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/s3/s3_data_reader.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/s3/s3_data_writer.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/s3/s3_fingerprinter.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/s3/s3_json_data_reader.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/s3/s3_nos.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/s3/s3_utils.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/s3/s3_xlsx_data_reader.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/sftp/sftp_config.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/sftp/sftp_data_reader.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/sftp/sftp_data_writer.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/sftp/sftp_fingerprinter.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/sftp/sftp_json_data_reader.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/sftp/sftp_server_creds.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/sftp/sftp_walk.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/sftp/sftp_xlsx_data_reader.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/sqliter.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/stopwatch.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/template_util.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/var_utility.py +0 -0
- {csvpath-0.0.620 → csvpath-0.0.621}/csvpath/util/xlsx/xlsx_data_reader.py +0 -0
- {csvpath-0.0.620 → 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
|
|
@@ -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
|
#
|
|
@@ -199,6 +199,31 @@ class FileManager:
|
|
|
199
199
|
return _["reference"]
|
|
200
200
|
return None
|
|
201
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
|
+
|
|
202
227
|
def get_manifest(self, name: NamedFileName) -> json:
|
|
203
228
|
if name is None:
|
|
204
229
|
raise ValueError("Paths name cannot be None")
|
|
@@ -519,6 +544,7 @@ class FileManager:
|
|
|
519
544
|
recurse=True,
|
|
520
545
|
regex: str = None,
|
|
521
546
|
) -> list[str]:
|
|
547
|
+
self.csvpaths.logger.info("Starting add_named_files_from_dir for: %s", dirname)
|
|
522
548
|
ret = []
|
|
523
549
|
#
|
|
524
550
|
# legal_name check handled at add_named_file
|
|
@@ -542,6 +568,9 @@ class FileManager:
|
|
|
542
568
|
if regex is not None:
|
|
543
569
|
m = re.search(regex, p)
|
|
544
570
|
if not m:
|
|
571
|
+
self.csvpaths.logger.info(
|
|
572
|
+
"Skipping file: %s doesn't match %s", p, regex
|
|
573
|
+
)
|
|
545
574
|
continue
|
|
546
575
|
#
|
|
547
576
|
#
|
|
@@ -560,6 +589,7 @@ class FileManager:
|
|
|
560
589
|
# this should be consistent across backends, if ever not, fix it there, not here.
|
|
561
590
|
#
|
|
562
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)
|
|
563
593
|
if ref is not None:
|
|
564
594
|
ret.append(ref)
|
|
565
595
|
else:
|
|
@@ -709,7 +739,6 @@ class FileManager:
|
|
|
709
739
|
http = str(http).strip().lower() in ["on", "yes", "true"]
|
|
710
740
|
local = config.get(section="inputs", name="allow_local_files", default=False)
|
|
711
741
|
local = str(local).strip().lower() in ["on", "yes", "true"]
|
|
712
|
-
nos = Nos(path)
|
|
713
742
|
self.csvpaths.logger.info(
|
|
714
743
|
"Adding named file %s: checking permission, if needed, to register local and http files",
|
|
715
744
|
name,
|
|
@@ -719,6 +748,7 @@ class FileManager:
|
|
|
719
748
|
# no. the project may be controlled by a context like FlightPath Server, where
|
|
720
749
|
# the user cannot just override certain settings.
|
|
721
750
|
#
|
|
751
|
+
nos = Nos(path)
|
|
722
752
|
if nos.is_http and http is not True:
|
|
723
753
|
_ = {
|
|
724
754
|
"name": name,
|
|
@@ -780,12 +810,10 @@ class FileManager:
|
|
|
780
810
|
#
|
|
781
811
|
config = self.describer.get_config(name)
|
|
782
812
|
servers = config.sources
|
|
813
|
+
self.csvpaths.logger.debug(
|
|
814
|
+
"Adding named file. Available server configs: %s", servers
|
|
815
|
+
)
|
|
783
816
|
nos.server_config = servers
|
|
784
|
-
#
|
|
785
|
-
# for _ in servers:
|
|
786
|
-
# if _.matches(nos.path):
|
|
787
|
-
# nos.do._config = SftpConfig(_)
|
|
788
|
-
#
|
|
789
817
|
isfile = nos.is_http or nos.isfile()
|
|
790
818
|
self.csvpaths.logger.debug(
|
|
791
819
|
"Adding named file %s: path %s is a file? %s", name, path, isfile
|
|
@@ -809,6 +837,7 @@ class FileManager:
|
|
|
809
837
|
# create folder tree in inputs/named_files/name/filename
|
|
810
838
|
#
|
|
811
839
|
home = self.assure_file_home(name, path, template)
|
|
840
|
+
self.csvpaths.logger.debug("File home is %s", home)
|
|
812
841
|
file_home = home
|
|
813
842
|
mark = None
|
|
814
843
|
#
|
|
@@ -824,6 +853,7 @@ class FileManager:
|
|
|
824
853
|
if pm > -1:
|
|
825
854
|
mark = path[pm + 1 :]
|
|
826
855
|
path = path[0:pm]
|
|
856
|
+
self.csvpaths.logger.debug("File path, mark: %s, %s", path, mark)
|
|
827
857
|
#
|
|
828
858
|
# we're registering with a mark, so we need to be Xlsx and have a tab with that name.
|
|
829
859
|
#
|
|
@@ -976,6 +1006,9 @@ class FileManager:
|
|
|
976
1006
|
copy = pathu.parts(path)[0] == pathu.parts(home)[0]
|
|
977
1007
|
copy = copy and nos.is_local
|
|
978
1008
|
if copy:
|
|
1009
|
+
self.csvpaths.logger.debug(
|
|
1010
|
+
"Above nos copy: path: %s, name: %s, temp: %s", path, name, temp
|
|
1011
|
+
)
|
|
979
1012
|
nos.path = path
|
|
980
1013
|
config = self.describer.get_config(name)
|
|
981
1014
|
servers = config.sources
|
|
@@ -1012,6 +1045,7 @@ class FileManager:
|
|
|
1012
1045
|
#
|
|
1013
1046
|
nos = Nos(path)
|
|
1014
1047
|
if nos.is_sftp:
|
|
1048
|
+
self.csvpaths.logger.debug("Doing copy_down with sftp path %s", path)
|
|
1015
1049
|
reader = DataFileReader(path)
|
|
1016
1050
|
#
|
|
1017
1051
|
# adding config to the reader allows the reader to look to the config
|
|
@@ -1028,6 +1062,7 @@ class FileManager:
|
|
|
1028
1062
|
with DataFileWriter(path=temp, mode=mode) as writer:
|
|
1029
1063
|
writer.write(lines)
|
|
1030
1064
|
else:
|
|
1065
|
+
self.csvpaths.logger.debug("Doing copy_down with non-sftp path %s", path)
|
|
1031
1066
|
with DataFileReader(path) as reader:
|
|
1032
1067
|
with DataFileWriter(path=temp, mode=mode) as writer:
|
|
1033
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.620 → 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
|
|
@@ -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
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# pylint: disable=C0114
|
|
2
|
+
import json
|
|
2
3
|
import os
|
|
3
4
|
import re
|
|
4
5
|
from uuid import UUID
|
|
@@ -10,6 +11,7 @@ from csvpath.util.references.reference_parser import ReferenceParser
|
|
|
10
11
|
from csvpath.util.references.results_reference_finder_2 import (
|
|
11
12
|
ResultsReferenceFinder2 as ResultsReferenceFinder,
|
|
12
13
|
)
|
|
14
|
+
from csvpath.util.file_readers import DataFileReader
|
|
13
15
|
from csvpath.util.file_writers import DataFileWriter
|
|
14
16
|
from csvpath.util.nos import Nos
|
|
15
17
|
|
|
@@ -61,6 +63,32 @@ class ResultsManager: # pylint: disable=C0115
|
|
|
61
63
|
"""@private"""
|
|
62
64
|
self._csvpaths = cs
|
|
63
65
|
|
|
66
|
+
@property
|
|
67
|
+
def results_root_manifest_path(self) -> str:
|
|
68
|
+
"""@private"""
|
|
69
|
+
r = self.csvpaths.config.get(section="results", name="archive")
|
|
70
|
+
p = Nos(r).join("manifest.json")
|
|
71
|
+
nos = Nos(r)
|
|
72
|
+
if not nos.dir_exists():
|
|
73
|
+
nos.makedirs()
|
|
74
|
+
nos.path = p
|
|
75
|
+
if not nos.exists():
|
|
76
|
+
with DataFileWriter(path=p) as file:
|
|
77
|
+
file.write("[]")
|
|
78
|
+
return p
|
|
79
|
+
|
|
80
|
+
@property
|
|
81
|
+
def results_root_manifest(self) -> list:
|
|
82
|
+
"""the Archive Run Manifest -- a single global ledger tracking
|
|
83
|
+
every run across every named-results group, at the archive
|
|
84
|
+
root. distinct from any per-group results manifest. mirrors
|
|
85
|
+
PathsManager's paths_root_manifest. used by
|
|
86
|
+
ResultsReferenceFinder3 to resolve "*" root_major references
|
|
87
|
+
(bare :manifest(), optionally with a pointer to select one
|
|
88
|
+
entry by ordinal)."""
|
|
89
|
+
with DataFileReader(self.results_root_manifest_path) as reader:
|
|
90
|
+
return json.load(reader.source)
|
|
91
|
+
|
|
64
92
|
def complete_run(self, *, run_dir, pathsname, results) -> None:
|
|
65
93
|
"""@private"""
|
|
66
94
|
rr = ResultsRegistrar(
|
|
@@ -112,6 +140,7 @@ class ResultsManager: # pylint: disable=C0115
|
|
|
112
140
|
file: str = None,
|
|
113
141
|
run_uuid: UUID,
|
|
114
142
|
method: str,
|
|
143
|
+
template: str = None,
|
|
115
144
|
extra_data: Optional[dict[str, str]] = None,
|
|
116
145
|
) -> ResultsMetadata:
|
|
117
146
|
"""@private"""
|
|
@@ -158,6 +187,7 @@ class ResultsManager: # pylint: disable=C0115
|
|
|
158
187
|
mdata.named_paths_uuid_string = np_uuid
|
|
159
188
|
mdata.named_results_name = pathsname
|
|
160
189
|
mdata.method = method
|
|
190
|
+
mdata.template = template or ""
|
|
161
191
|
rr.register_start(mdata)
|
|
162
192
|
return mdata
|
|
163
193
|
|
|
@@ -757,10 +787,6 @@ class ResultsManager: # pylint: disable=C0115
|
|
|
757
787
|
rs = [None for inst in instances if inst != "manifest.json"]
|
|
758
788
|
for inst in instances:
|
|
759
789
|
if inst.endswith(".json") or inst == "_extra_data":
|
|
760
|
-
#
|
|
761
|
-
# exp ^^^^
|
|
762
|
-
#
|
|
763
|
-
# if inst == "manifest.json":
|
|
764
790
|
continue
|
|
765
791
|
r = self.get_named_result_for_instance(
|
|
766
792
|
name=name, run_dir=path, run=run, instance=inst
|
|
@@ -788,13 +814,6 @@ class ResultsManager: # pylint: disable=C0115
|
|
|
788
814
|
# it should be deleted.
|
|
789
815
|
#
|
|
790
816
|
_ = ""
|
|
791
|
-
|
|
792
|
-
"""
|
|
793
|
-
print(
|
|
794
|
-
f"resman: get_named_result_for_instance: {name}, {run_dir}, {run}, {instance}"
|
|
795
|
-
)
|
|
796
|
-
"""
|
|
797
|
-
|
|
798
817
|
if run_dir.endswith(f"/{instance}") or run_dir.endswith(f"\\{instance}"):
|
|
799
818
|
instance_dir = run_dir
|
|
800
819
|
else:
|
|
@@ -823,6 +842,7 @@ class ResultsManager: # pylint: disable=C0115
|
|
|
823
842
|
csvpath.match = meta["runtime_data"]["match_part"]
|
|
824
843
|
csvpath.delimiter = meta["runtime_data"]["delimiter"]
|
|
825
844
|
csvpath.quotechar = meta["runtime_data"]["quotechar"]
|
|
845
|
+
csvpath.is_valid = meta["runtime_data"]["valid"]
|
|
826
846
|
vars = ResultFileReader.vars(instance_dir)
|
|
827
847
|
if vars:
|
|
828
848
|
csvpath.variables = vars
|