graphsense-python 2.15.2__tar.gz → 2.17.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/PKG-INFO +9 -5
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/README.md +7 -3
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/__init__.py +7 -1
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/api/general_api.py +247 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/api_client.py +1 -1
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/cli/context.py +9 -4
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/configuration.py +2 -2
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/ext/deprecation.py +1 -1
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/gs_files/__init__.py +15 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/gs_files/encoder.py +193 -10
- graphsense_python-2.17.0/graphsense/gs_files/layout.py +749 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/__init__.py +3 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/address.py +13 -1
- graphsense_python-2.17.0/graphsense/models/aggregate_cutoff.py +88 -0
- graphsense_python-2.17.0/graphsense/models/capabilities.py +93 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/neighbor_addresses.py +5 -3
- graphsense_python-2.17.0/graphsense/models/network_capabilities.py +87 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense_python.egg-info/PKG-INFO +9 -5
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense_python.egg-info/SOURCES.txt +4 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/pyproject.toml +2 -2
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/address_scan/__init__.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/address_scan/decompress.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/address_scan/detectors.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/address_scan/scanner.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/address_scan/validators.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/api/__init__.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/api/addresses_api.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/api/blocks_api.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/api/bulk_api.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/api/clusters_api.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/api/entities_api.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/api/graph_api.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/api/rates_api.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/api/tags_api.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/api/tokens_api.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/api/txs_api.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/api_response.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/cli/__init__.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/cli/__main__.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/cli/bulk_cmd.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/cli/convenience.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/cli/errors.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/cli/gs.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/cli/main.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/cli/raw.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/cli/scan.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/compat.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/exceptions.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/ext/__init__.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/ext/bulk.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/ext/client.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/ext/io.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/ext/output.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/ext/selectors.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/gs_files/parser.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/gs_files/summary.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/gs_files/writer.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/__init__.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/actor.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/actor_context.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/address.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/address_tag.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/address_tags.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/address_tx.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/address_tx_utxo.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/address_txs.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/block.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/block_at_date.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/concept.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/currency_stats.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/entity.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/entity_addresses.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/external_conversion.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/http_validation_error.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/label_summary.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/labeled_item_ref.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/link.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/link_utxo.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/links.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/links_inner.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/location_inner.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/neighbor_address.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/neighbor_addresses.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/neighbor_entities.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/neighbor_entity.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/rate.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/rates.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/related_address.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/related_addresses.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/search_result.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/search_result_by_currency.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/search_result_level1.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/search_result_level2.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/search_result_level3.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/search_result_level4.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/search_result_level5.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/search_result_level6.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/stats.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/tag.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/tag_cloud_entry.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/tag_summary.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/taxonomy.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/token_config.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/token_configs.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/tx.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/tx_account.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/tx_ref.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/tx_summary.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/tx_utxo.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/tx_value.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/user_reported_tag.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/user_tag_report_response.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/validation_error.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/model/values.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/actor.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/actor_context.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/address_output.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/address_tag.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/address_tags.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/address_tx.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/address_tx_utxo.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/address_txs.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/block.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/block_at_date.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/change_heuristics.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/cluster.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/cluster_addresses.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/coin_join_consensus.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/coin_join_heuristics.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/comparison_signal.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/comparison_verdict.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/concept.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/consensus_entry.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/currency_stats.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/direct_change_heuristic.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/entity.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/entity_addresses.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/external_conversion.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/graph_address_network_summary.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/graph_address_overall.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/graph_address_ref.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/graph_address_summary.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/graph_compare_note.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/graph_compare_request.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/graph_compare_signal.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/graph_compare_verdict.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/graph_compared_tx.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/graph_comparison.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/graph_lineage_edge.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/graph_note.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/graph_summary.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/graph_summary_request.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/graph_tx_characteristics.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/graph_tx_network_summary.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/graph_tx_overall.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/graph_tx_ref.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/graph_tx_summary.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/http_validation_error.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/join_market_heuristic.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/label_summary.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/labeled_item_ref.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/lineage_edge.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/link.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/link_utxo.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/links.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/links_inner.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/location_inner.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/multi_input_change_heuristic.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/neighbor_address.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/neighbor_cluster.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/neighbor_clusters.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/neighbor_entities.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/neighbor_entity.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/one_time_change_heuristic.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/per_tx_inner.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/rate.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/rates.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/related_address.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/related_addresses.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/search_result.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/search_result_by_currency.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/search_result_level1.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/search_result_level2.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/search_result_level3.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/search_result_level4.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/search_result_level5.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/search_result_level6.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/stats.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/tag.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/tag_cloud_entry.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/tag_summary.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/taxonomy.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/token_config.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/token_configs.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/transaction_comparison.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/tx.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/tx_account.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/tx_characteristics.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/tx_compared_item.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/tx_ref.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/tx_summary.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/tx_utxo.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/tx_value.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/user_reported_tag.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/user_tag_report_response.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/utxo_heuristics.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/validation_error.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/values.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/wasabi_heuristic.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/whirlpool_coin_join_heuristic.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/models/whirlpool_tx0_heuristic.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/py.typed +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense/rest.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense_python.egg-info/dependency_links.txt +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense_python.egg-info/entry_points.txt +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense_python.egg-info/requires.txt +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/graphsense_python.egg-info/top_level.txt +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/setup.cfg +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/tests/test_cli_bulk.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/tests/test_cli_convenience.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/tests/test_cli_errors.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/tests/test_cli_gs.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/tests/test_cli_io_pipes.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/tests/test_cli_raw_mirror.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/tests/test_cli_scan.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/tests/test_cli_tags_and_dates.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/tests/test_ext_bulk.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/tests/test_ext_client.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/tests/test_ext_io.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/tests/test_ext_output.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/tests/test_ext_selectors.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/tests/test_readme_template.py +0 -0
- {graphsense_python-2.15.2 → graphsense_python-2.17.0}/tests/test_regen_survives.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: graphsense-python
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.17.0
|
|
4
4
|
Summary: GraphSense API
|
|
5
5
|
Author-email: Iknaio Cryptoasset Analytics GmbH <contact@iknaio.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -9,7 +9,7 @@ Project-URL: Source, https://github.com/graphsense/graphsense-lib
|
|
|
9
9
|
Project-URL: Changelog, https://github.com/graphsense/graphsense-lib/blob/master/CHANGELOG.md
|
|
10
10
|
Project-URL: Tracker, https://github.com/graphsense/graphsense-lib/issues
|
|
11
11
|
Keywords: OpenAPI,OpenAPI-Generator,GraphSense API
|
|
12
|
-
Requires-Python: >=3.
|
|
12
|
+
Requires-Python: >=3.10
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
14
|
Requires-Dist: urllib3<3.0.0,>=2.1.0
|
|
15
15
|
Requires-Dist: python-dateutil>=2.8.2
|
|
@@ -63,15 +63,15 @@ connector or tool source; the assistant then handles the rest.
|
|
|
63
63
|
|
|
64
64
|
This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
|
|
65
65
|
|
|
66
|
-
- API version: 2.
|
|
67
|
-
- Package version: 2.
|
|
66
|
+
- API version: 2.17.0
|
|
67
|
+
- Package version: 2.17.0
|
|
68
68
|
- Generator version: 7.19.0
|
|
69
69
|
- Build package: org.openapitools.codegen.languages.PythonClientCodegen
|
|
70
70
|
For more information, please visit [https://www.iknaio.com/](https://www.iknaio.com/)
|
|
71
71
|
|
|
72
72
|
## Requirements.
|
|
73
73
|
|
|
74
|
-
Python 3.
|
|
74
|
+
Python 3.10+
|
|
75
75
|
|
|
76
76
|
## Installation & Usage
|
|
77
77
|
|
|
@@ -188,6 +188,7 @@ Class | Method | HTTP request | Description
|
|
|
188
188
|
*EntitiesApi* | [**list_entity_neighbors**](docs/EntitiesApi.md#list_entity_neighbors) | **GET** /{currency}/entities/{entity}/neighbors | List neighboring entities
|
|
189
189
|
*EntitiesApi* | [**list_entity_txs**](docs/EntitiesApi.md#list_entity_txs) | **GET** /{currency}/entities/{entity}/txs | List entity transactions
|
|
190
190
|
*EntitiesApi* | [**search_entity_neighbors**](docs/EntitiesApi.md#search_entity_neighbors) | **GET** /{currency}/entities/{entity}/search | Search entity neighborhood
|
|
191
|
+
*GeneralApi* | [**get_capabilities**](docs/GeneralApi.md#get_capabilities) | **GET** /capabilities | Get per-network feature availability
|
|
191
192
|
*GeneralApi* | [**get_statistics**](docs/GeneralApi.md#get_statistics) | **GET** /stats | Get platform statistics for supported currencies
|
|
192
193
|
*GeneralApi* | [**search**](docs/GeneralApi.md#search) | **GET** /search | Search addresses, transactions, actors, and labels
|
|
193
194
|
*GraphApi* | [**graph_compare**](docs/GraphApi.md#graph_compare) | **POST** /graph/compare | Compare multiple transactions (beta)
|
|
@@ -220,8 +221,10 @@ Class | Method | HTTP request | Description
|
|
|
220
221
|
- [AddressTx](docs/AddressTx.md)
|
|
221
222
|
- [AddressTxUtxo](docs/AddressTxUtxo.md)
|
|
222
223
|
- [AddressTxs](docs/AddressTxs.md)
|
|
224
|
+
- [AggregateCutoff](docs/AggregateCutoff.md)
|
|
223
225
|
- [Block](docs/Block.md)
|
|
224
226
|
- [BlockAtDate](docs/BlockAtDate.md)
|
|
227
|
+
- [Capabilities](docs/Capabilities.md)
|
|
225
228
|
- [ChangeHeuristics](docs/ChangeHeuristics.md)
|
|
226
229
|
- [Cluster](docs/Cluster.md)
|
|
227
230
|
- [ClusterAddresses](docs/ClusterAddresses.md)
|
|
@@ -269,6 +272,7 @@ Class | Method | HTTP request | Description
|
|
|
269
272
|
- [NeighborClusters](docs/NeighborClusters.md)
|
|
270
273
|
- [NeighborEntities](docs/NeighborEntities.md)
|
|
271
274
|
- [NeighborEntity](docs/NeighborEntity.md)
|
|
275
|
+
- [NetworkCapabilities](docs/NetworkCapabilities.md)
|
|
272
276
|
- [OneTimeChangeHeuristic](docs/OneTimeChangeHeuristic.md)
|
|
273
277
|
- [PerTxInner](docs/PerTxInner.md)
|
|
274
278
|
- [Rate](docs/Rate.md)
|
|
@@ -41,15 +41,15 @@ connector or tool source; the assistant then handles the rest.
|
|
|
41
41
|
|
|
42
42
|
This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
|
|
43
43
|
|
|
44
|
-
- API version: 2.
|
|
45
|
-
- Package version: 2.
|
|
44
|
+
- API version: 2.17.0
|
|
45
|
+
- Package version: 2.17.0
|
|
46
46
|
- Generator version: 7.19.0
|
|
47
47
|
- Build package: org.openapitools.codegen.languages.PythonClientCodegen
|
|
48
48
|
For more information, please visit [https://www.iknaio.com/](https://www.iknaio.com/)
|
|
49
49
|
|
|
50
50
|
## Requirements.
|
|
51
51
|
|
|
52
|
-
Python 3.
|
|
52
|
+
Python 3.10+
|
|
53
53
|
|
|
54
54
|
## Installation & Usage
|
|
55
55
|
|
|
@@ -166,6 +166,7 @@ Class | Method | HTTP request | Description
|
|
|
166
166
|
*EntitiesApi* | [**list_entity_neighbors**](docs/EntitiesApi.md#list_entity_neighbors) | **GET** /{currency}/entities/{entity}/neighbors | List neighboring entities
|
|
167
167
|
*EntitiesApi* | [**list_entity_txs**](docs/EntitiesApi.md#list_entity_txs) | **GET** /{currency}/entities/{entity}/txs | List entity transactions
|
|
168
168
|
*EntitiesApi* | [**search_entity_neighbors**](docs/EntitiesApi.md#search_entity_neighbors) | **GET** /{currency}/entities/{entity}/search | Search entity neighborhood
|
|
169
|
+
*GeneralApi* | [**get_capabilities**](docs/GeneralApi.md#get_capabilities) | **GET** /capabilities | Get per-network feature availability
|
|
169
170
|
*GeneralApi* | [**get_statistics**](docs/GeneralApi.md#get_statistics) | **GET** /stats | Get platform statistics for supported currencies
|
|
170
171
|
*GeneralApi* | [**search**](docs/GeneralApi.md#search) | **GET** /search | Search addresses, transactions, actors, and labels
|
|
171
172
|
*GraphApi* | [**graph_compare**](docs/GraphApi.md#graph_compare) | **POST** /graph/compare | Compare multiple transactions (beta)
|
|
@@ -198,8 +199,10 @@ Class | Method | HTTP request | Description
|
|
|
198
199
|
- [AddressTx](docs/AddressTx.md)
|
|
199
200
|
- [AddressTxUtxo](docs/AddressTxUtxo.md)
|
|
200
201
|
- [AddressTxs](docs/AddressTxs.md)
|
|
202
|
+
- [AggregateCutoff](docs/AggregateCutoff.md)
|
|
201
203
|
- [Block](docs/Block.md)
|
|
202
204
|
- [BlockAtDate](docs/BlockAtDate.md)
|
|
205
|
+
- [Capabilities](docs/Capabilities.md)
|
|
203
206
|
- [ChangeHeuristics](docs/ChangeHeuristics.md)
|
|
204
207
|
- [Cluster](docs/Cluster.md)
|
|
205
208
|
- [ClusterAddresses](docs/ClusterAddresses.md)
|
|
@@ -247,6 +250,7 @@ Class | Method | HTTP request | Description
|
|
|
247
250
|
- [NeighborClusters](docs/NeighborClusters.md)
|
|
248
251
|
- [NeighborEntities](docs/NeighborEntities.md)
|
|
249
252
|
- [NeighborEntity](docs/NeighborEntity.md)
|
|
253
|
+
- [NetworkCapabilities](docs/NetworkCapabilities.md)
|
|
250
254
|
- [OneTimeChangeHeuristic](docs/OneTimeChangeHeuristic.md)
|
|
251
255
|
- [PerTxInner](docs/PerTxInner.md)
|
|
252
256
|
- [Rate](docs/Rate.md)
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"""
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
__version__ = "2.
|
|
15
|
+
__version__ = "2.17.0"
|
|
16
16
|
|
|
17
17
|
# Define package exports
|
|
18
18
|
__all__ = [
|
|
@@ -45,8 +45,10 @@ __all__ = [
|
|
|
45
45
|
"AddressTx",
|
|
46
46
|
"AddressTxUtxo",
|
|
47
47
|
"AddressTxs",
|
|
48
|
+
"AggregateCutoff",
|
|
48
49
|
"Block",
|
|
49
50
|
"BlockAtDate",
|
|
51
|
+
"Capabilities",
|
|
50
52
|
"ChangeHeuristics",
|
|
51
53
|
"Cluster",
|
|
52
54
|
"ClusterAddresses",
|
|
@@ -94,6 +96,7 @@ __all__ = [
|
|
|
94
96
|
"NeighborClusters",
|
|
95
97
|
"NeighborEntities",
|
|
96
98
|
"NeighborEntity",
|
|
99
|
+
"NetworkCapabilities",
|
|
97
100
|
"OneTimeChangeHeuristic",
|
|
98
101
|
"PerTxInner",
|
|
99
102
|
"Rate",
|
|
@@ -168,8 +171,10 @@ from graphsense.models.address_tags import AddressTags as AddressTags
|
|
|
168
171
|
from graphsense.models.address_tx import AddressTx as AddressTx
|
|
169
172
|
from graphsense.models.address_tx_utxo import AddressTxUtxo as AddressTxUtxo
|
|
170
173
|
from graphsense.models.address_txs import AddressTxs as AddressTxs
|
|
174
|
+
from graphsense.models.aggregate_cutoff import AggregateCutoff as AggregateCutoff
|
|
171
175
|
from graphsense.models.block import Block as Block
|
|
172
176
|
from graphsense.models.block_at_date import BlockAtDate as BlockAtDate
|
|
177
|
+
from graphsense.models.capabilities import Capabilities as Capabilities
|
|
173
178
|
from graphsense.models.change_heuristics import ChangeHeuristics as ChangeHeuristics
|
|
174
179
|
from graphsense.models.cluster import Cluster as Cluster
|
|
175
180
|
from graphsense.models.cluster_addresses import ClusterAddresses as ClusterAddresses
|
|
@@ -217,6 +222,7 @@ from graphsense.models.neighbor_cluster import NeighborCluster as NeighborCluste
|
|
|
217
222
|
from graphsense.models.neighbor_clusters import NeighborClusters as NeighborClusters
|
|
218
223
|
from graphsense.models.neighbor_entities import NeighborEntities as NeighborEntities
|
|
219
224
|
from graphsense.models.neighbor_entity import NeighborEntity as NeighborEntity
|
|
225
|
+
from graphsense.models.network_capabilities import NetworkCapabilities as NetworkCapabilities
|
|
220
226
|
from graphsense.models.one_time_change_heuristic import OneTimeChangeHeuristic as OneTimeChangeHeuristic
|
|
221
227
|
from graphsense.models.per_tx_inner import PerTxInner as PerTxInner
|
|
222
228
|
from graphsense.models.rate import Rate as Rate
|
|
@@ -17,6 +17,7 @@ from typing_extensions import Annotated
|
|
|
17
17
|
from pydantic import Field, StrictBool, StrictInt, StrictStr
|
|
18
18
|
from typing import Optional
|
|
19
19
|
from typing_extensions import Annotated
|
|
20
|
+
from graphsense.models.capabilities import Capabilities
|
|
20
21
|
from graphsense.models.search_result import SearchResult
|
|
21
22
|
from graphsense.models.stats import Stats
|
|
22
23
|
|
|
@@ -127,6 +128,252 @@ class GeneralApi:
|
|
|
127
128
|
self.api_client = api_client
|
|
128
129
|
|
|
129
130
|
|
|
131
|
+
@validate_call_compat
|
|
132
|
+
def get_capabilities(
|
|
133
|
+
self,
|
|
134
|
+
_request_timeout: Union[
|
|
135
|
+
None,
|
|
136
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
137
|
+
Tuple[
|
|
138
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
139
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
140
|
+
]
|
|
141
|
+
] = None,
|
|
142
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
143
|
+
_content_type: Optional[StrictStr] = None,
|
|
144
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
145
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
146
|
+
) -> Capabilities:
|
|
147
|
+
"""Get per-network feature availability
|
|
148
|
+
|
|
149
|
+
Returns which optional feature families are disabled per served network. A network absent from the list is fully enabled, as is every network of a deployment that does not serve this endpoint (404).
|
|
150
|
+
|
|
151
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
152
|
+
number provided, it will be total request
|
|
153
|
+
timeout. It can also be a pair (tuple) of
|
|
154
|
+
(connection, read) timeouts.
|
|
155
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
156
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
157
|
+
request; this effectively ignores the
|
|
158
|
+
authentication in the spec for a single request.
|
|
159
|
+
:type _request_auth: dict, optional
|
|
160
|
+
:param _content_type: force content-type for the request.
|
|
161
|
+
:type _content_type: str, Optional
|
|
162
|
+
:param _headers: set to override the headers for a single
|
|
163
|
+
request; this effectively ignores the headers
|
|
164
|
+
in the spec for a single request.
|
|
165
|
+
:type _headers: dict, optional
|
|
166
|
+
:param _host_index: set to override the host_index for a single
|
|
167
|
+
request; this effectively ignores the host_index
|
|
168
|
+
in the spec for a single request.
|
|
169
|
+
:type _host_index: int, optional
|
|
170
|
+
:return: Returns the result object.
|
|
171
|
+
""" # noqa: E501
|
|
172
|
+
|
|
173
|
+
_param = self._get_capabilities_serialize(
|
|
174
|
+
_request_auth=_request_auth,
|
|
175
|
+
_content_type=_content_type,
|
|
176
|
+
_headers=_headers,
|
|
177
|
+
_host_index=_host_index
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
181
|
+
'200': "Capabilities",
|
|
182
|
+
}
|
|
183
|
+
response_data = self.api_client.call_api(
|
|
184
|
+
*_param,
|
|
185
|
+
_request_timeout=_request_timeout
|
|
186
|
+
)
|
|
187
|
+
response_data.read()
|
|
188
|
+
return self.api_client.response_deserialize(
|
|
189
|
+
response_data=response_data,
|
|
190
|
+
response_types_map=_response_types_map,
|
|
191
|
+
).data
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
@validate_call_compat
|
|
195
|
+
def get_capabilities_with_http_info(
|
|
196
|
+
self,
|
|
197
|
+
_request_timeout: Union[
|
|
198
|
+
None,
|
|
199
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
200
|
+
Tuple[
|
|
201
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
202
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
203
|
+
]
|
|
204
|
+
] = None,
|
|
205
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
206
|
+
_content_type: Optional[StrictStr] = None,
|
|
207
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
208
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
209
|
+
) -> ApiResponse[Capabilities]:
|
|
210
|
+
"""Get per-network feature availability
|
|
211
|
+
|
|
212
|
+
Returns which optional feature families are disabled per served network. A network absent from the list is fully enabled, as is every network of a deployment that does not serve this endpoint (404).
|
|
213
|
+
|
|
214
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
215
|
+
number provided, it will be total request
|
|
216
|
+
timeout. It can also be a pair (tuple) of
|
|
217
|
+
(connection, read) timeouts.
|
|
218
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
219
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
220
|
+
request; this effectively ignores the
|
|
221
|
+
authentication in the spec for a single request.
|
|
222
|
+
:type _request_auth: dict, optional
|
|
223
|
+
:param _content_type: force content-type for the request.
|
|
224
|
+
:type _content_type: str, Optional
|
|
225
|
+
:param _headers: set to override the headers for a single
|
|
226
|
+
request; this effectively ignores the headers
|
|
227
|
+
in the spec for a single request.
|
|
228
|
+
:type _headers: dict, optional
|
|
229
|
+
:param _host_index: set to override the host_index for a single
|
|
230
|
+
request; this effectively ignores the host_index
|
|
231
|
+
in the spec for a single request.
|
|
232
|
+
:type _host_index: int, optional
|
|
233
|
+
:return: Returns the result object.
|
|
234
|
+
""" # noqa: E501
|
|
235
|
+
|
|
236
|
+
_param = self._get_capabilities_serialize(
|
|
237
|
+
_request_auth=_request_auth,
|
|
238
|
+
_content_type=_content_type,
|
|
239
|
+
_headers=_headers,
|
|
240
|
+
_host_index=_host_index
|
|
241
|
+
)
|
|
242
|
+
|
|
243
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
244
|
+
'200': "Capabilities",
|
|
245
|
+
}
|
|
246
|
+
response_data = self.api_client.call_api(
|
|
247
|
+
*_param,
|
|
248
|
+
_request_timeout=_request_timeout
|
|
249
|
+
)
|
|
250
|
+
response_data.read()
|
|
251
|
+
return self.api_client.response_deserialize(
|
|
252
|
+
response_data=response_data,
|
|
253
|
+
response_types_map=_response_types_map,
|
|
254
|
+
)
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
@validate_call_compat
|
|
258
|
+
def get_capabilities_without_preload_content(
|
|
259
|
+
self,
|
|
260
|
+
_request_timeout: Union[
|
|
261
|
+
None,
|
|
262
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
263
|
+
Tuple[
|
|
264
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
265
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
266
|
+
]
|
|
267
|
+
] = None,
|
|
268
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
269
|
+
_content_type: Optional[StrictStr] = None,
|
|
270
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
271
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
272
|
+
) -> RESTResponseType:
|
|
273
|
+
"""Get per-network feature availability
|
|
274
|
+
|
|
275
|
+
Returns which optional feature families are disabled per served network. A network absent from the list is fully enabled, as is every network of a deployment that does not serve this endpoint (404).
|
|
276
|
+
|
|
277
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
278
|
+
number provided, it will be total request
|
|
279
|
+
timeout. It can also be a pair (tuple) of
|
|
280
|
+
(connection, read) timeouts.
|
|
281
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
282
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
283
|
+
request; this effectively ignores the
|
|
284
|
+
authentication in the spec for a single request.
|
|
285
|
+
:type _request_auth: dict, optional
|
|
286
|
+
:param _content_type: force content-type for the request.
|
|
287
|
+
:type _content_type: str, Optional
|
|
288
|
+
:param _headers: set to override the headers for a single
|
|
289
|
+
request; this effectively ignores the headers
|
|
290
|
+
in the spec for a single request.
|
|
291
|
+
:type _headers: dict, optional
|
|
292
|
+
:param _host_index: set to override the host_index for a single
|
|
293
|
+
request; this effectively ignores the host_index
|
|
294
|
+
in the spec for a single request.
|
|
295
|
+
:type _host_index: int, optional
|
|
296
|
+
:return: Returns the result object.
|
|
297
|
+
""" # noqa: E501
|
|
298
|
+
|
|
299
|
+
_param = self._get_capabilities_serialize(
|
|
300
|
+
_request_auth=_request_auth,
|
|
301
|
+
_content_type=_content_type,
|
|
302
|
+
_headers=_headers,
|
|
303
|
+
_host_index=_host_index
|
|
304
|
+
)
|
|
305
|
+
|
|
306
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
307
|
+
'200': "Capabilities",
|
|
308
|
+
}
|
|
309
|
+
response_data = self.api_client.call_api(
|
|
310
|
+
*_param,
|
|
311
|
+
_request_timeout=_request_timeout
|
|
312
|
+
)
|
|
313
|
+
return response_data.response
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
def _get_capabilities_serialize(
|
|
317
|
+
self,
|
|
318
|
+
_request_auth,
|
|
319
|
+
_content_type,
|
|
320
|
+
_headers,
|
|
321
|
+
_host_index,
|
|
322
|
+
) -> RequestSerialized:
|
|
323
|
+
|
|
324
|
+
_host = None
|
|
325
|
+
|
|
326
|
+
_collection_formats: Dict[str, str] = {
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
_path_params: Dict[str, str] = {}
|
|
330
|
+
_query_params: List[Tuple[str, str]] = []
|
|
331
|
+
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
332
|
+
_form_params: List[Tuple[str, str]] = []
|
|
333
|
+
_files: Dict[
|
|
334
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
335
|
+
] = {}
|
|
336
|
+
_body_params: Optional[bytes] = None
|
|
337
|
+
|
|
338
|
+
# process the path parameters
|
|
339
|
+
# process the query parameters
|
|
340
|
+
# process the header parameters
|
|
341
|
+
# process the form parameters
|
|
342
|
+
# process the body parameter
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
# set the HTTP header `Accept`
|
|
346
|
+
if 'Accept' not in _header_params:
|
|
347
|
+
_header_params['Accept'] = self.api_client.select_header_accept(
|
|
348
|
+
[
|
|
349
|
+
'application/json'
|
|
350
|
+
]
|
|
351
|
+
)
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
# authentication setting
|
|
355
|
+
_auth_settings: List[str] = [
|
|
356
|
+
'api_key'
|
|
357
|
+
]
|
|
358
|
+
|
|
359
|
+
return self.api_client.param_serialize(
|
|
360
|
+
method='GET',
|
|
361
|
+
resource_path='/capabilities',
|
|
362
|
+
path_params=_path_params,
|
|
363
|
+
query_params=_query_params,
|
|
364
|
+
header_params=_header_params,
|
|
365
|
+
body=_body_params,
|
|
366
|
+
post_params=_form_params,
|
|
367
|
+
files=_files,
|
|
368
|
+
auth_settings=_auth_settings,
|
|
369
|
+
collection_formats=_collection_formats,
|
|
370
|
+
_host=_host,
|
|
371
|
+
_request_auth=_request_auth
|
|
372
|
+
)
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
|
|
130
377
|
@validate_call_compat
|
|
131
378
|
def get_statistics(
|
|
132
379
|
self,
|
|
@@ -95,7 +95,7 @@ class ApiClient:
|
|
|
95
95
|
self.default_headers[header_name] = header_value
|
|
96
96
|
self.cookie = cookie
|
|
97
97
|
# Set default User-Agent.
|
|
98
|
-
self.user_agent = 'graphsense-python/2.
|
|
98
|
+
self.user_agent = 'graphsense-python/2.17.0'
|
|
99
99
|
self.client_side_validation = configuration.client_side_validation
|
|
100
100
|
|
|
101
101
|
def __enter__(self):
|
|
@@ -7,8 +7,6 @@ import sys
|
|
|
7
7
|
from dataclasses import dataclass, field
|
|
8
8
|
from typing import Optional
|
|
9
9
|
|
|
10
|
-
import rich_click as click
|
|
11
|
-
|
|
12
10
|
from graphsense.ext.client import GraphSense
|
|
13
11
|
|
|
14
12
|
|
|
@@ -47,9 +45,16 @@ class CliContext:
|
|
|
47
45
|
"GRAPHSENSE_CLIENT_SHOW_DEPRECATED_ENDPOINTS"
|
|
48
46
|
)
|
|
49
47
|
== "1",
|
|
50
|
-
# Resolve
|
|
48
|
+
# Resolve the current stderr on each write so
|
|
51
49
|
# `CliRunner(mix_stderr=False)` on click 8.1 captures it.
|
|
52
|
-
|
|
50
|
+
# Deliberately not `click.get_text_stream("stderr")`: click
|
|
51
|
+
# 8.5 moved that behind a module-level `__getattr__` that
|
|
52
|
+
# raises a DeprecationWarning (removal in 9.0), and the
|
|
53
|
+
# deprecation hook resolves this stream inside a
|
|
54
|
+
# `try/except Exception`, so under `-W error` the warning
|
|
55
|
+
# became the exception that silently swallowed every
|
|
56
|
+
# deprecation message.
|
|
57
|
+
deprecation_stream=lambda: sys.stderr,
|
|
53
58
|
)
|
|
54
59
|
return self._gs
|
|
55
60
|
|
|
@@ -533,8 +533,8 @@ conf = graphsense.Configuration(
|
|
|
533
533
|
return "Python SDK Debug Report:\n"\
|
|
534
534
|
"OS: {env}\n"\
|
|
535
535
|
"Python Version: {pyversion}\n"\
|
|
536
|
-
"Version of the API: 2.
|
|
537
|
-
"SDK Package Version: 2.
|
|
536
|
+
"Version of the API: 2.17.0\n"\
|
|
537
|
+
"SDK Package Version: 2.17.0".\
|
|
538
538
|
format(env=sys.platform, pyversion=sys.version)
|
|
539
539
|
|
|
540
540
|
def get_host_settings(self) -> List[HostSetting]:
|
|
@@ -33,7 +33,7 @@ def install(
|
|
|
33
33
|
* None — write to `sys.stderr` at call time
|
|
34
34
|
* a callable — invoked each write to resolve the current stream (useful
|
|
35
35
|
when a test harness captures stderr with a stream the caller can only
|
|
36
|
-
obtain lazily, e.g.
|
|
36
|
+
obtain lazily, e.g. `lambda: sys.stderr` under click's CliRunner)
|
|
37
37
|
* a file-like object — used directly
|
|
38
38
|
|
|
39
39
|
Safe to call twice on the same client — the second call is a no-op.
|
|
@@ -14,16 +14,26 @@ Encode:
|
|
|
14
14
|
GsBuilder — high-level fluent API for building graphs
|
|
15
15
|
encode_gs_payload — raw payload list to .gs bytes
|
|
16
16
|
builder_from_spec — build a GsBuilder from a JSON spec dict
|
|
17
|
+
spec_from_pathfinder — decoded pathfinder file back to a spec
|
|
18
|
+
ANNOTATION_PALETTE — the Pathfinder annotation dialog's colors
|
|
19
|
+
|
|
20
|
+
Layout:
|
|
21
|
+
apply_hierarchical_layout — stamp x/y onto a spec (direction-aware
|
|
22
|
+
when txs carry senders / receivers)
|
|
23
|
+
layout_metrics — overlap / crossing / direction numbers
|
|
17
24
|
"""
|
|
18
25
|
|
|
19
26
|
from .encoder import (
|
|
27
|
+
ANNOTATION_PALETTE,
|
|
20
28
|
GsBuilder,
|
|
21
29
|
apply_hierarchical_layout,
|
|
22
30
|
builder_from_spec,
|
|
23
31
|
encode_gs_payload,
|
|
24
32
|
normalize_address_id,
|
|
25
33
|
normalize_tx_id,
|
|
34
|
+
spec_from_pathfinder,
|
|
26
35
|
)
|
|
36
|
+
from .layout import directed_layout, has_flow_info, layout_metrics
|
|
27
37
|
from .parser import (
|
|
28
38
|
Color,
|
|
29
39
|
GraphAddress,
|
|
@@ -46,6 +56,7 @@ from .summary import summarize
|
|
|
46
56
|
from .writer import to_jsonable, write_decoded, write_json
|
|
47
57
|
|
|
48
58
|
__all__ = [
|
|
59
|
+
"ANNOTATION_PALETTE",
|
|
49
60
|
"Color",
|
|
50
61
|
"GraphAddress",
|
|
51
62
|
"GraphCluster",
|
|
@@ -62,11 +73,15 @@ __all__ = [
|
|
|
62
73
|
"builder_from_spec",
|
|
63
74
|
"decode_gs",
|
|
64
75
|
"decode_gs_bytes",
|
|
76
|
+
"directed_layout",
|
|
65
77
|
"encode_gs_payload",
|
|
78
|
+
"has_flow_info",
|
|
79
|
+
"layout_metrics",
|
|
66
80
|
"lzw_pack",
|
|
67
81
|
"lzw_unpack",
|
|
68
82
|
"normalize_address_id",
|
|
69
83
|
"normalize_tx_id",
|
|
84
|
+
"spec_from_pathfinder",
|
|
70
85
|
"structure",
|
|
71
86
|
"summarize",
|
|
72
87
|
"to_jsonable",
|