databricks-feature-engineering 0.8.0__tar.gz → 0.12.1__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 (183) hide show
  1. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/PKG-INFO +6 -5
  2. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_engineering/client.py +44 -2
  3. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_store/mlflow_model.py +2 -4
  4. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_catalog_client/_catalog_client.py +7 -2
  5. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_publish_client/_publish_client.py +4 -1
  6. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_spark_client/_spark_client.py +4 -0
  7. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_training_scoring_client/_training_scoring_client.py +62 -33
  8. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/api/proto/feature_catalog_pb2.py +158 -175
  9. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/constants.py +1 -1
  10. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/entities/data_type.py +30 -28
  11. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/entities/feature_lookup.py +27 -2
  12. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/training_set.py +33 -0
  13. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/feature_lookup_utils.py +5 -16
  14. databricks_feature_engineering-0.12.1/databricks/ml_features/utils/input_example_utils.py +17 -0
  15. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/rest_utils.py +11 -2
  16. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/signature_utils.py +2 -0
  17. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/training_scoring_utils.py +0 -12
  18. databricks_feature_engineering-0.12.1/databricks/ml_features/utils/version_compatibility_utils.py +26 -0
  19. databricks_feature_engineering-0.12.1/databricks/ml_features/version.py +1 -0
  20. databricks_feature_engineering-0.12.1/databricks/ml_features_common/entities/data_type.py +29 -0
  21. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/entities/feature_column_info.py +9 -0
  22. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/entities/feature_spec.py +4 -4
  23. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/entities/online_feature_table.py +4 -3
  24. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/mlflow_model_constants.py +4 -0
  25. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/protos/feature_spec_pb2.py +14 -14
  26. databricks_feature_engineering-0.12.1/databricks/ml_features_common/utils/data_type_utils.py +69 -0
  27. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/utils/feature_spec_utils.py +12 -5
  28. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/utils/topological_sort.py +41 -8
  29. databricks_feature_engineering-0.12.1/databricks/ml_features_common/utils/yaml_utils.py +47 -0
  30. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks_feature_engineering.egg-info/PKG-INFO +6 -5
  31. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks_feature_engineering.egg-info/SOURCES.txt +5 -0
  32. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks_feature_engineering.egg-info/requires.txt +3 -3
  33. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/requirements.txt +5 -3
  34. databricks_feature_engineering-0.8.0/databricks/ml_features/version.py +0 -1
  35. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/LICENSE.md +0 -0
  36. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/NOTICE.md +0 -0
  37. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/README.md +0 -0
  38. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/__init__.py +0 -0
  39. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/_feature_store_pkg_metadata/__init__.py +0 -0
  40. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/_feature_store_pkg_metadata/_core_client_pkg_metadata/__init__.py +0 -0
  41. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_engineering/__init__.py +0 -0
  42. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_engineering/entities/__init__.py +0 -0
  43. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_engineering/entities/aggregation.py +0 -0
  44. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_engineering/entities/aggregation_function.py +0 -0
  45. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_engineering/entities/cron_schedule.py +0 -0
  46. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_engineering/entities/feature_aggregations.py +0 -0
  47. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_engineering/entities/feature_function.py +0 -0
  48. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_engineering/entities/feature_lookup.py +0 -0
  49. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_engineering/entities/feature_serving_endpoint.py +0 -0
  50. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_engineering/entities/feature_spec_info.py +0 -0
  51. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_engineering/entities/feature_table.py +0 -0
  52. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_engineering/entities/materialized_view_info.py +0 -0
  53. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_engineering/online_store_spec/__init__.py +0 -0
  54. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_engineering/training_set.py +0 -0
  55. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_engineering/upgrade_client.py +0 -0
  56. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_engineering/utils/upgrade_utils.py +0 -0
  57. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_engineering/version.py +0 -0
  58. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_store/__init__.py +0 -0
  59. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_store/client.py +0 -0
  60. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_store/decorators.py +0 -0
  61. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_store/entities/__init__.py +0 -0
  62. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_store/entities/feature.py +0 -0
  63. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_store/entities/feature_function.py +0 -0
  64. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_store/entities/feature_lookup.py +0 -0
  65. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_store/entities/feature_serving_endpoint.py +0 -0
  66. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_store/entities/feature_spec.py +0 -0
  67. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_store/entities/feature_spec_info.py +0 -0
  68. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_store/entities/feature_table.py +0 -0
  69. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_store/online_store_spec/__init__.py +0 -0
  70. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_store/publish_engine/__init__.py +0 -0
  71. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_store/training_set.py +0 -0
  72. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/feature_store/version.py +0 -0
  73. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/__init__.py +0 -0
  74. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_catalog_client/__init__.py +0 -0
  75. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_catalog_client/_catalog_client_helper.py +0 -0
  76. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_compute_client/__init__.py +0 -0
  77. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_compute_client/_compute_client.py +0 -0
  78. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_databricks_client/__init__.py +0 -0
  79. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_databricks_client/_databricks_client.py +0 -0
  80. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_feature_serving_endpoint_client/__init__.py +0 -0
  81. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_feature_serving_endpoint_client/_feature_serving_endpoint_client.py +0 -0
  82. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_information_schema_spark_client/__init__.py +0 -0
  83. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_information_schema_spark_client/_information_schema_spark_client.py +0 -0
  84. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_materialization_client/__init__.py +0 -0
  85. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_materialization_client/_materialization_client.py +0 -0
  86. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_online_store_publish_client/__init__.py +0 -0
  87. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_online_store_publish_client/_online_store_publish_client.py +0 -0
  88. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_online_store_publish_client/_online_store_publish_client_factory.py +0 -0
  89. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_online_store_publish_client/_online_store_publish_nosql_client.py +0 -0
  90. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_online_store_publish_client/_online_store_publish_rdbms_client.py +0 -0
  91. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_publish_client/__init__.py +0 -0
  92. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_spark_client/__init__.py +0 -0
  93. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_spark_client/_spark_client_helper.py +0 -0
  94. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/_training_scoring_client/__init__.py +0 -0
  95. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/api/__init__.py +0 -0
  96. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/api/proto/__init__.py +0 -0
  97. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/entities/__init__.py +0 -0
  98. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/entities/_permission_level.py +0 -0
  99. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/entities/aggregation.py +0 -0
  100. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/entities/aggregation_function.py +0 -0
  101. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/entities/consumer.py +0 -0
  102. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/entities/cron_schedule.py +0 -0
  103. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/entities/feature.py +0 -0
  104. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/entities/feature_aggregations.py +0 -0
  105. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/entities/feature_function.py +0 -0
  106. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/entities/feature_serving_endpoint.py +0 -0
  107. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/entities/feature_spec.py +0 -0
  108. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/entities/feature_spec_info.py +0 -0
  109. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/entities/feature_table.py +0 -0
  110. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/entities/job.py +0 -0
  111. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/entities/key_spec.py +0 -0
  112. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/entities/materialized_view_info.py +0 -0
  113. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/entities/notebook.py +0 -0
  114. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/entities/online_store_detailed.py +0 -0
  115. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/entities/online_store_metadata.py +0 -0
  116. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/entities/tag.py +0 -0
  117. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/environment_variables.py +0 -0
  118. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/flags.py +0 -0
  119. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/local_models/__init__.py +0 -0
  120. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/local_models/databricks_identity_model.py +0 -0
  121. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/online_store_spec/__init__.py +0 -0
  122. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/online_store_spec/amazon_dynamodb_online_store_spec.py +0 -0
  123. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/online_store_spec/amazon_rds_mysql_online_store_spec.py +0 -0
  124. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/online_store_spec/azure_cosmosdb_online_store_spec.py +0 -0
  125. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/online_store_spec/azure_mysql_online_store_spec.py +0 -0
  126. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/online_store_spec/azure_sql_server_online_store_spec.py +0 -0
  127. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/online_store_spec/online_store_properties.py +0 -0
  128. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/online_store_spec/online_store_spec.py +0 -0
  129. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/publish_engine/__init__.py +0 -0
  130. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/publish_engine/publish_cosmosdb_engine.py +0 -0
  131. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/publish_engine/publish_dynamodb_engine.py +0 -0
  132. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/publish_engine/publish_mysql_engine.py +0 -0
  133. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/publish_engine/publish_sql_engine.py +0 -0
  134. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/publish_engine/publish_sql_server_engine.py +0 -0
  135. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/aggregation/aggregation_query.py +0 -0
  136. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/aggregation/aggregation_utils.py +0 -0
  137. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/aggregation/generate_query.py +0 -0
  138. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/cosmosdb_type_utils.py +0 -0
  139. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/cosmosdb_utils.py +0 -0
  140. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/dynamodb_type_utils.py +0 -0
  141. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/e2e_test_utils.py +0 -0
  142. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/feature_serving_endpoint_utils.py +0 -0
  143. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/feature_utils.py +0 -0
  144. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/headers.yaml +0 -0
  145. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/logging_utils.py +0 -0
  146. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/on_demand_utils.py +0 -0
  147. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/publish_utils.py +0 -0
  148. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/request_context.py +0 -0
  149. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/schema_utils.py +0 -0
  150. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/spark_listener.py +0 -0
  151. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/spark_test_utils.py +0 -0
  152. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/spark_utils.py +0 -0
  153. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/test_utils.py +0 -0
  154. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/utils.py +0 -0
  155. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features/utils/validation_utils.py +0 -0
  156. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/__init__.py +0 -0
  157. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/entities/__init__.py +0 -0
  158. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/entities/_feature_store_object.py +0 -0
  159. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/entities/_proto_enum_entity.py +0 -0
  160. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/entities/cloud.py +0 -0
  161. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/entities/column_info.py +0 -0
  162. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/entities/feature_spec_constants.py +0 -0
  163. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/entities/feature_table_info.py +0 -0
  164. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/entities/feature_tables_for_serving.py +0 -0
  165. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/entities/function_info.py +0 -0
  166. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/entities/on_demand_column_info.py +0 -0
  167. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/entities/online_store_for_serving.py +0 -0
  168. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/entities/query_mode.py +0 -0
  169. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/entities/source_data_column_info.py +0 -0
  170. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/entities/store_type.py +0 -0
  171. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/protos/__init__.py +0 -0
  172. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/protos/feature_store_serving_pb2.py +0 -0
  173. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/utils/__init__.py +0 -0
  174. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/utils/converter_utils.py +0 -0
  175. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/utils/dynamodb_utils.py +0 -0
  176. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/utils/feature_spec_test_utils.py +0 -0
  177. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/utils/test_utils_common.py +0 -0
  178. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/utils/uc_utils.py +0 -0
  179. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks/ml_features_common/utils/utils_common.py +0 -0
  180. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks_feature_engineering.egg-info/dependency_links.txt +0 -0
  181. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/databricks_feature_engineering.egg-info/top_level.txt +0 -0
  182. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/pyproject.toml +0 -0
  183. {databricks_feature_engineering-0.8.0 → databricks_feature_engineering-0.12.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: databricks-feature-engineering
3
- Version: 0.8.0
3
+ Version: 0.12.1
4
4
  Summary: Databricks Feature Engineering Client
5
5
  Author-email: Databricks <feedback@databricks.com>
6
6
  License: Databricks Proprietary License
@@ -10,15 +10,16 @@ Requires-Python: >=3.8.10
10
10
  Description-Content-Type: text/markdown
11
11
  License-File: LICENSE.md
12
12
  License-File: NOTICE.md
13
- Requires-Dist: mlflow-skinny[databricks]<3,>=2.11.0
13
+ Requires-Dist: mlflow-skinny[databricks]<4,>=2.16.0
14
14
  Requires-Dist: pyyaml<7,>=6
15
15
  Requires-Dist: boto3<2,>=1.16.7
16
16
  Requires-Dist: dbl-tempo<1,>=0.1.26
17
17
  Requires-Dist: azure-cosmos==4.3.1
18
- Requires-Dist: numpy<2,>=1.19.2
19
- Requires-Dist: protobuf<5,>=3.12.0
18
+ Requires-Dist: numpy<3,>=1.19.2
19
+ Requires-Dist: protobuf<6,>=3.12.0
20
20
  Requires-Dist: flask<3,>=1.1.2
21
21
  Requires-Dist: sqlparse<1,>=0.4.0
22
+ Dynamic: license-file
22
23
 
23
24
  The Databricks Feature Engineering client is used to:
24
25
  * Create, read, and write feature tables
@@ -1,4 +1,5 @@
1
1
  import logging
2
+ import os
2
3
  from types import ModuleType
3
4
  from typing import Any, Dict, List, Optional, Union
4
5
 
@@ -58,6 +59,7 @@ from databricks.ml_features.constants import (
58
59
  _DEFAULT_PUBLISH_STREAM_TRIGGER,
59
60
  _DEFAULT_WRITE_STREAM_TRIGGER,
60
61
  MERGE,
62
+ MODEL_DATA_PATH_ROOT,
61
63
  )
62
64
  from databricks.ml_features.entities.feature_serving_endpoint import (
63
65
  EndpointCoreConfig,
@@ -74,6 +76,7 @@ from databricks.ml_features.utils.feature_utils import (
74
76
  )
75
77
  from databricks.ml_features.utils.request_context import RequestContext
76
78
  from databricks.ml_features.utils.utils import as_list, enable_if
79
+ from databricks.ml_features_common import mlflow_model_constants
77
80
  from databricks.ml_features_common.utils import uc_utils
78
81
 
79
82
  _logger = logging.getLogger(__name__)
@@ -372,6 +375,7 @@ class FeatureEngineeringClient:
372
375
  feature_spec: Optional[str] = None,
373
376
  label: Union[str, List[str], None],
374
377
  exclude_columns: Optional[List[str]] = None,
378
+ use_spark_native_join: bool = False,
375
379
  **kwargs,
376
380
  ) -> TrainingSet:
377
381
  """
@@ -382,10 +386,11 @@ class FeatureEngineeringClient:
382
386
  :class:`FeatureLookups <databricks.ml_features.entities.feature_lookup.FeatureLookup>` are
383
387
  joined into the :class:`DataFrame <pyspark.sql.DataFrame>`, and
384
388
  :class:`FeatureFunctions <databricks.ml_features.entities.feature_function.FeatureFunction>` are
385
- computed on-demand.
386
- :param feature_spec: Name of the feature spec for training set creation.
389
+ computed on-demand. `feature_lookups` cannot be specified if `feature_spec` is provided.
390
+ :param feature_spec: Full name of the FeatureSpec in Unity Catalog. `feature_spec` cannot be specified if `feature_lookups` is provided.
387
391
  :param label: Names of column(s) in :class:`DataFrame <pyspark.sql.DataFrame>` that contain training set labels. To create a training set without a label field, i.e. for unsupervised training set, specify label = None.
388
392
  :param exclude_columns: Names of the columns to drop from the :class:`TrainingSet <databricks.ml_features.training_set.TrainingSet>` :class:`DataFrame <pyspark.sql.DataFrame>`.
393
+ :param use_spark_native_join: Use spark to optimize table joining performance. The optimization is only applicable when `Photon <https://docs.databricks.com/en/compute/photon.html>` is enabled.
389
394
  :return: A :class:`TrainingSet <databricks.ml_features.training_set.TrainingSet>` object.
390
395
  """
391
396
 
@@ -411,6 +416,7 @@ class FeatureEngineeringClient:
411
416
  label=label,
412
417
  exclude_columns=exclude_columns,
413
418
  client_name=request_context.FEATURE_ENGINEERING_CLIENT,
419
+ use_spark_native_join=use_spark_native_join,
414
420
  **kwargs,
415
421
  )
416
422
 
@@ -432,6 +438,7 @@ class FeatureEngineeringClient:
432
438
  label=label,
433
439
  exclude_columns=exclude_columns,
434
440
  client_name=request_context.FEATURE_ENGINEERING_CLIENT,
441
+ use_spark_native_join=use_spark_native_join,
435
442
  **kwargs,
436
443
  )
437
444
 
@@ -602,6 +609,19 @@ class FeatureEngineeringClient:
602
609
 
603
610
  .. note::
604
611
  - ``signature`` is not recommended and it's preferred to use ``infer_input_example``.
612
+ - ``output_schema``: When logging a model without labels in the training set, you must pass ``output_schema`` to ``log_model`` to suggest the output schema explicitly. For example:
613
+
614
+ .. code-block:: python
615
+
616
+ from mlflow.types import ColSpec, DataType, Schema
617
+
618
+ output_schema = Schema([ColSpec(DataType.???)]) # Refer to mlflow signature types for the right choice of type here
619
+ ...
620
+ fe.log_model(
621
+ ...
622
+ output_schema=output_schema
623
+ )
624
+
605
625
 
606
626
  :return: `None`
607
627
  """
@@ -728,6 +748,7 @@ class FeatureEngineeringClient:
728
748
  result_type: str = "double",
729
749
  env_manager: str = LOCAL,
730
750
  params: Optional[dict[str, Any]] = None,
751
+ use_spark_native_join: bool = False,
731
752
  **kwargs,
732
753
  ) -> DataFrame:
733
754
  """
@@ -827,6 +848,7 @@ class FeatureEngineeringClient:
827
848
  :param env_manager: The environment manager to use in order to create the python environment for model inference.
828
849
  See :func:`mlflow.pyfunc.spark_udf` env_manager.
829
850
  :param params: Additional parameters to pass to the model for inference.
851
+ :param use_spark_native_join: Use spark to optimize table joining performance. The optimization is only applicable when `Photon <https://docs.databricks.com/en/compute/photon.html>` is enabled.
830
852
  :return: A :class:`DataFrame <pyspark.sql.DataFrame>`
831
853
  containing:
832
854
 
@@ -844,6 +866,7 @@ class FeatureEngineeringClient:
844
866
  env_manager=env_manager,
845
867
  client_name=request_context.FEATURE_ENGINEERING_CLIENT,
846
868
  params=params,
869
+ use_spark_native_join=use_spark_native_join,
847
870
  **kwargs,
848
871
  )
849
872
 
@@ -1023,3 +1046,22 @@ class FeatureEngineeringClient:
1023
1046
  )
1024
1047
 
1025
1048
  return materialized_view_info
1049
+
1050
+ def build_model_env(self, model_uri: str, save_path: str) -> str:
1051
+ """
1052
+ Prebuild the model Python environment required by the given model and generate an archive file saved to the specified ``save_path``.
1053
+ The resulting environment can then be used in :meth:`FeatureEngineeringClient.score_batch` as the ``prebuilt_env_uri`` parameter.
1054
+
1055
+ :param model_uri: URI of the model used to build the Python environment.
1056
+ :param save_path: Directory path to save the prebuilt model environment archive file.
1057
+ This can be a local directory path, a mounted DBFS path (e.g., '/dbfs/...'),
1058
+ or a mounted UC volume path (e.g., '/Volumes/...').
1059
+
1060
+ :return: The path of the archive file containing the Python environment data.
1061
+ """
1062
+ artifact_path = os.path.join(mlflow.pyfunc.DATA, MODEL_DATA_PATH_ROOT)
1063
+ model_data_path = os.path.join(model_uri, artifact_path)
1064
+ raw_model_path = os.path.join(
1065
+ model_data_path, mlflow_model_constants.RAW_MODEL_FOLDER
1066
+ )
1067
+ return mlflow.pyfunc.build_model_env(raw_model_path, save_path)
@@ -7,11 +7,9 @@ from pyspark.sql import DataFrame, SparkSession
7
7
 
8
8
  from databricks.feature_engineering.client import FeatureEngineeringClient
9
9
  from databricks.ml_features._spark_client._spark_client import SparkClient
10
- from databricks.ml_features.constants import (
11
- _NO_RESULT_TYPE_PASSED,
12
- MODEL_DATA_PATH_ROOT,
13
- )
10
+ from databricks.ml_features.constants import MODEL_DATA_PATH_ROOT
14
11
  from databricks.ml_features.utils import request_context
12
+ from databricks.ml_features_common.mlflow_model_constants import _NO_RESULT_TYPE_PASSED
15
13
 
16
14
 
17
15
  class _FeatureStoreModelWrapper:
@@ -14,6 +14,7 @@ from databricks.ml_features.api.proto.feature_catalog_pb2 import (
14
14
  CreateFeatures,
15
15
  CreateFeatureSpec,
16
16
  CreateFeatureTable,
17
+ DefaultValue,
17
18
  DeleteDataSources,
18
19
  DeleteFeatureSpec,
19
20
  DeleteFeatureTable,
@@ -77,6 +78,7 @@ from databricks.ml_features_common.entities.online_feature_table import (
77
78
  OnlineFeatureTable,
78
79
  )
79
80
  from databricks.ml_features_common.entities.store_type import StoreType
81
+ from databricks.ml_features_common.utils.data_type_utils import serialize_default_value
80
82
  from databricks.ml_features_common.utils.uc_utils import reformat_full_table_name
81
83
 
82
84
  _METHOD_TO_INFO = extract_api_info_for_service(
@@ -629,6 +631,10 @@ class CatalogClient:
629
631
  if feature.lookback_window is None
630
632
  else feature.lookback_window.total_seconds()
631
633
  )
634
+ default_values = [
635
+ DefaultValue(feature_name=k, default_value=serialize_default_value(v))
636
+ for k, v in feature.default_values.items()
637
+ ]
632
638
  return FeatureLookupProto(
633
639
  table_name=feature.table_name,
634
640
  lookup_keys=self._resolve_string_or_list(feature.lookup_key),
@@ -638,6 +644,7 @@ class CatalogClient:
638
644
  feature.timestamp_lookup_key
639
645
  ),
640
646
  lookback_window_seconds=lookback_window_seconds,
647
+ default_values=default_values,
641
648
  )
642
649
 
643
650
  @staticmethod
@@ -705,14 +712,12 @@ class CatalogClient:
705
712
  features: List[Union[FeatureLookup, FeatureFunction]],
706
713
  exclude_columns: List[str],
707
714
  input_columns: List[str],
708
- feature_spec_yaml: Optional[str],
709
715
  req_context: RequestContext,
710
716
  ):
711
717
  req_body = GenerateFeatureSpecYaml(
712
718
  features=self._convert_features_to_proto(features),
713
719
  exclude_columns=self._resolve_string_or_list(exclude_columns),
714
720
  input_columns=input_columns,
715
- feature_spec_yaml=feature_spec_yaml,
716
721
  )
717
722
  response_proto = self._call_endpoint(
718
723
  GenerateFeatureSpecYaml, req_body, req_context
@@ -249,7 +249,10 @@ class PublishClient:
249
249
  if filter_condition:
250
250
  # force filtering before proceeding with other operations.
251
251
  # e.g. computing latest snapshot
252
- publish_df = publish_df.filter(filter_condition).cache()
252
+ publish_df = publish_df.filter(filter_condition)
253
+ # [ML-49081] caching the filtered dataframe does not work if it is streaming
254
+ if not streaming:
255
+ publish_df = publish_df.cache()
253
256
 
254
257
  # Only publish features that exist in the catalog.
255
258
  if len(features_not_in_catalog) > 0:
@@ -13,6 +13,7 @@ from pyspark.sql.functions import col, count, lit
13
13
  from pyspark.sql.types import StructType
14
14
  from pyspark.sql.utils import AnalysisException
15
15
 
16
+ from databricks.ml_features.constants import _PREBUILT_ENV_URI
16
17
  from databricks.ml_features.utils import utils
17
18
  from databricks.ml_features.utils.utils import (
18
19
  sanitize_identifier,
@@ -557,6 +558,7 @@ class SparkClient:
557
558
  result_type=None,
558
559
  env_manager=None,
559
560
  params: Optional[dict[str, Any]] = None,
561
+ prebuilt_env_uri: Optional[str] = None,
560
562
  ):
561
563
  kwargs = {}
562
564
  if result_type:
@@ -565,6 +567,8 @@ class SparkClient:
565
567
  kwargs["env_manager"] = env_manager
566
568
  if params:
567
569
  kwargs["params"] = params
570
+ if prebuilt_env_uri:
571
+ kwargs[_PREBUILT_ENV_URI] = prebuilt_env_uri
568
572
 
569
573
  return spark_udf(self._spark, model_uri, **kwargs)
570
574
 
@@ -8,7 +8,7 @@ from typing import Any, Dict, List, Optional, Set, Union
8
8
  import mlflow
9
9
  import yaml
10
10
  from mlflow.models import Model, ModelSignature
11
- from mlflow.utils.file_utils import TempDir, YamlSafeDumper, read_yaml
11
+ from mlflow.utils.file_utils import TempDir
12
12
  from pyspark.sql import DataFrame
13
13
  from pyspark.sql.functions import struct
14
14
 
@@ -25,7 +25,7 @@ from databricks.ml_features._information_schema_spark_client._information_schema
25
25
  from databricks.ml_features._spark_client._spark_client import SparkClient
26
26
  from databricks.ml_features._spark_client._spark_client_helper import SparkClientHelper
27
27
  from databricks.ml_features.constants import (
28
- _NO_RESULT_TYPE_PASSED,
28
+ _PREBUILT_ENV_URI,
29
29
  _USE_SPARK_NATIVE_JOIN,
30
30
  _WARN,
31
31
  MODEL_DATA_PATH_ROOT,
@@ -36,6 +36,7 @@ from databricks.ml_features.entities.feature_lookup import FeatureLookup
36
36
  from databricks.ml_features.entities.feature_table import FeatureTable
37
37
  from databricks.ml_features.training_set import TrainingSet
38
38
  from databricks.ml_features.utils import (
39
+ input_example_utils,
39
40
  request_context,
40
41
  training_scoring_utils,
41
42
  utils,
@@ -46,6 +47,10 @@ from databricks.ml_features.utils.signature_utils import (
46
47
  drop_signature_inputs_and_invalid_params,
47
48
  get_mlflow_signature_from_feature_spec,
48
49
  )
50
+ from databricks.ml_features.utils.version_compatibility_utils import (
51
+ is_log_model_artifact_path_deprecated,
52
+ mlflow_log_model_starts_run,
53
+ )
49
54
  from databricks.ml_features_common import mlflow_model_constants
50
55
  from databricks.ml_features_common.entities.column_info import ColumnInfo
51
56
  from databricks.ml_features_common.entities.feature_column_info import FeatureColumnInfo
@@ -53,12 +58,14 @@ from databricks.ml_features_common.entities.feature_spec import FeatureSpec
53
58
  from databricks.ml_features_common.entities.source_data_column_info import (
54
59
  SourceDataColumnInfo,
55
60
  )
61
+ from databricks.ml_features_common.mlflow_model_constants import _NO_RESULT_TYPE_PASSED
56
62
  from databricks.ml_features_common.utils import uc_utils, utils_common
57
63
  from databricks.ml_features_common.utils.feature_spec_utils import (
58
64
  assign_topological_ordering,
59
65
  convert_to_yaml_string,
60
66
  get_encoded_graph_map,
61
67
  )
68
+ from databricks.ml_features_common.utils.yaml_utils import read_yaml
62
69
 
63
70
  _logger = logging.getLogger(__name__)
64
71
 
@@ -140,6 +147,9 @@ class TrainingScoringClient:
140
147
  self._catalog_client_helper.add_consumer(
141
148
  consumer_feature_table_map, add_consumer_req_context
142
149
  )
150
+ # Spark query planning is known to cause spark driver to crash if there are many feature tables to PiT join.
151
+ # See https://docs.google.com/document/d/1EyA4vvlWikTJMeinsLkxmRAVNlXoF1eqoZElOdqlWyY/edit
152
+ # So we disable native join by default.
143
153
  training_scoring_utils.warn_if_non_photon_for_native_spark(
144
154
  kwargs.get(_USE_SPARK_NATIVE_JOIN, False), self._spark_client
145
155
  )
@@ -150,10 +160,7 @@ class TrainingScoringClient:
150
160
  ft_metadata.feature_table_metadata_map,
151
161
  ft_metadata.feature_table_data_map,
152
162
  uc_function_infos,
153
- kwargs.get(
154
- _USE_SPARK_NATIVE_JOIN,
155
- training_scoring_utils.get_default_use_spark_native_join(feature_spec),
156
- ),
163
+ kwargs.get(_USE_SPARK_NATIVE_JOIN, False),
157
164
  )
158
165
 
159
166
  def create_training_set_from_feature_lookups(
@@ -210,29 +217,37 @@ class TrainingScoringClient:
210
217
  label_names,
211
218
  )
212
219
 
213
- # Build feature_spec locally for comparison with the feature spec yaml generated by the
214
- # FeatureStore backend. This will be removed once the migration is validated.
215
- local_feature_spec = training_scoring_utils.build_feature_spec(
216
- feature_lookups,
217
- ft_metadata,
218
- column_infos,
219
- exclude_columns,
220
- self._catalog_client.feature_store_workspace_id,
221
- )
222
- local_generated_yaml_string = convert_to_yaml_string(local_feature_spec)
223
- try:
220
+ if client_name == request_context.FEATURE_ENGINEERING_CLIENT:
221
+ # Feature Engineering client moved the FeatureSpec generation logic to the server.
224
222
  input_columns = [col for col in df.columns if col not in label_names]
225
- server_generated_yaml = self._catalog_client.generate_feature_spec_yaml(
223
+ feature_spec_yaml = self._catalog_client.generate_feature_spec_yaml(
226
224
  features,
227
225
  exclude_columns,
228
226
  input_columns,
229
- local_generated_yaml_string,
230
227
  req_context,
231
228
  )
232
- feature_spec = FeatureSpec._from_dict(yaml.safe_load(server_generated_yaml))
233
- except Exception as e:
234
- # Fall back to local generated yaml string if server generated yaml is not available
235
- feature_spec = local_feature_spec
229
+ feature_spec = FeatureSpec._from_dict(yaml.safe_load(feature_spec_yaml))
230
+ else:
231
+ if any(
232
+ [
233
+ hasattr(f, "default_values") and f.default_values
234
+ for f in feature_lookups
235
+ ]
236
+ ):
237
+ _logger.warning(
238
+ "FeatureStore Client does not support default values for FeatureLookups, Any specified default values will be ignored. Please use Feature Engineering Client"
239
+ )
240
+ # clear default values from feature lookups
241
+ for feature_lookup in feature_lookups:
242
+ feature_lookup.default_values = None
243
+ # As server only supports FeatureSpec generation on UC tables. Feature Store client will continue to generate feature spec locally.
244
+ feature_spec = training_scoring_utils.build_feature_spec(
245
+ feature_lookups,
246
+ ft_metadata,
247
+ column_infos,
248
+ exclude_columns,
249
+ self._catalog_client.feature_store_workspace_id,
250
+ )
236
251
 
237
252
  return self.create_training_set(
238
253
  feature_spec,
@@ -388,6 +403,7 @@ class TrainingScoringClient:
388
403
  result_type=result_type,
389
404
  env_manager=env_manager,
390
405
  params=params,
406
+ prebuilt_env_uri=kwargs.get(_PREBUILT_ENV_URI, None),
391
407
  )
392
408
  # TODO (ML-17260) Consider reading the timestamp from the backend instead of feature store artifacts
393
409
  ml_model = Model.load(
@@ -490,10 +506,7 @@ class TrainingScoringClient:
490
506
  feature_table_metadata_map=feature_table_metadata_map,
491
507
  feature_table_data_map=feature_table_data_map,
492
508
  uc_function_infos=uc_function_infos,
493
- use_spark_native_join=kwargs.get(
494
- _USE_SPARK_NATIVE_JOIN,
495
- training_scoring_utils.get_default_use_spark_native_join(feature_spec),
496
- ),
509
+ use_spark_native_join=kwargs.get(_USE_SPARK_NATIVE_JOIN, False),
497
510
  )._augment_df()
498
511
 
499
512
  # Only included FeatureSpec columns should be part of UDF inputs for scoring.
@@ -600,7 +613,9 @@ class TrainingScoringClient:
600
613
  training_set.feature_spec
601
614
  )
602
615
  label_type_map = training_set._label_data_types
603
- df_head = training_set._df.head()
616
+
617
+ labels = training_set._labels
618
+ df_head = training_set._df.drop(*labels).head()
604
619
  else:
605
620
  # FeatureSpec.load expects the root directory of feature_spec.yaml
606
621
  root_dir, file_name = os.path.split(feature_spec_path)
@@ -714,8 +729,14 @@ class TrainingScoringClient:
714
729
  )
715
730
 
716
731
  try:
717
- if df_head is not None and infer_input_example:
718
- input_example = df_head.asDict()
732
+ if (
733
+ df_head is not None
734
+ and signature is not None
735
+ and infer_input_example
736
+ ):
737
+ input_example = input_example_utils.infer_input_example(
738
+ df_head, signature
739
+ )
719
740
  else:
720
741
  input_example = None
721
742
  except Exception:
@@ -723,15 +744,23 @@ class TrainingScoringClient:
723
744
 
724
745
  feature_spec.save(data_path)
725
746
 
726
- # Log the packaged model. If no run is active, this call will create an active run.
747
+ if (
748
+ mlflow.tracking.fluent.active_run() is None
749
+ and not mlflow_log_model_starts_run()
750
+ ):
751
+ mlflow.start_run()
752
+ compatible_parameters = {}
753
+ if is_log_model_artifact_path_deprecated():
754
+ compatible_parameters["name"] = artifact_path
755
+ else:
756
+ compatible_parameters["artifact_path"] = artifact_path
727
757
  mlflow.pyfunc.log_model(
728
- artifact_path=artifact_path,
729
758
  loader_module=mlflow_model_constants.MLFLOW_MODEL_NAME,
730
759
  data_path=data_path,
731
- code_path=None,
732
760
  conda_env=conda_env,
733
761
  signature=signature,
734
762
  input_example=input_example,
763
+ **compatible_parameters,
735
764
  )
736
765
  if registered_model_name is not None:
737
766
  # The call to mlflow.pyfunc.log_model will create an active run, so it is safe to