onnxscript 0.1.0.dev20231122__tar.gz → 0.1.0.dev20231123__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 (201) hide show
  1. {onnxscript-0.1.0.dev20231122/onnxscript.egg-info → onnxscript-0.1.0.dev20231123}/PKG-INFO +2 -2
  2. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/function_libs/torch_lib/graph_building.py +153 -17
  3. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123/onnxscript.egg-info}/PKG-INFO +2 -2
  4. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/pyproject.toml +0 -1
  5. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/setup.py +13 -1
  6. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/LICENSE +0 -0
  7. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/MANIFEST.in +0 -0
  8. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/README.md +0 -0
  9. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/VERSION +0 -0
  10. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/__init__.py +0 -0
  11. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/_internal/__init__.py +0 -0
  12. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/_internal/analysis.py +0 -0
  13. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/_internal/analysis_test.py +0 -0
  14. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/_internal/ast_utils.py +0 -0
  15. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/_internal/autocast.py +0 -0
  16. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/_internal/deprecation.py +0 -0
  17. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/_internal/param_manipulation.py +0 -0
  18. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/_internal/param_manipulation_test.py +0 -0
  19. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/_internal/runtime_typing.py +0 -0
  20. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/_internal/utils.py +0 -0
  21. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/_internal/version_utils.py +0 -0
  22. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/backend/__init__.py +0 -0
  23. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/backend/onnx_backend.py +0 -0
  24. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/backend/onnx_backend_test.py +0 -0
  25. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/backend/onnx_export.py +0 -0
  26. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/backend/onnx_export_test.py +0 -0
  27. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/converter.py +0 -0
  28. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/converter_test.py +0 -0
  29. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/__init__.py +0 -0
  30. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/_infra.py +0 -0
  31. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/context.py +0 -0
  32. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/decorator.py +0 -0
  33. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/formatter.py +0 -0
  34. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/__init__.py +0 -0
  35. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_address.py +0 -0
  36. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_artifact.py +0 -0
  37. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_artifact_change.py +0 -0
  38. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_artifact_content.py +0 -0
  39. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_artifact_location.py +0 -0
  40. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_attachment.py +0 -0
  41. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_code_flow.py +0 -0
  42. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_configuration_override.py +0 -0
  43. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_conversion.py +0 -0
  44. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_edge.py +0 -0
  45. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_edge_traversal.py +0 -0
  46. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_exception.py +0 -0
  47. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_external_properties.py +0 -0
  48. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_external_property_file_reference.py +0 -0
  49. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_external_property_file_references.py +0 -0
  50. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_fix.py +0 -0
  51. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_graph.py +0 -0
  52. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_graph_traversal.py +0 -0
  53. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_invocation.py +0 -0
  54. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_location.py +0 -0
  55. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_location_relationship.py +0 -0
  56. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_logical_location.py +0 -0
  57. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_message.py +0 -0
  58. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_multiformat_message_string.py +0 -0
  59. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_node.py +0 -0
  60. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_notification.py +0 -0
  61. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_physical_location.py +0 -0
  62. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_property_bag.py +0 -0
  63. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_rectangle.py +0 -0
  64. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_region.py +0 -0
  65. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_replacement.py +0 -0
  66. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_reporting_configuration.py +0 -0
  67. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_reporting_descriptor.py +0 -0
  68. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_reporting_descriptor_reference.py +0 -0
  69. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_reporting_descriptor_relationship.py +0 -0
  70. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_result.py +0 -0
  71. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_result_provenance.py +0 -0
  72. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_run.py +0 -0
  73. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_run_automation_details.py +0 -0
  74. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_sarif_log.py +0 -0
  75. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_special_locations.py +0 -0
  76. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_stack.py +0 -0
  77. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_stack_frame.py +0 -0
  78. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_suppression.py +0 -0
  79. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_thread_flow.py +0 -0
  80. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_thread_flow_location.py +0 -0
  81. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_tool.py +0 -0
  82. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_tool_component.py +0 -0
  83. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_tool_component_reference.py +0 -0
  84. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_translation_metadata.py +0 -0
  85. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_version_control_details.py +0 -0
  86. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_web_request.py +0 -0
  87. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/_web_response.py +0 -0
  88. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/sarif/version.py +0 -0
  89. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/diagnostics/infra/utils.py +0 -0
  90. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/evaluator.py +0 -0
  91. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/evaluator_test.py +0 -0
  92. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/function_libs/tools/torch_lib/deduce_type_constraints.py +0 -0
  93. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/function_libs/tools/torch_lib/deduce_type_constraints_test.py +0 -0
  94. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/function_libs/tools/torch_lib/generate_aten_signatures.py +0 -0
  95. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/function_libs/tools/torch_lib/generate_prims_signatures.py +0 -0
  96. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/function_libs/torch_lib/__init__.py +0 -0
  97. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/function_libs/torch_lib/_constants.py +0 -0
  98. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/function_libs/torch_lib/_flags.py +0 -0
  99. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/function_libs/torch_lib/graph_building_test.py +0 -0
  100. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/function_libs/torch_lib/ops/__init__.py +0 -0
  101. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/function_libs/torch_lib/ops/common.py +0 -0
  102. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/function_libs/torch_lib/ops/core.py +0 -0
  103. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/function_libs/torch_lib/ops/fft.py +0 -0
  104. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/function_libs/torch_lib/ops/linalg.py +0 -0
  105. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/function_libs/torch_lib/ops/nested.py +0 -0
  106. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/function_libs/torch_lib/ops/nn.py +0 -0
  107. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/function_libs/torch_lib/ops/prims.py +0 -0
  108. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/function_libs/torch_lib/ops/sparse.py +0 -0
  109. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/function_libs/torch_lib/ops/special.py +0 -0
  110. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/function_libs/torch_lib/registration.py +0 -0
  111. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/function_libs/torch_lib/tensor_typing.py +0 -0
  112. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/irbuilder.py +0 -0
  113. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/main.py +0 -0
  114. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/__init__.py +0 -0
  115. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset1.py +0 -0
  116. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset10.py +0 -0
  117. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset11.py +0 -0
  118. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset12.py +0 -0
  119. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset13.py +0 -0
  120. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset14.py +0 -0
  121. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset15.py +0 -0
  122. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset16.py +0 -0
  123. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset17.py +0 -0
  124. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset18.py +0 -0
  125. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset19.py +0 -0
  126. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset2.py +0 -0
  127. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset3.py +0 -0
  128. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset4.py +0 -0
  129. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset5.py +0 -0
  130. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset6.py +0 -0
  131. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset7.py +0 -0
  132. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset8.py +0 -0
  133. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset9.py +0 -0
  134. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset_ai_onnx_ml1.py +0 -0
  135. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset_ai_onnx_ml2.py +0 -0
  136. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset_ai_onnx_ml3.py +0 -0
  137. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_opset/_impl/opset_ai_onnx_preview_training1.py +0 -0
  138. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/onnx_types.py +0 -0
  139. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/py.typed +0 -0
  140. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/sourceinfo.py +0 -0
  141. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tensor.py +0 -0
  142. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tensor_test.py +0 -0
  143. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/testing.py +0 -0
  144. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/__init__.py +0 -0
  145. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/common/__init__.py +0 -0
  146. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/common/onnx_script_test_case.py +0 -0
  147. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/common/testutils.py +0 -0
  148. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/eager_mode_test.py +0 -0
  149. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/eager_test.py +0 -0
  150. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/external_tensor_test.py +0 -0
  151. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/function_libs/torch_lib/error_reproduction.py +0 -0
  152. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/function_libs/torch_lib/extra_opinfo.py +0 -0
  153. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/function_libs/torch_lib/ops_test.py +0 -0
  154. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/function_libs/torch_lib/ops_test_common.py +0 -0
  155. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/function_libs/torch_lib/ops_test_data.py +0 -0
  156. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/functions/attr_test.py +0 -0
  157. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/functions/gemmgelu.py +0 -0
  158. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/functions/gemmgelu_test.py +0 -0
  159. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/functions/if_test.py +0 -0
  160. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/functions/onnxfns1A_test.py +0 -0
  161. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/functions/onnxfns2_test.py +0 -0
  162. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/functions/onnxfns_test.py +0 -0
  163. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/functions/ort_custom_ops.py +0 -0
  164. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/if_test.py +0 -0
  165. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/loop_test.py +0 -0
  166. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/__init__.py +0 -0
  167. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/attrref.py +0 -0
  168. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/cast_like.py +0 -0
  169. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/different_opset.py +0 -0
  170. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/dropout.py +0 -0
  171. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/eager_op.py +0 -0
  172. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/eg1.py +0 -0
  173. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/getitem.py +0 -0
  174. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/graph_attr.py +0 -0
  175. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/identity.py +0 -0
  176. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/if_statement.py +0 -0
  177. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/loops_break.py +0 -0
  178. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/loops_while.py +0 -0
  179. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/m1.py +0 -0
  180. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/multi.py +0 -0
  181. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/onnxfns1.py +0 -0
  182. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/onnxfns1A.py +0 -0
  183. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/onnxfns2.py +0 -0
  184. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/opt_input.py +0 -0
  185. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/opt_output.py +0 -0
  186. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/renaming.py +0 -0
  187. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/sequences.py +0 -0
  188. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/signal_dft.py +0 -0
  189. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/subfunction.py +0 -0
  190. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/models/type_double.py +0 -0
  191. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/onnx_types_test.py +0 -0
  192. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/tests/operator_test.py +0 -0
  193. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/type_annotation.py +0 -0
  194. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/type_annotation_test.py +0 -0
  195. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/values.py +0 -0
  196. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript/values_test.py +0 -0
  197. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript.egg-info/SOURCES.txt +0 -0
  198. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript.egg-info/dependency_links.txt +0 -0
  199. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript.egg-info/requires.txt +0 -0
  200. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/onnxscript.egg-info/top_level.txt +0 -0
  201. {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231123}/setup.cfg +0 -0
@@ -1,7 +1,8 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: onnxscript
3
- Version: 0.1.0.dev20231122
3
+ Version: 0.1.0.dev20231123
4
4
  Summary: Naturally author ONNX functions and models using a subset of Python
5
+ Home-page: https://onnxscript.ai/
5
6
  Author-email: Microsoft Corporation <onnx@microsoft.com>
6
7
  License: MIT License
7
8
 
@@ -25,7 +26,6 @@ License: MIT License
25
26
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
27
  SOFTWARE.
27
28
 
28
- Project-URL: Repository, https://github.com/microsoft/onnxscript
29
29
  Classifier: Development Status :: 4 - Beta
30
30
  Classifier: Environment :: Console
31
31
  Classifier: Intended Audience :: Developers
@@ -90,11 +90,14 @@ def _rename_intermediate_value(name: str) -> str:
90
90
  class TorchScriptTensor(onnxscript_tensor.Tensor):
91
91
  """A onnxscript tensor that wraps a torchscript Value."""
92
92
 
93
- def __init__(self, value: torch.Value):
93
+ def __init__(
94
+ self,
95
+ value: torch.Value,
96
+ ):
94
97
  super().__init__(None)
95
98
  self._torch_value: torch.Value = value
96
99
  self._concrete_value: Optional[np.ndarray] = None
97
- self._shape: Optional[Tuple[int | None, ...]] = None
100
+ self._shape: Optional[Tuple[int | str | None, ...]] = None
98
101
  self._torch_dtype: Optional[torch.dtype] = None
99
102
  self._name: Optional[str] = None
100
103
  self._is_complex: bool = False
@@ -125,6 +128,9 @@ class TorchScriptTensor(onnxscript_tensor.Tensor):
125
128
 
126
129
  @property # type: ignore[override]
127
130
  def rank(self) -> int | None:
131
+ if self._shape is not None:
132
+ return len(self._shape)
133
+
128
134
  value_type = self._torch_value.type()
129
135
  if value_type is None:
130
136
  return None
@@ -132,7 +138,7 @@ class TorchScriptTensor(onnxscript_tensor.Tensor):
132
138
  return value_type.dim()
133
139
 
134
140
  @property # type: ignore[override]
135
- def shape(self) -> Tuple[int | None, ...] | None:
141
+ def shape(self) -> Tuple[int | str | None, ...] | None:
136
142
  if self._shape is not None:
137
143
  return self._shape
138
144
 
@@ -149,9 +155,17 @@ class TorchScriptTensor(onnxscript_tensor.Tensor):
149
155
  return tuple(shape)
150
156
 
151
157
  @shape.setter
152
- def shape(self, shape: Tuple[int | None, ...]):
153
- self._shape = shape
154
- self._torch_value.setType(self._torch_value.type().with_sizes(list(shape)))
158
+ def shape(self, shape: Union[torch.Size, Tuple[int | str | None, ...]]):
159
+ # Normalize torch symbolic dimension size to str.
160
+ torch_sym_types = (torch.SymInt, torch.SymFloat, torch.SymBool)
161
+ self._shape = tuple(
162
+ str(dim.node) if isinstance(dim, torch_sym_types) else dim # type: ignore[union-attr]
163
+ for dim in shape
164
+ )
165
+ # jit api does not support assigning symbolic shapes,
166
+ # hence symbols are replaced as None.
167
+ jit_shape = tuple(dim if isinstance(dim, int) else None for dim in shape)
168
+ self._torch_value.setType(self._torch_value.type().with_sizes(list(jit_shape)))
155
169
 
156
170
  @property # type: ignore[override]
157
171
  def dtype(self) -> torch.dtype | None:
@@ -195,6 +209,15 @@ class TorchScriptTensor(onnxscript_tensor.Tensor):
195
209
  """The symbolic Value in torch.Graph."""
196
210
  return self._torch_value
197
211
 
212
+ def value_info(self) -> Optional[onnx.ValueInfoProto]:
213
+ try:
214
+ dtype = self.onnx_dtype.value
215
+ except torch.onnx.errors.OnnxExporterError:
216
+ return None
217
+ if dtype == onnx.TensorProto.UNDEFINED:
218
+ return None
219
+ return onnx.helper.make_tensor_value_info(self.name, dtype, self.shape)
220
+
198
221
 
199
222
  @runtime_typing.checked
200
223
  def _unwrap_tensor_to_torch_value(
@@ -223,7 +246,12 @@ def _unwrap_tensor_to_torch_value(
223
246
 
224
247
  @runtime_typing.checked
225
248
  def _wrap_torch_value_to_tensor(
226
- value: Union[torch.Value, Mapping[str, ValidTorchValueType], Sequence[ValidTorchValueType]]
249
+ value: Union[
250
+ torch.Value, Mapping[str, ValidTorchValueType], Sequence[ValidTorchValueType]
251
+ ],
252
+ *,
253
+ shape: Optional[Union[torch.Size, Tuple[Union[int, str, None], ...]]] = None,
254
+ dtype: Optional[torch.dtype] = None,
227
255
  ) -> Union[
228
256
  ValidArgumentType,
229
257
  Dict[str, ValidArgumentType],
@@ -232,7 +260,12 @@ def _wrap_torch_value_to_tensor(
232
260
  ]:
233
261
  """Wrap torch.Value to TorchScriptTensor."""
234
262
  if isinstance(value, torch.Value):
235
- return TorchScriptTensor(value)
263
+ tensor = TorchScriptTensor(value)
264
+ if shape is not None:
265
+ tensor.shape = shape
266
+ if dtype is not None:
267
+ tensor.dtype = dtype
268
+ return tensor
236
269
  if isinstance(value, dict):
237
270
  return {k: _wrap_torch_value_to_tensor(v) for k, v in value.items()} # type: ignore[misc,return-value]
238
271
  if isinstance(value, list):
@@ -399,6 +432,16 @@ class TorchScriptGraph:
399
432
  self._parent_torch_script_graph = parent_torch_script_graph
400
433
  # Domain name of the graph. None if this is the top level graph.
401
434
  self._domain_name: Optional[str] = domain_name
435
+ # Mapping from `torch.Value` to `TorchScriptTensor`.
436
+ # Because `torch.Value` does not provide API to set and retrieve symbolic shapes,
437
+ # and because `TorchScriptTensor` is not accessible through the `torch.Graph` graph,
438
+ # this mapping is used to keep track of the `TorchScriptTensor` associated with
439
+ # `torch.Value`.
440
+ # `TorchScriptTensor` records dtype and symbolic shapes.
441
+ # This info is later serialized as `ValueInfoProto` inside ONNX, to
442
+ # provide shape and dtype information for nodes within nested function calls.
443
+ # https://github.com/onnx/onnx/issues/5487
444
+ self._value_to_tensor: Dict[torch.Value, TorchScriptTensor] = {}
402
445
 
403
446
  if self._domain_name is None and self._parent_torch_script_graph is not None:
404
447
  raise RuntimeError(
@@ -441,7 +484,7 @@ class TorchScriptGraph:
441
484
  def add_input(
442
485
  self,
443
486
  input_name: Optional[str],
444
- shape: Optional[Union[torch.Size, Sequence[Union[int, str, None]]]] = None,
487
+ shape: Optional[Union[torch.Size, Tuple[Union[int, str, None], ...]]] = None,
445
488
  dtype: Optional[torch.dtype] = None,
446
489
  ) -> TorchScriptTensor:
447
490
  if input_name is None:
@@ -462,7 +505,11 @@ class TorchScriptGraph:
462
505
  [dim if isinstance(dim, int) else None for dim in shape] # type: ignore[union-attr]
463
506
  )
464
507
  )
465
- tensor_value = _wrap_torch_value_to_tensor(torch_value)
508
+ tensor_value = _wrap_torch_value_to_tensor(torch_value, shape=shape, dtype=dtype)
509
+ if isinstance(tensor_value, TorchScriptTensor):
510
+ # NOTE: Only track value that maps to tensor.
511
+ # Value that maps to Sequence/Dict of tensors is not tracked.
512
+ self._value_to_tensor[torch_value] = tensor_value
466
513
  return tensor_value # type: ignore[return-value]
467
514
 
468
515
  @runtime_typing.checked
@@ -486,16 +533,16 @@ class TorchScriptGraph:
486
533
  self._initializers_inputs_from_parent[
487
534
  name
488
535
  ] = self._parent_torch_script_graph.add_initializer(name, value)
489
- torch_value = self._torch_graph.addInput(name)
490
- torch_value.setType(torch.TensorType.create_from_tensor(value))
491
- tensor_value = _wrap_torch_value_to_tensor(torch_value)
492
- self._initializers_inputs[name] = tensor_value # type: ignore[assignment]
493
- return tensor_value # type: ignore[return-value]
536
+ else:
537
+ self._initializers[name] = value
494
538
 
495
- self._initializers[name] = value
496
539
  torch_value = self._torch_graph.addInput(name)
497
540
  torch_value.setType(torch.TensorType.create_from_tensor(value))
498
- tensor_value = _wrap_torch_value_to_tensor(torch_value)
541
+ tensor_value = _wrap_torch_value_to_tensor(
542
+ torch_value, shape=value.shape, dtype=value.dtype
543
+ )
544
+ if isinstance(tensor_value, TorchScriptTensor):
545
+ self._value_to_tensor[torch_value] = tensor_value
499
546
  self._initializers_inputs[name] = tensor_value # type: ignore[assignment]
500
547
  return tensor_value # type: ignore[return-value]
501
548
 
@@ -595,11 +642,16 @@ class TorchScriptGraph:
595
642
  n_outputs=n_outputs,
596
643
  )
597
644
  assert result, "Expected at least one output from ONNX op call."
645
+ # NOTE: TorchScriptTensor is created here, however neither dtype nor shape is
646
+ # set. It is expected that exporter will modify the tensor being returned and
647
+ # set these info.
598
648
  if len(result) == 1:
599
649
  tensor = TorchScriptTensor(result[0])
600
650
  tensor.name = _rename_intermediate_value(tensor.name)
651
+ self._value_to_tensor[result[0]] = tensor
601
652
  return tensor
602
653
  tensors = tuple(TorchScriptTensor(v) for v in result)
654
+ self._value_to_tensor.update(dict(zip(result, tensors)))
603
655
  for tensor in tensors:
604
656
  tensor.name = _rename_intermediate_value(tensor.name)
605
657
  return tensors
@@ -634,6 +686,54 @@ class TorchScriptGraph:
634
686
  function_proto_dict[name_domain] = function.to_function_proto()
635
687
  return function_proto_dict
636
688
 
689
+ @runtime_typing.checked
690
+ def _override_with_symbolic_value_info_proto(self, onnx_model: onnx.ModelProto):
691
+ existing_value_info = {info.name: info for info in onnx_model.graph.value_info}
692
+
693
+ # Override value_info for top level graph inputs.
694
+ for input in self.torch_graph.inputs():
695
+ if input not in self._value_to_tensor:
696
+ raise RuntimeError(f"Input '{input.debugName()}' has no type.")
697
+ tensor = self._value_to_tensor[input]
698
+ if (value_info := tensor.value_info()) is None:
699
+ continue
700
+ for i, input_info in enumerate(onnx_model.graph.input):
701
+ if input_info.name == input.debugName():
702
+ onnx_model.graph.input.insert(i, value_info)
703
+ onnx_model.graph.input.remove(input_info)
704
+ break
705
+
706
+ # Override value_info for top level graph outputs.
707
+ for output in self.torch_graph.outputs():
708
+ if output not in self._value_to_tensor:
709
+ raise RuntimeError(f"Output '{output.debugName()}' has no type.")
710
+ tensor = self._value_to_tensor[output]
711
+ if (value_info := tensor.value_info()) is None:
712
+ continue
713
+ for i, output_info in enumerate(onnx_model.graph.output):
714
+ if output_info.name == output.debugName():
715
+ onnx_model.graph.output.insert(i, value_info)
716
+ onnx_model.graph.output.remove(output_info)
717
+ break
718
+
719
+ # Remove existing static/incomplete value info.
720
+ del onnx_model.graph.value_info[:]
721
+
722
+ # Insert value info for nodes within nested function calls.
723
+ # NOTE: This is an experimental feature, since in official ONNX spec, nodes
724
+ # within FunctionProto to have value info. https://github.com/onnx/onnx/issues/5487
725
+ # The names for value info are generated uniquely to be retrievable based on
726
+ # the call site and call stack.
727
+ # The naming strategy is subject to change. Since all local functions representing
728
+ # nn.Modules exported by dynamo exporter have unique call sites, their function
729
+ # op_type name can serve to form the unique identifier for value info.
730
+ function_value_infos = self.generate_function_value_info_proto()
731
+ # Override existing value info for nodes in top level graph.
732
+ existing_value_info.update(function_value_infos)
733
+ onnx_model.graph.value_info.extend(existing_value_info.values())
734
+
735
+ return onnx_model
736
+
637
737
  @runtime_typing.checked
638
738
  def add_op_call(
639
739
  self,
@@ -692,6 +792,39 @@ class TorchScriptGraph:
692
792
  n_outputs=sub_torch_script_graph.num_outputs,
693
793
  )
694
794
 
795
+ @runtime_typing.checked
796
+ def generate_function_value_info_proto(
797
+ self, prefix: str = ""
798
+ ) -> Mapping[str, onnx.ValueInfoProto]:
799
+ """Unique naming strategies
800
+
801
+ {function1_op_type}/{function2_op_type}/.../{value_name}
802
+
803
+ As long as function op_type has unique call site, this is safe.
804
+
805
+ Preferably, the following is better
806
+
807
+ {node1_name}/{node2_name}/.../{value_name}
808
+
809
+ However, node name is an optional field generated on the fly during torchscript
810
+ graph serialization to onnx model proto. Such info is not retrievable at this point.
811
+ """
812
+ named_value_info = {}
813
+ for torch_value, tensor in self._value_to_tensor.items():
814
+ name = torch_value.debugName()
815
+ if (value_info := tensor.value_info()) is None:
816
+ continue
817
+ if prefix:
818
+ name = f"{prefix}/{name}"
819
+ named_value_info[name] = value_info
820
+ for name, sub_graph in self._sub_torch_script_graphs.items():
821
+ named_value_info.update(
822
+ sub_graph.generate_function_value_info_proto(
823
+ f"{prefix}/{name}" if prefix else name
824
+ )
825
+ )
826
+ return named_value_info
827
+
695
828
  @runtime_typing.checked
696
829
  def to_function_proto(self, opset_version: int, function_name: str) -> onnx.FunctionProto:
697
830
  assert len(self.initializers) == 0, "Model local functions cannot have initializers."
@@ -801,6 +934,9 @@ class TorchScriptGraph:
801
934
  onnx_model.functions.extend(function_proto_dict.values())
802
935
  onnx_model.functions.extend(_shared_functions())
803
936
 
937
+ # Override value_infos with symbolic shapes.
938
+ onnx_model = self._override_with_symbolic_value_info_proto(onnx_model)
939
+
804
940
  # `_export_onnx` only exports opset_imports that is visible to it. It does not
805
941
  # export opset_imports for nested functions, since it does not have access to
806
942
  # them. We manually add them back and merge with existing opset_imports in the
@@ -1,7 +1,8 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: onnxscript
3
- Version: 0.1.0.dev20231122
3
+ Version: 0.1.0.dev20231123
4
4
  Summary: Naturally author ONNX functions and models using a subset of Python
5
+ Home-page: https://onnxscript.ai/
5
6
  Author-email: Microsoft Corporation <onnx@microsoft.com>
6
7
  License: MIT License
7
8
 
@@ -25,7 +26,6 @@ License: MIT License
25
26
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
27
  SOFTWARE.
27
28
 
28
- Project-URL: Repository, https://github.com/microsoft/onnxscript
29
29
  Classifier: Development Status :: 4 - Beta
30
30
  Classifier: Environment :: Console
31
31
  Classifier: Intended Audience :: Developers
@@ -7,7 +7,6 @@ name = "onnxscript"
7
7
  dynamic = ["version"]
8
8
  description = "Naturally author ONNX functions and models using a subset of Python"
9
9
  authors = [{ name = "Microsoft Corporation", email = "onnx@microsoft.com" }]
10
- urls = { "Repository" = "https://github.com/microsoft/onnxscript" }
11
10
  readme = "README.md"
12
11
  requires-python = ">=3.8"
13
12
  license = { file = "LICENSE" }
@@ -7,6 +7,7 @@
7
7
  import datetime
8
8
  import os
9
9
  import pathlib
10
+ import subprocess
10
11
 
11
12
  import setuptools
12
13
 
@@ -15,9 +16,20 @@ ROOT_DIR = pathlib.Path(__file__).parent
15
16
  VERSION_FILE = ROOT_DIR / "VERSION"
16
17
  version = VERSION_FILE.read_text().strip()
17
18
 
19
+ project_urls = {
20
+ "Repository": "https://github.com/microsoft/onnxscript",
21
+ }
18
22
  if os.environ.get("ONNX_SCRIPT_RELEASE") != "1":
19
23
  date = datetime.date.today().strftime("%Y%m%d")
20
24
  version = f"{version}.dev{date}"
21
25
 
26
+ commit_hash_cmd = subprocess.run(
27
+ ["git", "rev-parse", "HEAD"], stdout=subprocess.PIPE, check=False
28
+ )
29
+ if commit_hash_cmd.returncode == 0:
30
+ project_urls[
31
+ "Commit"
32
+ ] = f"https://github.com/microsoft/onnxscript/tree/{commit_hash_cmd.stdout.decode('utf-8').strip()}"
33
+
22
34
  # NOTE: Do not include other metadata in setup.py. Put it in pyproject.toml.
23
- setuptools.setup(version=version)
35
+ setuptools.setup(version=version, project_urls=project_urls, url="https://onnxscript.ai/")