This is an automated email from the ASF dual-hosted git repository.
skrawcz pushed a change to branch stefan/while-dfs
in repository https://gitbox.apache.org/repos/asf/hamilton.git
omit 97770850 While loop DFS implementation
add ac349407 Fix failing unit tests for pandas and mlflow compatibility
(#1463)
add 3c758593 Add missing dependency group for async SQLAlchemy tests
(#1474)
add bb1dee89 chore: Bump Ruff to 0.15.0 (#1455)
add 3bb44b9d Enable the UP006 and UP045 inspections
add 357a43ac Remove tests for pre-3.9 types (Dict, Tuple)
add 846cc74b Standardize `@pytest.mark.parametrize` parameters (PT006,
PT007)
add a2d0f205 Skip ray tests on Python 3.14 and fix ruff.toml config
add 157ecd60 Address various test failures
add 5d57508c Remove outdated numpy<2 version pins
add f0b80121 Fix spark failures on py3.14
add d4319d5f Add the sphinx-llms-txt docs plugin for better LLM
integration (#1482)
add 67e38e2d Apply Apache Incubator press-kit logo to docs (#1438)
add 7f0916d7 Adds script to help promote RC artifacts
add 7e2ffb84 Updates package to be apache-hamilton
add 223a8f2b Removes some README links that shouldn't be there
add 18ebdb94 Changes copy to mv
add 66302562 Adds downloads to docs
add b6bd7f21 Bump sqlparse from 0.5.0 to 0.5.4 in /ui/backend/server
add a49dab35 Bump qs and express in /ui/frontend
add eac91aa2 Bump jsonpath from 1.1.1 to 1.2.1 in /ui/frontend
add 353ea200 Bump cryptography from 44.0.1 to 46.0.5 in /ui/backend/server
add 7095981f Bump ajv from 6.12.6 to 6.14.0 in /contrib/docs
add c1c67687 Bump webpack from 5.99.9 to 5.105.0 in /ui/frontend
add ab5d4baf Bump webpack from 5.89.0 to 5.105.0 in
/dev_tools/vscode_extension
add d576aae1 Bump django from 4.2.27 to 4.2.28 in /ui/backend/server
add c40bf92b Bump protobuf from 4.25.8 to 6.33.5 in /ui/backend/server
add 36931c23 Bump eslint from 8.55.0 to 9.26.0 in /ui/frontend
add de24202c Bump lodash from 4.17.21 to 4.17.23 in
/dev_tools/vscode_extension
add 20167107 Bump lodash from 4.17.21 to 4.17.23 in /contrib/docs
add 84c1d25f Bump urllib3 from 2.6.0 to 2.6.3 in /ui/backend/server
add 1bf29b46 Bump aiohttp from 3.12.14 to 3.13.3 in /ui/backend/server
add 7d831f30 Add Claude Code plugin for AI-assisted Hamilton development
(#1460)
add 072c40ce perf: use deque for BFS queue in graph traversal (#1494)
add e8b7c954 Update main package pyproject.toml for flit compatibility
add c86d2770 Convert apache-hamilton-sdk to use flit
add 97084895 Convert sf-hamilton-lsp to apache-hamilton-lsp with flit
add bd6b2500 Convert sf-hamilton-contrib to apache-hamilton-contrib with
flit
add eb0f794d Convert sf-hamilton-ui to apache-hamilton-ui with flit
add e53bc56b Update apache_release_helper.py to support per-package builds
add 7276dc83 Add -src suffix to source tarball names
add 2938631e Remove obsolete setup.py and setup.cfg files
add cbd5e9df Use FLIT_USE_VCS environment variable instead of --no-use-vcs
flag
add a6e1b5c0 Enhance UI build script following Apache Burr pattern
add 28a58be6 Fix infinite rerender loop and React warnings in DAG
visualization
add 95dba67b Upgrade UI to Vite and enhance build system for mini mode
add 7df3e3e1 Migrate UI Docker infrastructure to uv and Python 3.12
add 6f3ca6de Add Apache Software Foundation compliance to Docker
infrastructure
add 311b369f Consolidates ui test_tracking scripts
add 4dbaf085 Fix pandas 2.2+ compatibility in pandas_extensions.py
add 58ccfbae Fix SDK CI to use hamilton from source instead of PyPI
add db4fb53f Remove unnecessary files
add 7172d756 Makes lsp CI install latest hamilton on branch
add db0e8275 Update contrib/NOTICE with third-party attributions
add 124ae2cd Fix ESLint config to use .mjs extension
add 98ff0803 Add PostgreSQL 12→16 migration scripts for Hamilton UI
add ee3fff34 Use uv run python for consistent environment in UI scripts
add 850c5d23 Upgrade from PostgreSQL 16 to PostgreSQL 18
add ee8b73c0 Update start_mini_mode.sh to use uv and PostgreSQL 18
add c32f2e60 Fix PostgreSQL 18 Docker volume mount point
add 0952d657 Fix database credentials in migration scripts
add 0817a2fa Upgrade Node.js version from 16.x to 20.x in frontend workflow
add c1c839a0 removing suprious file
add 5f2c5adb Address Dev-iL PR review comments: use pathlib.Path
add 004756c3 Add eslint-plugin-react and downgrade linting errors to
warnings
add b5c90813 Address Dev-iL PR review: consolidate dependencies to
pyproject.toml
add 9e6ee326 Add TODO comments for Apache Docker image namespace transition
add 4bd61f6d Add valid prettier config and run format - Add
.prettierrc.json with standard React/TypeScript formatting rules - Run prettier
--write to format all frontend source files - Fixes GitHub Actions failure:
'Unexpected end of JSON input while parsing empty string'
add 3a471c69 Fixes contrib docusaurus to resolve some depnendabot alerts
add 6c9af804 Use pathlib consistently for build directory paths in Django
settings and urls
add 812b202b Switch LSP workflow from pip to uv via astral-sh/setup-uv
action
add 97cbffb8 Remove *.claude* gitignore pattern that conflicts with
.claude directory
add 836c6f90 Rename migrate_postgres scripts to upgrade_postgres to avoid
confusion with DB schema migrations
add b6e4acc4 Bump django from 5.2.11 to 5.2.12 in /ui/backend
add 06ffd37e Fix `build-docs` CI failure for non-maintainer PRs
add 8e51a95f Update upload artifact in github actions
add 06d1275a Add async data validator support
add 727c4ff2 While loop DFS implementation
add ca3bcc9a Fixes up bugs and iteration to behave like before
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (97770850)
\
N -- N -- N refs/heads/stefan/while-dfs (ca3bcc9a)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
No new revisions were added by this update.
Summary of changes:
.claude-plugin/CHANGELOG.md | 87 +
.claude-plugin/README.md | 257 +
.claude-plugin/plugin.json | 35 +
.claude-plugin/skills/core/SKILL.md | 395 +
.../skills/hamilton-dev-workflow/SKILL.md | 522 +
.claude-plugin/skills/integrations/SKILL.md | 549 +
.claude-plugin/skills/llm/SKILL.md | 507 +
.claude-plugin/skills/observability/SKILL.md | 493 +
.claude-plugin/skills/scale/SKILL.md | 347 +
.github/workflows/docusaurus-gh-pages.yml | 2 +-
.github/workflows/hamilton-lsp.yml | 4 +-
.github/workflows/hamilton-main.yml | 13 +-
.github/workflows/hamilton-sdk.yml | 1 +
.github/workflows/hamilton-ui-frontend.yml | 2 +-
.github/workflows/sphinx-docs.yml | 7 +-
.gitignore | 1 +
.pre-commit-config.yaml | 4 +-
README.md | 2 +-
DISCLAIMER => contrib/DISCLAIMER | 0
contrib/LICENSE | 6 +-
contrib/NOTICE | 35 +
contrib/docs/blog/2023-11-13-welcome/index.md | 14 +-
contrib/docs/compile_docs.py | 106 +-
contrib/docs/docs/README.md | 11 +-
contrib/docs/docs/Users/_category_.json | 4 +-
contrib/docs/docusaurus.config.js | 23 +-
contrib/docs/package-lock.json | 20655 +++++++++------
contrib/docs/package.json | 26 +-
contrib/hamilton/contrib/dagworks/author.md | 6 +-
.../dagworks/sphinx_doc_chunking/test.ipynb | 21 +-
.../dagworks/text_summarization/__init__.py | 7 +-
.../contrib/dagworks/text_summarization/test.ipynb | 1 -
.../dagworks/translate_to_hamilton/test.ipynb | 2 -
.../contrib/dagworks/translate_to_hamilton/test.py | 4 +-
.../user/elijahbenizzy/caption_images/__init__.py | 16 +-
.../elijahbenizzy/convert_images_s3/__init__.py | 4 +-
.../parallel_load_dataframes_s3/__init__.py | 4 +-
.../user/skrawcz/customize_embeddings/__init__.py | 13 +-
.../skrawcz/customize_embeddings/notebook.ipynb | 14 +-
.../contrib/user/skrawcz/fine_tuning/__init__.py | 2 +-
.../contrib/user/zilto/lancedb_vdb/__init__.py | 25 +-
.../contrib/user/zilto/lancedb_vdb/run.ipynb | 33 +-
.../user/zilto/llm_generate_code/__init__.py | 2 +-
.../user/zilto/nixtla_mlforecast/__init__.py | 51 +-
.../contrib/user/zilto/nixtla_mlforecast/run.ipynb | 18 +-
.../user/zilto/nixtla_statsforecast/__init__.py | 7 +-
.../user/zilto/nixtla_statsforecast/run.ipynb | 19 +-
.../user/zilto/text_summarization/__init__.py | 7 +-
.../contrib/user/zilto/webscraper/__init__.py | 8 +-
.../contrib/user/zilto/webscraper/run.ipynb | 11 +-
.../contrib/user/zilto/xgboost_optuna/__init__.py | 15 +-
.../contrib/user/zilto/xgboost_optuna/run.ipynb | 32 +-
contrib/hamilton/contribute.py | 7 +-
contrib/pyproject.toml | 78 +
contrib/setup.cfg | 18 -
contrib/setup.py | 103 -
DISCLAIMER => dev_tools/language_server/DISCLAIMER | 0
LICENSE => dev_tools/language_server/LICENSE | 0
NOTICE => dev_tools/language_server/NOTICE | 0
dev_tools/language_server/hamilton_lsp/server.py | 3 +-
dev_tools/language_server/pyproject.toml | 76 +-
dev_tools/language_server/tests/ls_setup.py | 4 +-
dev_tools/vscode_extension/package-lock.json | 632 +-
docs/_static/hamilton-incubator-logo.png | Bin 0 -> 659320 bytes
docs/_static/hamilton-incubator-logo.svg | 9 +
docs/asf/downloads.rst | 57 +
docs/asf/index.rst | 2 +
docs/concepts/function-modifiers.rst | 3 +-
docs/conf.py | 8 +
docs/ecosystem/claude-code-plugin.md | 406 +
docs/ecosystem/index.md | 7 +
docs/how-tos/run-data-quality-checks.rst | 7 +
docs/index.md | 12 +
docs/reference/decorators/check_output.rst | 11 +
examples/LLM_Workflows/GraphRAG/application.py | 5 +-
.../LLM_Workflows/GraphRAG/ingest_notebook.ipynb | 6 +-
examples/LLM_Workflows/GraphRAG/notebook.ipynb | 80 +-
.../LLM_Workflows/NER_Example/lancedb_module.py | 3 +-
.../LLM_Workflows/NER_Example/ner_extraction.py | 3 +-
examples/LLM_Workflows/NER_Example/notebook.ipynb | 67 +-
.../RAG_document_extract_chunk_embed/pipeline.py | 8 +-
.../simple_pipeline.ipynb | 27 +-
examples/LLM_Workflows/image_telephone/adapters.py | 15 +-
.../LLM_Workflows/image_telephone/notebook.ipynb | 41 +-
.../LLM_Workflows/image_telephone/streamlit.py | 12 +-
.../knowledge_retrieval/arxiv_articles.py | 7 +-
.../knowledge_retrieval/summarize_text.py | 6 +-
.../langchain_comparison/hamilton_anthropic.py | 2 +-
.../langchain_comparison/hamilton_async.py | 5 +-
.../langchain_comparison/hamilton_batch.py | 7 +-
.../langchain_comparison/hamilton_completion.py | 5 +-
.../langchain_comparison/hamilton_invoke.py | 5 +-
.../langchain_comparison/hamilton_streamed.py | 6 +-
.../langchain_comparison/vanilla_async.py | 3 +-
.../langchain_comparison/vanilla_batch.py | 3 +-
.../langchain_comparison/vanilla_invoke.py | 3 +-
.../langchain_comparison/vanilla_streamed.py | 4 +-
.../LLM_Workflows/llm_logging/summarization.py | 4 +-
.../modular_llm_stack/marqo_module.py | 6 +-
.../observability_openllmetry/notebook.ipynb | 4 +-
.../backend/parallel_summarization.py | 4 +-
.../pdf_summarizer/backend/summarization.py | 4 +-
.../pdf_summarizer/run_on_spark/run.ipynb | 20 +-
.../pdf_summarizer/run_on_spark/summarization.py | 4 +-
.../backend/ingestion.py | 4 +-
.../scraping_and_chunking/notebook.ipynb | 5 +-
.../scraping_and_chunking/spark/notebook.ipynb | 12 +-
.../airflow/plugins/absenteeism/prepare_data.py | 3 +-
.../airflow/plugins/absenteeism/train_model.py | 9 +-
.../plugins/function_modules/data_loaders.py | 4 +-
examples/async/README.md | 10 +
examples/aws/sagemaker/notebook.ipynb | 28 +-
examples/caching/in_memory_tutorial.ipynb | 3 +-
examples/caching/materializer_tutorial.ipynb | 52 +-
examples/caching/tutorial.ipynb | 86 +-
examples/caching_nodes/caching.ipynb | 16 +-
.../caching_graph_adapter/caching_nodes.ipynb | 30 +-
.../caching_nodes/diskcache_adapter/notebook.ipynb | 13 +-
examples/contrib/notebook.ipynb | 20 +-
.../notebooks/dagworks-translate_to_hamilton.ipynb | 15 +-
.../dagster_code/tutorial/resources/__init__.py | 5 +-
examples/dagster/hamilton_code/mock_api.py | 4 +-
examples/dagster/hamilton_code/notebook.ipynb | 6 +-
.../dask/community_demo/demo_day_notebook.ipynb | 51 +-
examples/dask/hello_world/notebook.ipynb | 4 +-
examples/data_loaders/data_loaders.ipynb | 36 +-
examples/data_quality/pandera/data_loaders.py | 4 +-
examples/data_quality/simple/data_loaders.py | 4 +-
examples/dbt/python_transforms/data_loader.py | 4 +-
.../dbt/python_transforms/feature_transforms.py | 5 +-
examples/dbt/python_transforms/model_pipeline.py | 3 +-
examples/decoupling_io/adapters.py | 19 +-
examples/decoupling_io/components/feature_data.py | 12 +-
examples/decoupling_io/run.py | 3 +-
examples/dlt/dlt_plugin.ipynb | 16 +-
examples/dlt/notebook.ipynb | 11 +-
examples/dlt/slack/__init__.py | 25 +-
examples/dlt/slack/helpers.py | 9 +-
examples/due_date_probabilities/notebook.ipynb | 69 +-
examples/due_date_probabilities/probabilities.py | 3 +-
.../probability_estimation.py | 3 +-
examples/experiment_management/notebook.ipynb | 11 +-
.../feature_repo/retrieval.ipynb | 13 +-
.../scenario_1/offline_loader.py | 4 +-
.../scenario_2/offline_loader.py | 4 +-
.../scenario_2/online_loader.py | 6 +-
.../components/utils.py | 5 +-
.../mpg-translation/MPGSimple.ipynb | 11 +-
.../mpg-translation/MPGSimpleAdvancedTarget.ipynb | 6 +-
.../mpg-translation/MPGSimpleTarget.ipynb | 6 +-
.../mpg-translation/ProceduralMPGNotebook.ipynb | 10 +-
examples/hamilton_ui/components/model_fitting.py | 4 +-
examples/hamilton_ui/notebook.ipynb | 17 +-
examples/hello_world/my_notebook.ipynb | 8 +-
.../ibis/feature_engineering/column_dataflow.py | 3 +-
.../ibis/feature_engineering/table_dataflow.py | 3 +-
examples/ibisml/table_dataflow.py | 3 +-
examples/jupyter_notebook_magic/example.ipynb | 4 +
.../hamilton-code/notebooks/interactive.ipynb | 1 +
.../src/hamilton_code/data_science.py | 5 +-
.../kedro/kedro-code/src/kedro_code/__main__.py | 9 +-
.../kedro-code/src/kedro_code/pipeline_registry.py | 4 +-
.../src/kedro_code/pipelines/data_science/nodes.py | 3 +-
.../tests/pipelines/data_science/test_pipeline.py | 1 +
.../kedro/kedro-plugin/kedro_to_hamilton.ipynb | 40 +-
examples/lineage/data_loading.py | 5 +-
examples/lineage/lineage_commands.py | 12 +-
examples/lineage/lineage_snippets.ipynb | 61 +-
examples/lineage/model_pipeline.py | 5 +-
examples/materialization/custom_materializers.py | 11 +-
.../datasaver_dataloader_example/notebook.ipynb | 6 +-
examples/materialization/model_training.py | 3 +-
examples/materialization/notebook.ipynb | 77 +-
examples/mlflow/tutorial.ipynb | 20 +-
.../model_examples/modular_example/notebook.ipynb | 282 +-
.../scikit-learn/Hamilton_for_ML_dataflows.ipynb | 12 +-
.../scikit-learn/my_train_evaluate_logic.py | 3 +-
.../time-series/Hamilton-TimeSeriesmodel.ipynb | 8 +-
.../model_examples/time-series/data_loaders.py | 3 +-
examples/model_examples/time-series/transforms.py | 3 +-
.../abstract_functionality_blueprint/mutate.py | 4 +-
.../mutate_on_output.py | 6 +-
.../notebook.ipynb | 40 +-
.../pipe_output.py | 4 +-
.../pipe_output_on_output.py | 3 +-
.../abstract_functionality_blueprint/procedural.py | 4 +-
examples/narwhals/notebook.ipynb | 9 +-
.../air-quality-analysis/hamilton_notebook.ipynb | 42 +-
examples/openlineage/notebook.ipynb | 7 +-
examples/openlineage/pipeline.py | 5 +-
examples/pandas/materialization/notebook.ipynb | 3 +-
.../pandas/split-apply-combine/my_functions.py | 7 +-
examples/pandas/split-apply-combine/my_wrapper.py | 3 +-
examples/pandas/split-apply-combine/notebook.ipynb | 14 +-
examples/pandas/with_columns/notebook.ipynb | 33 +-
examples/parallelism/file_processing/list_data.py | 5 +-
.../parallelism/file_processing/notebook.ipynb | 43 +-
examples/parallelism/graceful_running/functions.py | 13 +-
examples/parallelism/graceful_running/run.py | 8 +-
.../lazy_threadpool_execution/notebook.ipynb | 160 +-
examples/parallelism/star_counting/functions.py | 9 +-
examples/parallelism/star_counting/notebook.ipynb | 46 +-
examples/parallelism/star_counting/run.py | 3 +-
examples/people_data_labs/notebook.ipynb | 20 +-
examples/plotly/model_training.py | 3 +-
examples/plotly/notebook.ipynb | 36 +-
examples/polars/materialization/notebook.ipynb | 5 +-
examples/polars/notebook.ipynb | 9 +-
examples/polars/with_columns/notebook.ipynb | 32 +-
examples/prefect/hamilton_prefect_notebook.ipynb | 32 +-
examples/prefect/prepare_data.py | 3 +-
examples/prefect/train_model.py | 9 +-
examples/ray/hello_world/notebook.ipynb | 12 +-
.../hamilton_notebook.ipynb | 22 +-
examples/reusing_functions/main.py | 4 +-
examples/reusing_functions/reusing_functions.ipynb | 29 +-
examples/reverse_etl/notebook.ipynb | 9 +-
.../species_distribution_modeling/grids.py | 11 +-
.../hamilton_notebook.ipynb | 67 +-
.../original_script.py | 2 +-
.../postprocessing_results.py | 6 +-
.../species_distribution_modeling/preprocessing.py | 9 +-
.../transformer/hamilton_notebook.ipynb | 45 +-
examples/scikit-learn/transformer/run.py | 8 +-
examples/slack/notebook.ipynb | 3 +-
examples/spark/pyspark/dataflow.py | 3 +-
examples/spark/pyspark/notebook.ipynb | 101 +-
.../pyspark_feature_catalog/example_usage.ipynb | 13 +-
examples/spark/tpc-h/query_1.py | 2 +-
.../world_of_warcraft__pandas.ipynb | 12 +-
.../world_of_warcraft__spark_v1.ipynb | 11 +-
.../world_of_warcraft__spark_v2.ipynb | 11 +-
examples/streamlit/app.py | 5 +-
examples/styling_visualization/data_loading.py | 5 +-
examples/styling_visualization/model_pipeline.py | 5 +-
examples/vaex/notebook.ipynb | 2 +-
examples/validate_examples.py | 5 +-
.../validation/static_validator/notebook.ipynb | 24 +-
examples/validation/static_validator/run.py | 3 +-
hamilton/ad_hoc_utils.py | 6 +-
hamilton/async_driver.py | 42 +-
hamilton/base.py | 48 +-
hamilton/caching/adapter.py | 145 +-
hamilton/caching/cache_key.py | 6 +-
hamilton/caching/fingerprinting.py | 3 +-
hamilton/caching/stores/base.py | 17 +-
hamilton/caching/stores/file.py | 10 +-
hamilton/caching/stores/memory.py | 29 +-
hamilton/caching/stores/sqlite.py | 11 +-
hamilton/cli/__main__.py | 19 +-
hamilton/cli/commands.py | 9 +-
hamilton/cli/logic.py | 37 +-
hamilton/common/__init__.py | 11 +-
hamilton/data_quality/base.py | 45 +-
hamilton/data_quality/default_validators.py | 53 +-
hamilton/data_quality/pandera_validators.py | 6 +-
hamilton/dataflows/__init__.py | 30 +-
hamilton/dev_utils/deprecation.py | 24 +-
hamilton/driver.py | 212 +-
hamilton/execution/debugging_utils.py | 5 +-
hamilton/execution/executors.py | 7 +-
hamilton/execution/graph_functions.py | 28 +-
hamilton/execution/grouping.py | 60 +-
hamilton/execution/state.py | 64 +-
.../experimental/decorators/parameterize_frame.py | 5 +-
hamilton/experimental/h_cache.py | 15 +-
hamilton/experimental/h_databackends.py | 3 +-
hamilton/function_modifiers/adapters.py | 53 +-
hamilton/function_modifiers/base.py | 59 +-
hamilton/function_modifiers/configuration.py | 29 +-
hamilton/function_modifiers/delayed.py | 11 +-
hamilton/function_modifiers/dependencies.py | 17 +-
hamilton/function_modifiers/expanders.py | 61 +-
hamilton/function_modifiers/macros.py | 82 +-
hamilton/function_modifiers/metadata.py | 19 +-
hamilton/function_modifiers/recursive.py | 91 +-
hamilton/function_modifiers/validation.py | 40 +-
hamilton/graph.py | 99 +-
hamilton/graph_types.py | 28 +-
hamilton/graph_utils.py | 4 +-
hamilton/htypes.py | 27 +-
hamilton/io/data_adapters.py | 19 +-
hamilton/io/default_data_loaders.py | 45 +-
hamilton/io/materialization.py | 44 +-
hamilton/io/utils.py | 10 +-
hamilton/lifecycle/api.py | 153 +-
hamilton/lifecycle/base.py | 148 +-
hamilton/lifecycle/default.py | 145 +-
hamilton/models.py | 6 +-
hamilton/node.py | 42 +-
hamilton/plugins/dlt_extensions.py | 21 +-
hamilton/plugins/h_dask.py | 12 +-
hamilton/plugins/h_ddog.py | 50 +-
hamilton/plugins/h_diskcache.py | 16 +-
hamilton/plugins/h_experiments/data_model.py | 4 +-
hamilton/plugins/h_experiments/hook.py | 8 +-
hamilton/plugins/h_experiments/server.py | 9 +-
hamilton/plugins/h_kedro.py | 20 +-
hamilton/plugins/h_logging.py | 63 +-
hamilton/plugins/h_mlflow.py | 32 +-
hamilton/plugins/h_narwhals.py | 12 +-
hamilton/plugins/h_openlineage.py | 28 +-
hamilton/plugins/h_opentelemetry.py | 23 +-
hamilton/plugins/h_pandas.py | 21 +-
hamilton/plugins/h_pandera.py | 3 +-
hamilton/plugins/h_polars.py | 27 +-
hamilton/plugins/h_polars_lazyframe.py | 27 +-
hamilton/plugins/h_pyarrow.py | 4 +-
hamilton/plugins/h_pydantic.py | 3 +-
hamilton/plugins/h_ray.py | 16 +-
hamilton/plugins/h_rich.py | 11 +-
hamilton/plugins/h_schema.py | 21 +-
hamilton/plugins/h_slack.py | 14 +-
hamilton/plugins/h_spark.py | 120 +-
hamilton/plugins/h_threadpool.py | 9 +-
hamilton/plugins/h_tqdm.py | 15 +-
hamilton/plugins/h_vaex.py | 12 +-
hamilton/plugins/huggingface_extensions.py | 66 +-
hamilton/plugins/ibis_extensions.py | 4 +-
hamilton/plugins/jupyter_magic.py | 14 +-
hamilton/plugins/kedro_extensions.py | 13 +-
hamilton/plugins/lightgbm_extensions.py | 19 +-
hamilton/plugins/matplotlib_extensions.py | 35 +-
hamilton/plugins/mlflow_extensions.py | 41 +-
hamilton/plugins/numpy_extensions.py | 41 +-
hamilton/plugins/pandas_extensions.py | 707 +-
hamilton/plugins/plotly_extensions.py | 39 +-
hamilton/plugins/polars_extensions.py | 4 +-
hamilton/plugins/polars_lazyframe_extensions.py | 52 +-
hamilton/plugins/polars_post_1_0_0_extensions.py | 211 +-
hamilton/plugins/polars_pre_1_0_0_extension.py | 195 +-
hamilton/plugins/pydantic_extensions.py | 6 +-
hamilton/plugins/sklearn_plot_extensions.py | 19 +-
hamilton/plugins/spark_extensions.py | 11 +-
hamilton/plugins/xgboost_extensions.py | 15 +-
hamilton/plugins/yaml_extensions.py | 15 +-
hamilton/registry.py | 32 +-
hamilton/telemetry.py | 17 +-
plugin_tests/h_dask/test_h_dask.py | 12 +-
plugin_tests/h_ray/conftest.py | 13 +
plugin_tests/h_spark/test_h_schema.py | 2 +-
plugin_tests/h_spark/test_h_spark.py | 17 +-
pyproject.toml | 81 +-
scripts/add_license_headers.py | 11 +-
scripts/apache_release_helper.py | 430 +-
scripts/check_license_headers.py | 3 +-
scripts/promote_rc.sh | 107 +
tests/caching/metadata_store/test_base.py | 3 +-
tests/caching/result_store/test_file.py | 2 +-
tests/caching/test_fingerprinting.py | 4 +-
tests/caching/test_integration.py | 15 +-
tests/caching/test_result_store.py | 21 +-
tests/execution/test_executors.py | 2 +-
tests/execution/test_graph_functions.py | 10 +-
tests/function_modifiers/test_adapters.py | 53 +-
tests/function_modifiers/test_base.py | 12 +-
tests/function_modifiers/test_combined.py | 8 +-
tests/function_modifiers/test_delayed.py | 19 +-
tests/function_modifiers/test_dependencies.py | 8 +-
tests/function_modifiers/test_expanders.py | 136 +-
tests/function_modifiers/test_macros.py | 13 +-
tests/function_modifiers/test_metadata.py | 2 +-
tests/function_modifiers/test_recursive.py | 43 +-
tests/function_modifiers/test_validation.py | 101 +
tests/io/test_data_adapters.py | 23 +-
tests/io/test_materialization.py | 27 +-
tests/lifecycle/lifecycle_adapters_for_testing.py | 73 +-
.../test_lifecycle_adapters_end_to_end.py | 53 +-
...est_lifecycle_adapters_end_to_end_task_based.py | 58 +-
tests/lifecycle/test_lifecycle_base.py | 36 +-
tests/nodes.py | 20 +-
tests/plugins/test_lightgbm_extensions.py | 5 +-
tests/plugins/test_logging.py | 2 +-
tests/plugins/test_matplotlib_extensions.py | 2 +
tests/plugins/test_mlflow_extension.py | 5 +-
tests/plugins/test_pandas_extensions.py | 3 +-
tests/plugins/test_polars_extensions.py | 2 +-
tests/plugins/test_pydantic_extensions.py | 22 +-
tests/plugins/test_sklearn_plot_extensions.py | 13 +-
tests/plugins/test_yaml_extension.py | 15 +-
tests/resources/async_dq_module.py | 84 +
tests/resources/compatible_input_types.py | 4 +-
tests/resources/dq_dummy_examples.py | 66 +-
tests/resources/functions_with_generics.py | 8 +-
tests/resources/graceful_parallel.py | 7 +-
tests/resources/incompatible_input_types.py | 6 +-
tests/resources/optional_dependencies.py | 4 +-
tests/resources/simple_async_module.py | 3 +-
tests/resources/smoke_screen_module.py | 14 +-
.../spark/spark_dag_mixed_pyspark_pandas_udfs.py | 4 +-
tests/resources/spark/spark_dag_pyspark_udfs.py | 4 +-
tests/resources/typing_vs_not_typing.py | 6 +-
tests/test_async_driver.py | 26 +-
tests/test_base.py | 24 +-
tests/test_common.py | 2 +-
tests/test_default_data_quality.py | 10 +-
tests/test_dev_utils.py | 5 +-
tests/test_end_to_end.py | 217 +-
tests/test_graph.py | 166 +-
tests/test_hamilton_driver.py | 128 +-
tests/test_node.py | 14 +-
tests/test_parallel_graceful.py | 2 +-
tests/test_telemetry.py | 12 +-
tests/test_type_utils.py | 103 +-
ui/BUILD.md | 286 +
ui/DOCKER_RELEASE.md | 338 +
ui/UPGRADE.md | 296 +
ui/admin.py | 62 +-
DISCLAIMER => ui/backend/DISCLAIMER | 0
ui/backend/Dockerfile.backend | 39 +-
ui/backend/Dockerfile.backend-prod | 31 +-
LICENSE => ui/backend/LICENSE | 0
ui/backend/MANIFEST.in | 4 -
NOTICE => ui/backend/NOTICE | 0
ui/backend/pyproject.toml | 90 +
ui/backend/server/commands.py | 3 +-
ui/backend/server/common/django_utils.py | 2 +-
ui/backend/server/entrypoint.sh | 5 +-
ui/backend/server/requirements.txt | 54 -
ui/backend/server/server/settings.py | 19 +-
ui/backend/server/server/urls.py | 43 +-
.../tests/test_db_methods/test_permissions.py | 19 +-
ui/backend/server/tests/test_db_methods/utils.py | 7 +-
.../server/tests/test_lifecycle/test_projects.py | 4 +-
.../tests/test_lifecycle/test_run_tracking.py | 3 +-
.../server/tests/test_lifecycle/test_templates.py | 5 +-
ui/backend/server/trackingserver_auth/api.py | 5 +-
ui/backend/server/trackingserver_auth/schema.py | 3 +-
ui/backend/server/trackingserver_base/api.py | 1 +
ui/backend/server/trackingserver_base/apps.py | 9 +-
.../server/trackingserver_base/auth/api_keys.py | 3 +-
.../server/trackingserver_base/auth/local.py | 5 +-
ui/backend/server/trackingserver_base/auth/sync.py | 5 +-
.../server/trackingserver_base/auth/testing.py | 3 +-
.../server/trackingserver_base/blob_storage.py | 7 +-
.../server/trackingserver_base/permissions/base.py | 8 +-
.../trackingserver_base/permissions/permissions.py | 18 +-
.../trackingserver_base/shared_types/attributes.py | 36 +-
ui/backend/server/trackingserver_projects/api.py | 25 +-
.../server/trackingserver_projects/schema.py | 45 +-
.../server/trackingserver_run_tracking/api.py | 16 +-
.../server/trackingserver_run_tracking/schema.py | 24 +-
ui/backend/server/trackingserver_template/api.py | 13 +-
.../server/trackingserver_template/schema.py | 21 +-
ui/backend/setup.py | 72 -
.../backend/tests}/__init__.py | 2 +-
ui/backend/tests/test_build.py | 251 +
ui/backend/uv.lock | 1840 ++
ui/backup_hamilton_data.sh | 125 +
ui/buildx_and_push.sh | 244 +-
ui/docker-compose-prod.yml | 8 +-
ui/docker-compose.yml | 8 +-
ui/frontend/.env.local | 10 +-
ui/frontend/.prettierrc.json | 8 +
ui/frontend/Dockerfile.frontend | 12 +-
ui/frontend/Dockerfile.frontend-prod | 9 +
ui/frontend/eslint.config.mjs | 55 +
ui/frontend/{public => }/index.html | 30 +-
ui/frontend/package-lock.json | 25505 ++++++-------------
ui/frontend/package.json | 66 +-
.../{src/react-app-env.d.ts => postcss.config.js} | 7 +-
ui/frontend/src/App.tsx | 74 +-
ui/frontend/src/auth/LocalAccount.tsx | 20 +-
ui/frontend/src/auth/Login.tsx | 29 +-
ui/frontend/src/components/common/CommonLinks.tsx | 4 +-
ui/frontend/src/components/common/Datetime.tsx | 25 +-
ui/frontend/src/components/common/Dropdown.tsx | 35 +-
.../src/components/common/GenericTabbedView.tsx | 13 +-
ui/frontend/src/components/common/GenericTable.tsx | 27 +-
ui/frontend/src/components/common/HelpTooltip.tsx | 4 +-
.../components/common/ProjectVersionSelector.tsx | 16 +-
ui/frontend/src/components/common/TagSelector.tsx | 31 +-
ui/frontend/src/components/common/Tooltip.tsx | 7 +-
.../src/components/dashboard/Account/Account.tsx | 10 +-
ui/frontend/src/components/dashboard/Alerts.tsx | 11 +-
.../components/dashboard/Catalog/CatalogOutlet.tsx | 9 +-
.../dashboard/Catalog/NodeRunExpansion.tsx | 42 +-
.../components/dashboard/Catalog/SearchTable.tsx | 39 +-
ui/frontend/src/components/dashboard/Code/Code.tsx | 38 +-
.../src/components/dashboard/Code/CodeExplorer.tsx | 15 +-
.../src/components/dashboard/Code/Function.tsx | 56 +-
ui/frontend/src/components/dashboard/Dashboard.tsx | 64 +-
.../src/components/dashboard/NavBreadCrumb.tsx | 32 +-
.../src/components/dashboard/Project/Project.tsx | 20 +-
.../dashboard/Project/ProjectDocumentation.tsx | 23 +-
.../dashboard/Project/ProjectLogInstructions.tsx | 39 +-
.../src/components/dashboard/Project/Projects.tsx | 185 +-
.../src/components/dashboard/Runs/Dashboarding.tsx | 8 +-
.../src/components/dashboard/Runs/Run/Run.tsx | 172 +-
.../components/dashboard/Runs/Run/TaskTable.tsx | 127 +-
.../dashboard/Runs/Run/WaterfallChart.tsx | 57 +-
.../src/components/dashboard/Runs/RunSummary.tsx | 99 +-
ui/frontend/src/components/dashboard/Runs/Runs.tsx | 6 +-
.../src/components/dashboard/Runs/RunsTable.tsx | 116 +-
.../src/components/dashboard/Runs/Status.tsx | 4 +-
.../components/dashboard/Runs/Task/CodeView.tsx | 15 +-
.../components/dashboard/Runs/Task/ErrorView.tsx | 18 +-
.../src/components/dashboard/Runs/Task/Task.tsx | 191 +-
.../dashboard/Runs/Task/TaskRunOutlet.tsx | 8 +-
.../Task/result-summaries/DAGWorksDescribe.tsx | 128 +-
.../Task/result-summaries/DataObservability.tsx | 70 +-
.../Runs/Task/result-summaries/HTMLView.tsx | 45 +-
.../Runs/Task/result-summaries/PandasDescribe.tsx | 68 +-
.../Runs/Task/result-summaries/SchemaView.tsx | 4 +-
.../src/components/dashboard/Search/search.tsx | 52 +-
.../src/components/dashboard/Search/searchables.ts | 12 +-
.../src/components/dashboard/Settings/ApiKeys.tsx | 24 +-
.../src/components/dashboard/Versions/Versions.tsx | 64 +-
.../src/components/dashboard/Visualize/DAGRun.tsx | 20 +-
.../src/components/dashboard/Visualize/DAGViz.tsx | 366 +-
.../dashboard/Visualize/NodeHierarchyManager.tsx | 42 +-
.../components/dashboard/Visualize/VizConsole.tsx | 205 +-
.../src/components/dashboard/Visualize/layout.ts | 8 +-
.../src/components/dashboard/Visualize/utils.ts | 19 +-
ui/frontend/src/components/dashboard/Welcome.tsx | 69 +-
ui/frontend/src/components/dashboard/nav.ts | 16 +-
ui/frontend/src/index.tsx | 21 +-
ui/frontend/src/reportWebVitals.ts | 16 +-
ui/frontend/src/state/api/backendApiRaw.ts | 17 +-
ui/frontend/src/state/api/emptyApi.ts | 19 +-
ui/frontend/src/state/api/friendlyApi.ts | 54 +-
ui/frontend/src/state/authSlice.ts | 15 +-
ui/frontend/src/state/hooks.ts | 9 +-
ui/frontend/src/state/projectSlice.ts | 10 +-
ui/frontend/src/state/store.ts | 15 +-
ui/frontend/src/state/urlState.tsx | 4 +-
ui/frontend/src/utils.ts | 46 +-
ui/frontend/src/utils/codeExtraction.ts | 8 +-
ui/frontend/src/utils/dagUtils.ts | 27 +-
ui/frontend/src/utils/localStorage.ts | 2 +-
ui/frontend/tsconfig.json | 41 +-
ui/frontend/tsconfig.node.json | 11 +
ui/frontend/vite.config.ts | 58 +
ui/restore_hamilton_data.sh | 195 +
ui/sdk/.pre-commit-config.yaml | 4 +-
DISCLAIMER => ui/sdk/DISCLAIMER | 0
LICENSE => ui/sdk/LICENSE | 0
NOTICE => ui/sdk/NOTICE | 0
ui/sdk/pyproject.toml | 110 +-
ui/sdk/requirements-test.txt | 4 +-
ui/sdk/requirements.txt | 2 +-
ui/sdk/ruff.toml | 2 +-
ui/sdk/setup.py | 25 -
ui/sdk/src/hamilton_sdk/adapters.py | 41 +-
ui/sdk/src/hamilton_sdk/api/clients.py | 67 +-
ui/sdk/src/hamilton_sdk/cli/initialize.py | 4 +-
.../machine_learning/components/model_fitting.py | 4 +-
.../components/_run.py | 3 +-
ui/sdk/src/hamilton_sdk/driver.py | 65 +-
.../src/hamilton_sdk/tracking/data_observation.py | 10 +-
.../src/hamilton_sdk/tracking/dataframe_stats.py | 12 +-
.../src/hamilton_sdk/tracking/example_tracking.py | 10 +-
ui/sdk/src/hamilton_sdk/tracking/ibis_stats.py | 6 +-
.../src/hamilton_sdk/tracking/langchain_stats.py | 6 +-
ui/sdk/src/hamilton_sdk/tracking/numpy_stats.py | 6 +-
.../src/hamilton_sdk/tracking/pandas_col_stats.py | 43 +-
ui/sdk/src/hamilton_sdk/tracking/pandas_stats.py | 10 +-
.../src/hamilton_sdk/tracking/polars_col_stats.py | 42 +-
ui/sdk/src/hamilton_sdk/tracking/polars_stats.py | 10 +-
ui/sdk/src/hamilton_sdk/tracking/pydantic_stats.py | 4 +-
ui/sdk/src/hamilton_sdk/tracking/pyspark_stats.py | 6 +-
ui/sdk/src/hamilton_sdk/tracking/runs.py | 13 +-
.../hamilton_sdk/tracking/scikit_learn_stats.py | 3 +-
ui/sdk/src/hamilton_sdk/tracking/trackingtypes.py | 8 +-
ui/sdk/src/hamilton_sdk/tracking/utils.py | 4 +-
ui/sdk/tests/resources/parallel_dag.py | 5 +-
ui/sdk/tests/resources/parallel_dag_error.py | 5 +-
ui/sdk/tests/test_adapters.py | 6 +-
ui/sdk/tests/test_tracking.py | 19 +-
ui/sdk/tests/tracking/test_dataframe_stats.py | 1 -
ui/sdk/tests/tracking/test_pandas_col_stats.py | 3 +-
ui/sdk/tests/tracking/test_pandas_stats.py | 6 +-
ui/sdk/tests/tracking/test_runs.py | 4 +-
ui/sdk/tests/tracking/test_stats.py | 2 +-
ui/sdk/tests/tracking/test_utils.py | 15 +-
ui/start_mini_mode.sh | 88 +
ui/test_tracking_simple.py | 274 +
ui/upgrade_postgres.sh | 145 +
ui/upgrade_postgres_simple.sh | 250 +
writeups/data_quality.md | 79 +
580 files changed, 38478 insertions(+), 31560 deletions(-)
create mode 100644 .claude-plugin/CHANGELOG.md
create mode 100644 .claude-plugin/README.md
create mode 100644 .claude-plugin/plugin.json
create mode 100644 .claude-plugin/skills/core/SKILL.md
create mode 100644 .claude-plugin/skills/hamilton-dev-workflow/SKILL.md
create mode 100644 .claude-plugin/skills/integrations/SKILL.md
create mode 100644 .claude-plugin/skills/llm/SKILL.md
create mode 100644 .claude-plugin/skills/observability/SKILL.md
create mode 100644 .claude-plugin/skills/scale/SKILL.md
copy DISCLAIMER => contrib/DISCLAIMER (100%)
create mode 100644 contrib/NOTICE
create mode 100644 contrib/pyproject.toml
delete mode 100644 contrib/setup.cfg
delete mode 100644 contrib/setup.py
copy DISCLAIMER => dev_tools/language_server/DISCLAIMER (100%)
copy LICENSE => dev_tools/language_server/LICENSE (100%)
copy NOTICE => dev_tools/language_server/NOTICE (100%)
create mode 100644 docs/_static/hamilton-incubator-logo.png
create mode 100644 docs/_static/hamilton-incubator-logo.svg
create mode 100644 docs/asf/downloads.rst
create mode 100644 docs/ecosystem/claude-code-plugin.md
create mode 100644 scripts/promote_rc.sh
create mode 100644 tests/resources/async_dq_module.py
create mode 100644 ui/BUILD.md
create mode 100644 ui/DOCKER_RELEASE.md
create mode 100644 ui/UPGRADE.md
copy DISCLAIMER => ui/backend/DISCLAIMER (100%)
copy LICENSE => ui/backend/LICENSE (100%)
delete mode 100644 ui/backend/MANIFEST.in
copy NOTICE => ui/backend/NOTICE (100%)
create mode 100644 ui/backend/pyproject.toml
delete mode 100644 ui/backend/server/requirements.txt
delete mode 100644 ui/backend/setup.py
copy {contrib/hamilton/contrib/user/example_dataflow_template =>
ui/backend/tests}/__init__.py (91%)
create mode 100644 ui/backend/tests/test_build.py
create mode 100644 ui/backend/uv.lock
create mode 100755 ui/backup_hamilton_data.sh
create mode 100644 ui/frontend/eslint.config.mjs
copy ui/frontend/{public => }/index.html (61%)
copy ui/frontend/{src/react-app-env.d.ts => postcss.config.js} (90%)
create mode 100644 ui/frontend/tsconfig.node.json
create mode 100644 ui/frontend/vite.config.ts
create mode 100755 ui/restore_hamilton_data.sh
copy DISCLAIMER => ui/sdk/DISCLAIMER (100%)
copy LICENSE => ui/sdk/LICENSE (100%)
copy NOTICE => ui/sdk/NOTICE (100%)
delete mode 100644 ui/sdk/setup.py
create mode 100755 ui/start_mini_mode.sh
create mode 100644 ui/test_tracking_simple.py
create mode 100755 ui/upgrade_postgres.sh
create mode 100755 ui/upgrade_postgres_simple.sh