graphsense-python 2.15.3__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.
Files changed (233) hide show
  1. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/PKG-INFO +9 -5
  2. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/README.md +7 -3
  3. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/__init__.py +7 -1
  4. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/api/general_api.py +247 -0
  5. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/api_client.py +1 -1
  6. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/cli/context.py +9 -4
  7. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/configuration.py +2 -2
  8. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/ext/deprecation.py +1 -1
  9. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/gs_files/__init__.py +15 -0
  10. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/gs_files/encoder.py +193 -10
  11. graphsense_python-2.17.0/graphsense/gs_files/layout.py +749 -0
  12. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/__init__.py +3 -0
  13. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/address.py +13 -1
  14. graphsense_python-2.17.0/graphsense/models/aggregate_cutoff.py +88 -0
  15. graphsense_python-2.17.0/graphsense/models/capabilities.py +93 -0
  16. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/neighbor_addresses.py +5 -3
  17. graphsense_python-2.17.0/graphsense/models/network_capabilities.py +87 -0
  18. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense_python.egg-info/PKG-INFO +9 -5
  19. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense_python.egg-info/SOURCES.txt +4 -0
  20. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/pyproject.toml +2 -2
  21. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/address_scan/__init__.py +0 -0
  22. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/address_scan/decompress.py +0 -0
  23. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/address_scan/detectors.py +0 -0
  24. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/address_scan/scanner.py +0 -0
  25. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/address_scan/validators.py +0 -0
  26. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/api/__init__.py +0 -0
  27. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/api/addresses_api.py +0 -0
  28. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/api/blocks_api.py +0 -0
  29. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/api/bulk_api.py +0 -0
  30. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/api/clusters_api.py +0 -0
  31. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/api/entities_api.py +0 -0
  32. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/api/graph_api.py +0 -0
  33. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/api/rates_api.py +0 -0
  34. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/api/tags_api.py +0 -0
  35. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/api/tokens_api.py +0 -0
  36. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/api/txs_api.py +0 -0
  37. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/api_response.py +0 -0
  38. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/cli/__init__.py +0 -0
  39. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/cli/__main__.py +0 -0
  40. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/cli/bulk_cmd.py +0 -0
  41. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/cli/convenience.py +0 -0
  42. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/cli/errors.py +0 -0
  43. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/cli/gs.py +0 -0
  44. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/cli/main.py +0 -0
  45. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/cli/raw.py +0 -0
  46. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/cli/scan.py +0 -0
  47. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/compat.py +0 -0
  48. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/exceptions.py +0 -0
  49. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/ext/__init__.py +0 -0
  50. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/ext/bulk.py +0 -0
  51. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/ext/client.py +0 -0
  52. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/ext/io.py +0 -0
  53. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/ext/output.py +0 -0
  54. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/ext/selectors.py +0 -0
  55. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/gs_files/parser.py +0 -0
  56. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/gs_files/summary.py +0 -0
  57. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/gs_files/writer.py +0 -0
  58. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/__init__.py +0 -0
  59. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/actor.py +0 -0
  60. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/actor_context.py +0 -0
  61. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/address.py +0 -0
  62. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/address_tag.py +0 -0
  63. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/address_tags.py +0 -0
  64. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/address_tx.py +0 -0
  65. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/address_tx_utxo.py +0 -0
  66. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/address_txs.py +0 -0
  67. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/block.py +0 -0
  68. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/block_at_date.py +0 -0
  69. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/concept.py +0 -0
  70. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/currency_stats.py +0 -0
  71. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/entity.py +0 -0
  72. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/entity_addresses.py +0 -0
  73. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/external_conversion.py +0 -0
  74. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/http_validation_error.py +0 -0
  75. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/label_summary.py +0 -0
  76. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/labeled_item_ref.py +0 -0
  77. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/link.py +0 -0
  78. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/link_utxo.py +0 -0
  79. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/links.py +0 -0
  80. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/links_inner.py +0 -0
  81. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/location_inner.py +0 -0
  82. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/neighbor_address.py +0 -0
  83. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/neighbor_addresses.py +0 -0
  84. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/neighbor_entities.py +0 -0
  85. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/neighbor_entity.py +0 -0
  86. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/rate.py +0 -0
  87. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/rates.py +0 -0
  88. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/related_address.py +0 -0
  89. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/related_addresses.py +0 -0
  90. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/search_result.py +0 -0
  91. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/search_result_by_currency.py +0 -0
  92. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/search_result_level1.py +0 -0
  93. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/search_result_level2.py +0 -0
  94. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/search_result_level3.py +0 -0
  95. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/search_result_level4.py +0 -0
  96. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/search_result_level5.py +0 -0
  97. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/search_result_level6.py +0 -0
  98. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/stats.py +0 -0
  99. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/tag.py +0 -0
  100. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/tag_cloud_entry.py +0 -0
  101. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/tag_summary.py +0 -0
  102. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/taxonomy.py +0 -0
  103. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/token_config.py +0 -0
  104. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/token_configs.py +0 -0
  105. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/tx.py +0 -0
  106. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/tx_account.py +0 -0
  107. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/tx_ref.py +0 -0
  108. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/tx_summary.py +0 -0
  109. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/tx_utxo.py +0 -0
  110. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/tx_value.py +0 -0
  111. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/user_reported_tag.py +0 -0
  112. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/user_tag_report_response.py +0 -0
  113. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/validation_error.py +0 -0
  114. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/model/values.py +0 -0
  115. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/actor.py +0 -0
  116. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/actor_context.py +0 -0
  117. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/address_output.py +0 -0
  118. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/address_tag.py +0 -0
  119. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/address_tags.py +0 -0
  120. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/address_tx.py +0 -0
  121. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/address_tx_utxo.py +0 -0
  122. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/address_txs.py +0 -0
  123. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/block.py +0 -0
  124. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/block_at_date.py +0 -0
  125. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/change_heuristics.py +0 -0
  126. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/cluster.py +0 -0
  127. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/cluster_addresses.py +0 -0
  128. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/coin_join_consensus.py +0 -0
  129. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/coin_join_heuristics.py +0 -0
  130. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/comparison_signal.py +0 -0
  131. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/comparison_verdict.py +0 -0
  132. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/concept.py +0 -0
  133. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/consensus_entry.py +0 -0
  134. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/currency_stats.py +0 -0
  135. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/direct_change_heuristic.py +0 -0
  136. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/entity.py +0 -0
  137. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/entity_addresses.py +0 -0
  138. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/external_conversion.py +0 -0
  139. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/graph_address_network_summary.py +0 -0
  140. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/graph_address_overall.py +0 -0
  141. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/graph_address_ref.py +0 -0
  142. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/graph_address_summary.py +0 -0
  143. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/graph_compare_note.py +0 -0
  144. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/graph_compare_request.py +0 -0
  145. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/graph_compare_signal.py +0 -0
  146. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/graph_compare_verdict.py +0 -0
  147. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/graph_compared_tx.py +0 -0
  148. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/graph_comparison.py +0 -0
  149. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/graph_lineage_edge.py +0 -0
  150. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/graph_note.py +0 -0
  151. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/graph_summary.py +0 -0
  152. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/graph_summary_request.py +0 -0
  153. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/graph_tx_characteristics.py +0 -0
  154. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/graph_tx_network_summary.py +0 -0
  155. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/graph_tx_overall.py +0 -0
  156. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/graph_tx_ref.py +0 -0
  157. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/graph_tx_summary.py +0 -0
  158. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/http_validation_error.py +0 -0
  159. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/join_market_heuristic.py +0 -0
  160. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/label_summary.py +0 -0
  161. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/labeled_item_ref.py +0 -0
  162. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/lineage_edge.py +0 -0
  163. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/link.py +0 -0
  164. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/link_utxo.py +0 -0
  165. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/links.py +0 -0
  166. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/links_inner.py +0 -0
  167. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/location_inner.py +0 -0
  168. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/multi_input_change_heuristic.py +0 -0
  169. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/neighbor_address.py +0 -0
  170. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/neighbor_cluster.py +0 -0
  171. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/neighbor_clusters.py +0 -0
  172. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/neighbor_entities.py +0 -0
  173. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/neighbor_entity.py +0 -0
  174. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/one_time_change_heuristic.py +0 -0
  175. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/per_tx_inner.py +0 -0
  176. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/rate.py +0 -0
  177. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/rates.py +0 -0
  178. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/related_address.py +0 -0
  179. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/related_addresses.py +0 -0
  180. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/search_result.py +0 -0
  181. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/search_result_by_currency.py +0 -0
  182. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/search_result_level1.py +0 -0
  183. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/search_result_level2.py +0 -0
  184. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/search_result_level3.py +0 -0
  185. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/search_result_level4.py +0 -0
  186. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/search_result_level5.py +0 -0
  187. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/search_result_level6.py +0 -0
  188. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/stats.py +0 -0
  189. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/tag.py +0 -0
  190. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/tag_cloud_entry.py +0 -0
  191. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/tag_summary.py +0 -0
  192. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/taxonomy.py +0 -0
  193. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/token_config.py +0 -0
  194. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/token_configs.py +0 -0
  195. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/transaction_comparison.py +0 -0
  196. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/tx.py +0 -0
  197. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/tx_account.py +0 -0
  198. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/tx_characteristics.py +0 -0
  199. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/tx_compared_item.py +0 -0
  200. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/tx_ref.py +0 -0
  201. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/tx_summary.py +0 -0
  202. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/tx_utxo.py +0 -0
  203. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/tx_value.py +0 -0
  204. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/user_reported_tag.py +0 -0
  205. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/user_tag_report_response.py +0 -0
  206. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/utxo_heuristics.py +0 -0
  207. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/validation_error.py +0 -0
  208. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/values.py +0 -0
  209. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/wasabi_heuristic.py +0 -0
  210. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/whirlpool_coin_join_heuristic.py +0 -0
  211. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/models/whirlpool_tx0_heuristic.py +0 -0
  212. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/py.typed +0 -0
  213. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense/rest.py +0 -0
  214. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense_python.egg-info/dependency_links.txt +0 -0
  215. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense_python.egg-info/entry_points.txt +0 -0
  216. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense_python.egg-info/requires.txt +0 -0
  217. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/graphsense_python.egg-info/top_level.txt +0 -0
  218. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/setup.cfg +0 -0
  219. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/tests/test_cli_bulk.py +0 -0
  220. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/tests/test_cli_convenience.py +0 -0
  221. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/tests/test_cli_errors.py +0 -0
  222. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/tests/test_cli_gs.py +0 -0
  223. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/tests/test_cli_io_pipes.py +0 -0
  224. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/tests/test_cli_raw_mirror.py +0 -0
  225. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/tests/test_cli_scan.py +0 -0
  226. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/tests/test_cli_tags_and_dates.py +0 -0
  227. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/tests/test_ext_bulk.py +0 -0
  228. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/tests/test_ext_client.py +0 -0
  229. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/tests/test_ext_io.py +0 -0
  230. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/tests/test_ext_output.py +0 -0
  231. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/tests/test_ext_selectors.py +0 -0
  232. {graphsense_python-2.15.3 → graphsense_python-2.17.0}/tests/test_readme_template.py +0 -0
  233. {graphsense_python-2.15.3 → 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.15.3
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.9
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.15.3
67
- - Package version: 2.15.3
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.9+
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.15.3
45
- - Package version: 2.15.3
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.9+
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.3"
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.15.3'
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 click's current stderr stream on each write so
48
+ # Resolve the current stderr on each write so
51
49
  # `CliRunner(mix_stderr=False)` on click 8.1 captures it.
52
- deprecation_stream=lambda: click.get_text_stream("stderr"),
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.15.3\n"\
537
- "SDK Package Version: 2.15.3".\
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. click.get_text_stream('stderr'))
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",