databricksedu 0.2.0__tar.gz → 0.2.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.
- {databricksedu-0.2.0 → databricksedu-0.2.1}/PKG-INFO +1 -1
- databricksedu-0.2.1/src/databricksedu/_version.py +1 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/assets/app.css +1 -1
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/assets/app.js +32 -13
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/workspace.py +20 -5
- {databricksedu-0.2.0 → databricksedu-0.2.1}/tools/assets/app.css +4 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/tools/assets/app.js +32 -13
- databricksedu-0.2.0/src/databricksedu/_version.py +0 -1
- {databricksedu-0.2.0 → databricksedu-0.2.1}/.gitignore +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/CONTENT_GUIDE.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/LICENSE +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/README.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/analytics/010-sql-warehouses/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/analytics/010-sql-warehouses/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/analytics/020-ai-bi-dashboards/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/analytics/020-ai-bi-dashboards/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/analytics/030-genie-spaces/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/analytics/030-genie-spaces/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/analytics/040-metric-views/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/analytics/040-metric-views/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/categories.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/010-lakehouse-architecture/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/010-lakehouse-architecture/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/020-parquet-files/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/020-parquet-files/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/030-medallion-architecture/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/030-medallion-architecture/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/040-unity-catalog-basics/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/040-unity-catalog-basics/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/050-delta-table-anatomy/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/050-delta-table-anatomy/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/060-delta-transaction-log/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/060-delta-transaction-log/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/070-delta-acid-concurrency/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/070-delta-acid-concurrency/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/080-delta-time-travel-vacuum/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/080-delta-time-travel-vacuum/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/090-deletion-vectors/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/090-deletion-vectors/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/100-delta-dml-merge/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/100-delta-dml-merge/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/110-schema-enforcement-evolution/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/110-schema-enforcement-evolution/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/120-change-data-feed/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/120-change-data-feed/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/130-delta-optimization/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/130-delta-optimization/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/140-spark-architecture/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/140-spark-architecture/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/150-spark-joins-shuffles/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/150-spark-joins-shuffles/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/160-auto-loader-copy-into/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/160-auto-loader-copy-into/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/170-structured-streaming-basics/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/170-structured-streaming-basics/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/180-watermarks-stateful-streaming/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/180-watermarks-stateful-streaming/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/190-declarative-pipelines/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/190-declarative-pipelines/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/200-data-quality-expectations/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/200-data-quality-expectations/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/210-cdc-scd/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/210-cdc-scd/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/220-lakeflow-jobs/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/220-lakeflow-jobs/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/230-asset-bundles-cicd/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/230-asset-bundles-cicd/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/demo-data/010-retail-data/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/demo-data/020-iot-data/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/demo-data/030-churn-data/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/demo-data/040-support-data/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/demo-data/050-hr-data/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/demo-data/060-cdc-data/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/exam-prep/010-exam-data-engineer-associate/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/exam-prep/010-exam-data-engineer-associate/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/exam-prep/020-exam-data-engineer-professional/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/exam-prep/020-exam-data-engineer-professional/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/exam-prep/030-exam-data-analyst-associate/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/exam-prep/030-exam-data-analyst-associate/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/exam-prep/040-exam-ml-associate/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/exam-prep/040-exam-ml-associate/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/exam-prep/050-exam-ml-professional/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/exam-prep/050-exam-ml-professional/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/exam-prep/060-exam-genai-engineer-associate/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/exam-prep/060-exam-genai-engineer-associate/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/exam-prep/070-exam-spark-developer-associate/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/exam-prep/070-exam-spark-developer-associate/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/010-llm-basics/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/010-llm-basics/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/020-prompt-engineering/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/020-prompt-engineering/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/030-embeddings-vector-search/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/030-embeddings-vector-search/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/040-chunking-parsing/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/040-chunking-parsing/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/050-rag-architecture/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/050-rag-architecture/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/060-agents-tools/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/060-agents-tools/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/070-genai-evaluation/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/070-genai-evaluation/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/080-ai-functions-gateway/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/080-ai-functions-gateway/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/governance/010-uc-privileges/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/governance/010-uc-privileges/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/governance/020-row-filters-column-masks/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/governance/020-row-filters-column-masks/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/governance/030-delta-sharing/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/governance/030-delta-sharing/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/governance/040-lineage-system-tables/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/governance/040-lineage-system-tables/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/machine-learning/010-ml-lifecycle/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/machine-learning/010-ml-lifecycle/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/machine-learning/020-mlflow-tracking/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/machine-learning/020-mlflow-tracking/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/machine-learning/030-feature-engineering/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/machine-learning/030-feature-engineering/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/machine-learning/040-hyperparameter-tuning/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/machine-learning/040-hyperparameter-tuning/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/machine-learning/050-models-in-unity-catalog/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/machine-learning/050-models-in-unity-catalog/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/machine-learning/060-model-serving/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/machine-learning/060-model-serving/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/machine-learning/070-model-monitoring/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/machine-learning/070-model-monitoring/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/recaps/010-lakeflow-connect-recap/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/recaps/010-lakeflow-connect-recap/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/recaps/020-lakeflow-jobs-recap/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/recaps/020-lakeflow-jobs-recap/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/recaps/030-declarative-pipelines-recap/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/recaps/030-declarative-pipelines-recap/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/recaps/040-devops-essentials-recap/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/recaps/040-devops-essentials-recap/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/recaps/050-streaming-pipelines-recap/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/recaps/050-streaming-pipelines-recap/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/recaps/060-data-privacy-recap/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/recaps/060-data-privacy-recap/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/recaps/070-performance-optimization-recap/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/recaps/070-performance-optimization-recap/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/recaps/080-asset-bundles-recap/module.md +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/content/recaps/080-asset-bundles-recap/quiz.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/hatch_build.py +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/pyproject.toml +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/__init__.py +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/catalog.json +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/agents-tools.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/ai-bi-dashboards.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/ai-functions-gateway.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/asset-bundles-cicd.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/asset-bundles-recap.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/auto-loader-copy-into.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/cdc-data.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/cdc-scd.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/change-data-feed.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/chunking-parsing.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/churn-data.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/data-privacy-recap.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/data-quality-expectations.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/declarative-pipelines-recap.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/declarative-pipelines.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/deletion-vectors.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/delta-acid-concurrency.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/delta-dml-merge.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/delta-optimization.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/delta-sharing.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/delta-table-anatomy.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/delta-time-travel-vacuum.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/delta-transaction-log.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/devops-essentials-recap.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/embeddings-vector-search.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/exam-data-analyst-associate.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/exam-data-engineer-associate.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/exam-data-engineer-professional.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/exam-genai-engineer-associate.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/exam-ml-associate.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/exam-ml-professional.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/exam-spark-developer-associate.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/feature-engineering.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/genai-evaluation.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/genie-spaces.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/hr-data.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/hyperparameter-tuning.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/iot-data.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/lakeflow-connect-recap.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/lakeflow-jobs-recap.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/lakeflow-jobs.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/lakehouse-architecture.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/lineage-system-tables.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/llm-basics.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/medallion-architecture.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/metric-views.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/ml-lifecycle.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/mlflow-tracking.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/model-monitoring.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/model-serving.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/models-in-unity-catalog.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/parquet-files.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/performance-optimization-recap.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/prompt-engineering.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/rag-architecture.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/retail-data.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/row-filters-column-masks.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/schema-enforcement-evolution.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/spark-architecture.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/spark-joins-shuffles.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/sql-warehouses.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/streaming-pipelines-recap.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/structured-streaming-basics.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/support-data.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/uc-privileges.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/unity-catalog-basics.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/nb/watermarks-stateful-streaming.json.gz +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/agents-tools.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/ai-bi-dashboards.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/ai-functions-gateway.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/asset-bundles-cicd.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/asset-bundles-recap.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/auto-loader-copy-into.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/cdc-data.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/cdc-scd.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/change-data-feed.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/chunking-parsing.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/churn-data.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/data-privacy-recap.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/data-quality-expectations.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/declarative-pipelines-recap.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/declarative-pipelines.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/deletion-vectors.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/delta-acid-concurrency.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/delta-dml-merge.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/delta-optimization.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/delta-sharing.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/delta-table-anatomy.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/delta-time-travel-vacuum.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/delta-transaction-log.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/devops-essentials-recap.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/embeddings-vector-search.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/exam-data-analyst-associate.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/exam-data-engineer-associate.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/exam-data-engineer-professional.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/exam-genai-engineer-associate.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/exam-ml-associate.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/exam-ml-professional.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/exam-spark-developer-associate.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/feature-engineering.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/genai-evaluation.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/genie-spaces.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/hr-data.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/hyperparameter-tuning.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/iot-data.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/lakeflow-connect-recap.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/lakeflow-jobs-recap.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/lakeflow-jobs.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/lakehouse-architecture.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/lineage-system-tables.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/llm-basics.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/medallion-architecture.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/metric-views.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/ml-lifecycle.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/mlflow-tracking.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/model-monitoring.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/model-serving.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/models-in-unity-catalog.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/parquet-files.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/performance-optimization-recap.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/prompt-engineering.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/rag-architecture.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/retail-data.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/row-filters-column-masks.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/schema-enforcement-evolution.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/spark-architecture.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/spark-joins-shuffles.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/sql-warehouses.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/streaming-pipelines-recap.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/structured-streaming-basics.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/support-data.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/uc-privileges.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/unity-catalog-basics.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/_content/web/watermarks-stateful-streaming.b64 +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/app.py +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/assets/dbx.css +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/assets/quiz.js +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/assets/viz.css +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/assets/viz.js +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/catalog.py +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/data/__init__.py +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/data/_core.py +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/data/_load.py +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/data/cdc.py +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/data/churn.py +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/data/hr.py +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/data/iot.py +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/data/retail.py +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/src/databricksedu/data/support.py +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/tests/test_smoke.py +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/tools/assets/dbx.css +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/tools/assets/quiz.js +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/tools/assets/viz.js +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/tools/build.py +0 -0
- {databricksedu-0.2.0 → databricksedu-0.2.1}/tools/render.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: databricksedu
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: Bite-sized Databricks lessons that run inside your notebook: animated slides, notes, exercises and seeded demo data.
|
|
5
5
|
Project-URL: Homepage, https://github.com/misrori/databricksedu
|
|
6
6
|
Project-URL: Source, https://github.com/misrori/databricksedu
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.2.1"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
html,body{margin:0;padding:0;height:auto;background:transparent}#dbe{--navy:#1B3139;--accent:#FF3621;--blue:#2272B4;--purple:#7C4DFF;--teal:#00A3A1;--bg:#F4F2EE;--muted:#6B7280;--line:#E5E7EB;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:#1F2937;background:var(--bg);display:flex;flex-direction:column;border-radius:14px;overflow:hidden;position:relative;border:1px solid #D6D3CD;box-sizing:border-box;width:100%;min-width:0}#dbe *{box-sizing:border-box}#dbe.fs,#dbe.page{border-radius:0;border:0;height:100vh!important}body:has(#dbe.page){overflow:hidden}#dbe button{font-family:inherit}.top{display:flex;align-items:center;gap:10px;padding:9px 16px;background:var(--navy);color:#fff;flex:none;z-index:5}.brand{display:flex;align-items:center;gap:8px;font-weight:800;letter-spacing:.01em;cursor:pointer;border:0;background:transparent;color:#fff;font-size:15px;padding:4px 6px;border-radius:8px}.brand:hover{background:rgba(255,255,255,.1)}.brand .lg{display:inline-flex;width:26px;height:26px;border-radius:8px;background:linear-gradient(135deg,#FF3621,#7C4DFF);align-items:center;justify-content:center;font-size:15px}.brand em{font-style:normal;color:#FF8A7A}.crumb{color:#94A3B8;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.crumb b{color:#E2E8F0;font-weight:600}.seg{display:inline-flex;background:rgba(255,255,255,.1);border-radius:999px;padding:3px;flex:none}.seg button{border:0;background:transparent;color:#CBD5E1;padding:6px 14px;border-radius:999px;cursor:pointer;font-size:13px;white-space:nowrap}.seg button.on{background:#fff;color:var(--navy);font-weight:700}.hbtn{border:1px solid rgba(255,255,255,.25);background:transparent;color:#E2E8F0;border-radius:8px;padding:6px 10px;cursor:pointer;font-size:13px;white-space:nowrap;flex:none}.hbtn:hover{background:rgba(255,255,255,.12)}.hbtn.pri{background:linear-gradient(135deg,#FF3621,#c2410c);border-color:transparent;color:#fff;font-weight:700}#bar{height:3px;background:linear-gradient(90deg,var(--accent),var(--purple),var(--teal));width:0;transition:width .35s ease;flex:none}#main{flex:1;min-height:0;position:relative;display:flex;flex-direction:column}#home{flex:1;overflow:auto;padding:18px 22px 26px}.hhero{position:relative;overflow:hidden;border-radius:18px;padding:26px 30px;color:#fff;background:linear-gradient(120deg,#1B3139,#22425a,#2a2f6b,#1B3139);background-size:300% 300%;animation:dbxGrad 14s ease infinite}.hhero .blob{position:absolute;border-radius:50%;filter:blur(34px);opacity:.55;animation:dbxFloat 9s ease-in-out infinite}.hhero .b1{width:260px;height:260px;background:#FF3621;right:-50px;top:-90px}.hhero .b2{width:200px;height:200px;background:#7C4DFF;right:220px;bottom:-120px;animation-delay:-3s}.hhero .b3{width:160px;height:160px;background:#00A3A1;left:-50px;bottom:-70px;animation-delay:-6s}.hhero>div{position:relative}.hhero h1{margin:0 0 6px;font-size:30px;font-weight:800;letter-spacing:-.01em}.hhero h1 em{font-style:normal;color:#FF8A7A}.hhero p{margin:0;color:#E2E8F0;font-size:15px;max-width:760px;line-height:1.5}.hstats{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.hstats span{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.25);padding:4px 12px;border-radius:999px;font-size:13px}.hrow{display:flex;gap:10px;align-items:center;margin:16px 0 4px;flex-wrap:wrap}.cats{display:flex;gap:8px;flex-wrap:wrap;flex:1}.cat{border:1px solid var(--line);background:#fff;color:#334155;border-radius:999px;padding:8px 14px;cursor:pointer;font-size:14px;font-weight:600;display:inline-flex;gap:7px;align-items:center;transition:all .2s}.cat:hover{border-color:var(--accent);transform:translateY(-1px)}.cat.on{background:var(--navy);color:#fff;border-color:var(--navy);box-shadow:0 6px 16px rgba(27,49,57,.25)}.cat i{font-style:normal;font-size:12px;background:rgba(100,116,139,.18);border-radius:999px;padding:1px 7px}.cat.on i{background:rgba(255,255,255,.2)}#q{border:1px solid var(--line);border-radius:999px;padding:9px 14px;font-size:14px;min-width:210px;outline:none;font-family:inherit;background:#fff}#q:focus{border-color:var(--purple);box-shadow:0 0 0 3px rgba(124,77,255,.15)}.cdesc{color:var(--muted);font-size:14px;margin:8px 2px 2px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.cdesc button{margin-left:auto;border:1px solid var(--line);background:#fff;border-radius:999px;padding:6px 14px;cursor:pointer;font-size:13px;font-weight:600;color:var(--navy)}.cdesc button:hover{border-color:var(--accent);color:var(--accent)}.gtitle{font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#94A3B8;margin:18px 2px 8px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:14px}.mcard{background:#fff;border-radius:16px;padding:16px 16px 12px;cursor:pointer;border:2px solid transparent;box-shadow:0 4px 14px rgba(27,49,57,.07);transition:transform .2s,border-color .2s,box-shadow .2s;display:flex;flex-direction:column;animation:dbxRise .45s both;animation-delay:calc(var(--i,0)*35ms)}.mcard:hover{transform:translateY(-3px);border-color:var(--accent);box-shadow:0 12px 28px rgba(27,49,57,.14)}.mcard .mh{display:flex;gap:10px;align-items:flex-start}.mcard .mi{font-size:26px;line-height:1;flex:none;width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,#FFF4F1,#F5F3FF);display:flex;align-items:center;justify-content:center}.mcard .mt{font-weight:800;color:var(--navy);font-size:15.5px;line-height:1.25}.mcard .ms{color:#475569;font-size:13px;line-height:1.45;margin:8px 0 10px;flex:1}.mchips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.mchips span{font-size:11.5px;background:#F1F5F9;color:#475569;border-radius:999px;padding:2px 9px;white-space:nowrap}.mact{display:flex;gap:6px}.mact button{flex:1;border:1px solid var(--line);background:#fff;border-radius:9px;padding:7px 4px;cursor:pointer;font-size:12.5px;font-weight:700;color:var(--navy);white-space:nowrap}.mact button:hover{border-color:var(--accent);color:var(--accent)}.mact button.go{background:linear-gradient(135deg,#FF3621,#7C4DFF);border:0;color:#fff}.empty{color:var(--muted);padding:30px;text-align:center}.hfoot{margin-top:22px;display:flex;gap:14px;flex-wrap:wrap}.hfoot .cta{flex:2 1 380px;margin:0}.hfoot .pip{flex:1 1 260px;background:#fff;border-radius:16px;padding:16px 18px;border:1px solid var(--line);font-size:13px;color:#475569}.hfoot .pip code{display:block;background:#0D1117;color:#E6EDF3;border-radius:8px;padding:8px 10px;margin-top:6px;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre-wrap}#player{flex:1;min-height:0;display:none;flex-direction:column}#slides{flex:1;display:flex;flex-direction:column;min-height:0;padding:14px 18px 8px;position:relative}.stage{flex:1;position:relative;min-height:0;perspective:1400px}.slide{position:absolute;inset:0;background:#fff;border-radius:18px;box-shadow:0 14px 40px rgba(27,49,57,.14);overflow:auto;padding:26px 44px 30px}.slide.enter-r{animation:inR .45s cubic-bezier(.2,.8,.2,1) both}.slide.enter-l{animation:inL .45s cubic-bezier(.2,.8,.2,1) both}@keyframes inR{from{opacity:0;transform:translateX(60px) rotateY(-6deg)}to{opacity:1;transform:none}}@keyframes inL{from{opacity:0;transform:translateX(-60px) rotateY(6deg)}to{opacity:1;transform:none}}.slide .dbx{max-width:none;font-size:17px}.slide .dbx .sec-head h2{font-size:29px}.slide .dbx table{font-size:15px}.slide .dbx .code pre{font-size:13.5px}.slide .dbx>*{animation:dbxRise .55s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--i,0)*80ms + 100ms)}.slide.title{padding:0;overflow:hidden;background:transparent}.slide.title .dbx{height:100%;display:flex;flex-direction:column;position:relative}.slide.title .hero{flex:1;margin:0;border-radius:18px;display:flex;align-items:center;padding:40px 60px 130px}.slide.title .hero h1{font-size:46px}.slide.title .sub{font-size:19px}.slide.title .b1{width:420px;height:420px}.slide.title .b2{width:340px;height:340px}.slide.title .b3{width:300px;height:300px}.slide.title .idea{position:absolute;left:60px;right:60px;bottom:30px;font-size:17px;background:rgba(255,255,255,.96)}.slide.title .dbx>:not(.hero):not(.idea){display:none}.controls{display:flex;align-items:center;gap:12px;padding-top:10px;flex:none}.controls .nav{border:1px solid var(--line);background:#fff;border-radius:10px;min-width:44px;height:36px;cursor:pointer;font-size:15px;font-weight:700;color:var(--navy);padding:0 12px}.controls .nav:hover{border-color:var(--accent);color:var(--accent)}.controls .nav.next{background:linear-gradient(135deg,#FF3621,#7C4DFF);color:#fff;border:0}.dots{display:flex;gap:6px;flex:1;justify-content:center;flex-wrap:wrap}.dots button{width:10px;height:10px;border-radius:50%;border:0;background:#CBD5E1;cursor:pointer;padding:0;transition:all .25s}.dots button.on{background:var(--accent);width:28px;border-radius:6px}.count{color:var(--muted);font-size:13px;min-width:52px;text-align:right}.hint{color:#94A3B8;font-size:12px;white-space:nowrap}#overview{position:absolute;inset:0;background:rgba(244,242,238,.97);z-index:4;display:none;overflow:auto;padding:22px}#overview.on{display:block;animation:dbxRise .3s both}.ogrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}.ocard{background:#fff;border-radius:14px;padding:14px;cursor:pointer;border:2px solid transparent;box-shadow:0 4px 14px rgba(0,0,0,.06);transition:all .2s}.ocard:hover{transform:translateY(-3px);border-color:var(--accent)}.ocard .n{font-size:12px;color:var(--muted);font-weight:700}.ocard .i{font-size:26px;margin:4px 0}.ocard .t{font-weight:700;color:var(--navy);font-size:14px}#doc{flex:1;display:none;min-height:0}#player.docmode #slides{display:none}#player.docmode #doc{display:flex}#toc{width:250px;flex:none;overflow:auto;padding:16px 12px;border-right:1px solid var(--line);background:#fff}#toc a{display:flex;gap:8px;align-items:center;padding:7px 10px;border-radius:9px;color:#334155;text-decoration:none;font-size:13px;margin:2px 0;cursor:pointer}#toc a:hover{background:#F1F5F9}#toc a.on{background:#FFF1EE;color:#C62D1A;font-weight:700}#toc .rawbtn{margin-top:12px;width:100%;border:1px dashed #CBD5E1;background:#fff;border-radius:9px;padding:8px;cursor:pointer;font-size:12.5px;color:#475569}#docScroll{flex:1;overflow:auto;padding:20px 28px 60px}.dsec{background:#fff;border-radius:16px;padding:22px 28px;margin:0 auto 16px;max-width:1000px;box-shadow:0 4px 18px rgba(27,49,57,.06)}.dsec.herosec{padding:0;background:transparent;box-shadow:none}.dsec .dbx{max-width:none}.dsec .dbx>*{animation:none}.rawmd{max-width:1000px;margin:0 auto;background:#0D1117;color:#E6EDF3;border-radius:14px;padding:18px 20px;font-size:12.5px;line-height:1.55;white-space:pre-wrap;word-break:break-word;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.quiz{max-width:820px}.dbx .code .copy{display:inline-block;margin-left:auto;border:1px solid #30363D;background:#21262D;color:#C9D1D9;border-radius:6px;font-size:11px;padding:2px 8px;cursor:pointer}.dbx .code .run+.copy{margin-left:10px}.fin{text-align:center;padding:10px 0}.fin .big{font-size:60px;animation:vzPop .6s both}.fin h2{font-size:30px;color:var(--navy);margin:6px 0}.fin p{color:var(--muted);margin:0 0 16px}.fcards{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;text-align:left;margin-bottom:14px}.fcard{flex:1 1 220px;max-width:330px;background:#F8FAFC;border:1px solid var(--line);border-radius:14px;padding:14px 16px;cursor:pointer;transition:all .2s}.fcard:hover{border-color:var(--accent);transform:translateY(-2px)}.fcard b{display:block;color:var(--navy);margin-bottom:2px}.fcard span{font-size:13.5px;color:#475569}#modal{position:absolute;inset:0;background:rgba(15,23,42,.55);z-index:20;display:none;align-items:center;justify-content:center;padding:20px}#modal.on{display:flex;animation:dbxRise .25s both}.mbox{background:#fff;border-radius:18px;max-width:640px;width:100%;max-height:100%;overflow:auto;padding:22px 24px;box-shadow:0 30px 80px rgba(0,0,0,.35)}.mbox h3{margin:0 0 6px;color:var(--navy);font-size:20px}.mbox p{color:#475569;font-size:14px;line-height:1.5;margin:6px 0}.mbox ul{margin:6px 0;padding-left:20px;color:#334155;font-size:14px}.cmd{display:flex;gap:8px;align-items:stretch;margin:8px 0}.cmd code{flex:1;background:#0D1117;color:#E6EDF3;border-radius:10px;padding:10px 12px;font-size:12.5px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre-wrap;word-break:break-all}.cmd button,.mclose{border:0;border-radius:10px;padding:0 14px;cursor:pointer;font-weight:700;background:linear-gradient(135deg,#FF3621,#7C4DFF);color:#fff;font-size:13px}.mclose{padding:9px 18px;margin-top:10px;background:#E5E7EB;color:#374151}.tip{background:#ECFDF3;border:1px solid #A7F3D0;border-radius:10px;padding:9px 12px;font-size:13.5px;color:#065F46;margin:8px 0}#err{position:absolute;left:10px;right:10px;bottom:10px;background:#FEF2F2;border:1px solid #FCA5A5;color:#991B1B;border-radius:10px;padding:8px 12px;font-size:12px;z-index:30;display:none;white-space:pre-wrap}.confetti{position:absolute;top:-20px;font-size:22px;z-index:9;animation:fall 2.6s linear forwards;pointer-events:none}@keyframes fall{to{transform:translateY(900px) rotate(720deg);opacity:.7}}.loading{padding:60px;text-align:center;color:var(--muted)}@media (max-width:820px){.slide{padding:18px}.slide.title .hero{padding:26px 26px 150px}.slide.title .hero h1{font-size:30px}.slide.title .idea{left:16px;right:16px}#toc{display:none}.crumb{display:none}.hint{display:none}.seg button{padding:6px 9px}}@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
|
|
1
|
+
html,body{margin:0;padding:0;height:auto;background:transparent}#dbe{--navy:#1B3139;--accent:#FF3621;--blue:#2272B4;--purple:#7C4DFF;--teal:#00A3A1;--bg:#F4F2EE;--muted:#6B7280;--line:#E5E7EB;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:#1F2937;background:var(--bg);display:flex;flex-direction:column;border-radius:14px;overflow:hidden;position:relative;border:1px solid #D6D3CD;box-sizing:border-box;width:100%;min-width:0}#dbe *{box-sizing:border-box}#dbe.fs,#dbe.page{border-radius:0;border:0;height:100vh!important}body:has(#dbe.page){overflow:hidden}#dbe button{font-family:inherit}.top{display:flex;align-items:center;gap:10px;padding:9px 16px;background:var(--navy);color:#fff;flex:none;z-index:5}.brand{display:flex;align-items:center;gap:8px;font-weight:800;letter-spacing:.01em;cursor:pointer;border:0;background:transparent;color:#fff;font-size:15px;padding:4px 6px;border-radius:8px}.brand:hover{background:rgba(255,255,255,.1)}.brand .lg{display:inline-flex;width:26px;height:26px;border-radius:8px;background:linear-gradient(135deg,#FF3621,#7C4DFF);align-items:center;justify-content:center;font-size:15px}.brand em{font-style:normal;color:#FF8A7A}.crumb{color:#94A3B8;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.crumb b{color:#E2E8F0;font-weight:600}.seg{display:inline-flex;background:rgba(255,255,255,.1);border-radius:999px;padding:3px;flex:none}.seg button{border:0;background:transparent;color:#CBD5E1;padding:6px 14px;border-radius:999px;cursor:pointer;font-size:13px;white-space:nowrap}.seg button.on{background:#fff;color:var(--navy);font-weight:700}.hbtn{border:1px solid rgba(255,255,255,.25);background:transparent;color:#E2E8F0;border-radius:8px;padding:6px 10px;cursor:pointer;font-size:13px;white-space:nowrap;flex:none}.hbtn:hover{background:rgba(255,255,255,.12)}.hbtn.pri{background:linear-gradient(135deg,#FF3621,#c2410c);border-color:transparent;color:#fff;font-weight:700}#bar{height:3px;background:linear-gradient(90deg,var(--accent),var(--purple),var(--teal));width:0;transition:width .35s ease;flex:none}#main{flex:1;min-height:0;position:relative;display:flex;flex-direction:column}#home{flex:1;overflow:auto;padding:18px 22px 26px}.hhero{position:relative;overflow:hidden;border-radius:18px;padding:26px 30px;color:#fff;background:linear-gradient(120deg,#1B3139,#22425a,#2a2f6b,#1B3139);background-size:300% 300%;animation:dbxGrad 14s ease infinite}.hhero .blob{position:absolute;border-radius:50%;filter:blur(34px);opacity:.55;animation:dbxFloat 9s ease-in-out infinite}.hhero .b1{width:260px;height:260px;background:#FF3621;right:-50px;top:-90px}.hhero .b2{width:200px;height:200px;background:#7C4DFF;right:220px;bottom:-120px;animation-delay:-3s}.hhero .b3{width:160px;height:160px;background:#00A3A1;left:-50px;bottom:-70px;animation-delay:-6s}.hhero>div{position:relative}.hhero h1{margin:0 0 6px;font-size:30px;font-weight:800;letter-spacing:-.01em}.hhero h1 em{font-style:normal;color:#FF8A7A}.hhero p{margin:0;color:#E2E8F0;font-size:15px;max-width:760px;line-height:1.5}.hstats{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.hstats span{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.25);padding:4px 12px;border-radius:999px;font-size:13px}.hrow{display:flex;gap:10px;align-items:center;margin:16px 0 4px;flex-wrap:wrap}.cats{display:flex;gap:8px;flex-wrap:wrap;flex:1}.cat{border:1px solid var(--line);background:#fff;color:#334155;border-radius:999px;padding:8px 14px;cursor:pointer;font-size:14px;font-weight:600;display:inline-flex;gap:7px;align-items:center;transition:all .2s}.cat:hover{border-color:var(--accent);transform:translateY(-1px)}.cat.on{background:var(--navy);color:#fff;border-color:var(--navy);box-shadow:0 6px 16px rgba(27,49,57,.25)}.cat i{font-style:normal;font-size:12px;background:rgba(100,116,139,.18);border-radius:999px;padding:1px 7px}.cat.on i{background:rgba(255,255,255,.2)}#q{border:1px solid var(--line);border-radius:999px;padding:9px 14px;font-size:14px;min-width:210px;outline:none;font-family:inherit;background:#fff}#q:focus{border-color:var(--purple);box-shadow:0 0 0 3px rgba(124,77,255,.15)}.cdesc{color:var(--muted);font-size:14px;margin:8px 2px 2px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.cdesc button{margin-left:auto;border:1px solid var(--line);background:#fff;border-radius:999px;padding:6px 14px;cursor:pointer;font-size:13px;font-weight:600;color:var(--navy)}.cdesc button:hover{border-color:var(--accent);color:var(--accent)}.gtitle{font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#94A3B8;margin:18px 2px 8px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:14px}.mcard{background:#fff;border-radius:16px;padding:16px 16px 12px;cursor:pointer;border:2px solid transparent;box-shadow:0 4px 14px rgba(27,49,57,.07);transition:transform .2s,border-color .2s,box-shadow .2s;display:flex;flex-direction:column;animation:dbxRise .45s both;animation-delay:calc(var(--i,0)*35ms)}.mcard:hover{transform:translateY(-3px);border-color:var(--accent);box-shadow:0 12px 28px rgba(27,49,57,.14)}.mcard .mh{display:flex;gap:10px;align-items:flex-start}.mcard .mi{font-size:26px;line-height:1;flex:none;width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,#FFF4F1,#F5F3FF);display:flex;align-items:center;justify-content:center}.mcard .mt{font-weight:800;color:var(--navy);font-size:15.5px;line-height:1.25}.mcard .ms{color:#475569;font-size:13px;line-height:1.45;margin:8px 0 10px;flex:1}.mchips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.mchips span{font-size:11.5px;background:#F1F5F9;color:#475569;border-radius:999px;padding:2px 9px;white-space:nowrap}.mact{display:flex;gap:6px}.mact button{flex:1;border:1px solid var(--line);background:#fff;border-radius:9px;padding:7px 4px;cursor:pointer;font-size:12.5px;font-weight:700;color:var(--navy);white-space:nowrap}.mact button:hover{border-color:var(--accent);color:var(--accent)}.mact button.go{background:linear-gradient(135deg,#FF3621,#7C4DFF);border:0;color:#fff}.empty{color:var(--muted);padding:30px;text-align:center}.hfoot{margin-top:22px;display:flex;gap:14px;flex-wrap:wrap}.hfoot .cta{flex:2 1 380px;margin:0}.hfoot .pip{flex:1 1 260px;background:#fff;border-radius:16px;padding:16px 18px;border:1px solid var(--line);font-size:13px;color:#475569}.hfoot .pip code{display:block;background:#0D1117;color:#E6EDF3;border-radius:8px;padding:8px 10px;margin-top:6px;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre-wrap}#player{flex:1;min-height:0;display:none;flex-direction:column}#slides{flex:1;display:flex;flex-direction:column;min-height:0;padding:14px 18px 8px;position:relative}.stage{flex:1;position:relative;min-height:0;perspective:1400px}.slide{position:absolute;inset:0;background:#fff;border-radius:18px;box-shadow:0 14px 40px rgba(27,49,57,.14);overflow:auto;padding:26px 44px 30px}.slide.enter-r{animation:inR .45s cubic-bezier(.2,.8,.2,1) both}.slide.enter-l{animation:inL .45s cubic-bezier(.2,.8,.2,1) both}@keyframes inR{from{opacity:0;transform:translateX(60px) rotateY(-6deg)}to{opacity:1;transform:none}}@keyframes inL{from{opacity:0;transform:translateX(-60px) rotateY(6deg)}to{opacity:1;transform:none}}.slide .dbx{max-width:none;font-size:17px}.slide .dbx .sec-head h2{font-size:29px}.slide .dbx table{font-size:15px}.slide .dbx .code pre{font-size:13.5px}.slide .dbx>*{animation:dbxRise .55s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--i,0)*80ms + 100ms)}.slide.title{padding:0;overflow:hidden;background:transparent}.slide.title .dbx{height:100%;display:flex;flex-direction:column;position:relative}.slide.title .hero{flex:1;margin:0;border-radius:18px;display:flex;align-items:center;padding:40px 60px 130px}.slide.title .hero h1{font-size:46px}.slide.title .sub{font-size:19px}.slide.title .b1{width:420px;height:420px}.slide.title .b2{width:340px;height:340px}.slide.title .b3{width:300px;height:300px}.slide.title .idea{position:absolute;left:60px;right:60px;bottom:30px;font-size:17px;background:rgba(255,255,255,.96)}.slide.title .dbx>:not(.hero):not(.idea){display:none}.controls{display:flex;align-items:center;gap:12px;padding-top:10px;flex:none}.controls .nav{border:1px solid var(--line);background:#fff;border-radius:10px;min-width:44px;height:36px;cursor:pointer;font-size:15px;font-weight:700;color:var(--navy);padding:0 12px}.controls .nav:hover{border-color:var(--accent);color:var(--accent)}.controls .nav.next{background:linear-gradient(135deg,#FF3621,#7C4DFF);color:#fff;border:0}.dots{display:flex;gap:6px;flex:1;justify-content:center;flex-wrap:wrap}.dots button{width:10px;height:10px;border-radius:50%;border:0;background:#CBD5E1;cursor:pointer;padding:0;transition:all .25s}.dots button.on{background:var(--accent);width:28px;border-radius:6px}.count{color:var(--muted);font-size:13px;min-width:52px;text-align:right}.hint{color:#94A3B8;font-size:12px;white-space:nowrap}#overview{position:absolute;inset:0;background:rgba(244,242,238,.97);z-index:4;display:none;overflow:auto;padding:22px}#overview.on{display:block;animation:dbxRise .3s both}.ogrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}.ocard{background:#fff;border-radius:14px;padding:14px;cursor:pointer;border:2px solid transparent;box-shadow:0 4px 14px rgba(0,0,0,.06);transition:all .2s}.ocard:hover{transform:translateY(-3px);border-color:var(--accent)}.ocard .n{font-size:12px;color:var(--muted);font-weight:700}.ocard .i{font-size:26px;margin:4px 0}.ocard .t{font-weight:700;color:var(--navy);font-size:14px}#doc{flex:1;display:none;min-height:0}#player.docmode #slides{display:none}#player.docmode #doc{display:flex}#toc{width:250px;flex:none;overflow:auto;padding:16px 12px;border-right:1px solid var(--line);background:#fff}#toc a{display:flex;gap:8px;align-items:center;padding:7px 10px;border-radius:9px;color:#334155;text-decoration:none;font-size:13px;margin:2px 0;cursor:pointer}#toc a:hover{background:#F1F5F9}#toc a.on{background:#FFF1EE;color:#C62D1A;font-weight:700}#toc .rawbtn{margin-top:12px;width:100%;border:1px dashed #CBD5E1;background:#fff;border-radius:9px;padding:8px;cursor:pointer;font-size:12.5px;color:#475569}#docScroll{flex:1;overflow:auto;padding:20px 28px 60px}.dsec{background:#fff;border-radius:16px;padding:22px 28px;margin:0 auto 16px;max-width:1000px;box-shadow:0 4px 18px rgba(27,49,57,.06)}.dsec.herosec{padding:0;background:transparent;box-shadow:none}.dsec .dbx{max-width:none}.dsec .dbx>*{animation:none}.rawmd{max-width:1000px;margin:0 auto;background:#0D1117;color:#E6EDF3;border-radius:14px;padding:18px 20px;font-size:12.5px;line-height:1.55;white-space:pre-wrap;word-break:break-word;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.quiz{max-width:820px}.dbx .code .copy{display:inline-block;margin-left:auto;border:1px solid #30363D;background:#21262D;color:#C9D1D9;border-radius:6px;font-size:11px;padding:2px 8px;cursor:pointer}.dbx .code .run+.copy{margin-left:10px}.fin{text-align:center;padding:10px 0}.fin .big{font-size:60px;animation:vzPop .6s both}.fin h2{font-size:30px;color:var(--navy);margin:6px 0}.fin p{color:var(--muted);margin:0 0 16px}.fcards{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;text-align:left;margin-bottom:14px}.fcard{flex:1 1 220px;max-width:330px;background:#F8FAFC;border:1px solid var(--line);border-radius:14px;padding:14px 16px;cursor:pointer;transition:all .2s}.fcard:hover{border-color:var(--accent);transform:translateY(-2px)}.fcard b{display:block;color:var(--navy);margin-bottom:2px}.fcard span{font-size:13.5px;color:#475569}#modal{position:absolute;inset:0;background:rgba(15,23,42,.55);z-index:20;display:none;align-items:center;justify-content:center;padding:20px}#modal.on{display:flex;animation:dbxRise .25s both}.mbox{background:#fff;border-radius:18px;max-width:640px;width:100%;max-height:100%;overflow:auto;padding:22px 24px;box-shadow:0 30px 80px rgba(0,0,0,.35)}.mbox h3{margin:0 0 6px;color:var(--navy);font-size:20px}.mbox p{color:#475569;font-size:14px;line-height:1.5;margin:6px 0}.mbox ul{margin:6px 0;padding-left:20px;color:#334155;font-size:14px}.cmd{display:flex;gap:8px;align-items:stretch;margin:8px 0}.cmd code{flex:1;background:#0D1117;color:#E6EDF3;border-radius:10px;padding:10px 12px;font-size:12.5px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre-wrap;word-break:break-all}.cmd button,.mclose{border:0;border-radius:10px;padding:0 14px;cursor:pointer;font-weight:700;background:linear-gradient(135deg,#FF3621,#7C4DFF);color:#fff;font-size:13px}.mclose{padding:9px 18px;margin-top:10px;background:#E5E7EB;color:#374151}.fsopt{display:block;width:100%;text-align:left;border:1px solid var(--line);background:#F8FAFC;border-radius:12px;padding:11px 14px;margin:8px 0;cursor:pointer;text-decoration:none;color:#0F172A;font-size:14px}.fsopt:hover{border-color:#FF3621;background:#FFF7F5}.fsopt span{display:block;color:#64748B;font-size:12.5px;margin-top:2px}.mclose{padding:9px 16px;margin-top:6px}.tip{background:#ECFDF3;border:1px solid #A7F3D0;border-radius:10px;padding:9px 12px;font-size:13.5px;color:#065F46;margin:8px 0}#err{position:absolute;left:10px;right:10px;bottom:10px;background:#FEF2F2;border:1px solid #FCA5A5;color:#991B1B;border-radius:10px;padding:8px 12px;font-size:12px;z-index:30;display:none;white-space:pre-wrap}.confetti{position:absolute;top:-20px;font-size:22px;z-index:9;animation:fall 2.6s linear forwards;pointer-events:none}@keyframes fall{to{transform:translateY(900px) rotate(720deg);opacity:.7}}.loading{padding:60px;text-align:center;color:var(--muted)}@media (max-width:820px){.slide{padding:18px}.slide.title .hero{padding:26px 26px 150px}.slide.title .hero h1{font-size:30px}.slide.title .idea{left:16px;right:16px}#toc{display:none}.crumb{display:none}.hint{display:none}.seg button{padding:6px 9px}}@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
'<button class="hbtn" id="bOver" title="Slide overview (O)" style="display:none">▦</button>' +
|
|
27
27
|
'<button class="hbtn pri" id="bSave" style="display:none">💾 Save to workspace</button>' +
|
|
28
28
|
'<button class="hbtn" id="bSize" title="Window height">↕</button>' +
|
|
29
|
-
'<button class="hbtn" id="bFull" title="Full screen (F)"
|
|
29
|
+
'<button class="hbtn" id="bFull" title="Full screen (F)">⛶ Full screen</button>' +
|
|
30
30
|
'</div><div id="bar"></div>' +
|
|
31
31
|
'<div id="main">' +
|
|
32
32
|
'<div id="home"></div>' +
|
|
@@ -336,23 +336,42 @@
|
|
|
336
336
|
if (!S.mod) return 'cat/' + S.cat;
|
|
337
337
|
return S.mode === 'doc' ? 'doc/' + S.mod.id : 'slides/' + S.mod.id + '/' + S.idx;
|
|
338
338
|
}
|
|
339
|
-
|
|
340
|
-
// then the app is reopened in its own browser tab, where F / ⛶ gives real full screen.
|
|
341
|
-
function openTab() {
|
|
342
|
-
var w = null;
|
|
343
|
-
try { w = window.open('', '_blank'); } catch (e) { }
|
|
344
|
-
if (!w) { setH(Math.max(H, (window.screen && screen.availHeight || 900) - 160)); root.scrollIntoView(); return; }
|
|
339
|
+
function pageHtml() {
|
|
345
340
|
var start = '<script>window.DBE_START=' + JSON.stringify({ route: route(), page: true }) + ';<\/script>';
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
341
|
+
return SRC.replace('<script>window.DBE=', start + '<script>window.DBE=');
|
|
342
|
+
}
|
|
343
|
+
function fillScreen() {
|
|
344
|
+
setH(Math.max(H, ((window.screen && screen.availHeight) || 900) - 140));
|
|
345
|
+
try { root.scrollIntoView({ block: 'start' }); } catch (e) { root.scrollIntoView(); }
|
|
346
|
+
}
|
|
347
|
+
// Notebook outputs (Databricks displayHTML) live in an iframe that does not allow full screen.
|
|
348
|
+
// Then offer real links (a click on a link is rarely blocked, unlike window.open from script).
|
|
349
|
+
function fsMenu() {
|
|
350
|
+
var url = null;
|
|
351
|
+
try { url = URL.createObjectURL(new Blob([pageHtml()], { type: 'text/html' })); } catch (e) { }
|
|
352
|
+
var h = '<div class="mbox"><h3>⛶ Full screen</h3>' +
|
|
353
|
+
'<p>The notebook does not let this window go full screen by itself. Pick one:</p>' +
|
|
354
|
+
(url ? '<a class="fsopt" href="' + url + '" target="_blank" rel="noopener" id="fsTab"><b>↗ Open in a new browser tab</b>' +
|
|
355
|
+
'<span>The whole app in its own tab, right where you are now. Press <b>F</b> there for real full screen.</span></a>' : '') +
|
|
356
|
+
'<button class="fsopt" id="fsFill"><b>⤢ Make this window as tall as the screen</b><span>Stays in the notebook. Combine it with the ' +
|
|
357
|
+
'cell\'s own full-screen icon in the Databricks cell toolbar.</span></button>' +
|
|
358
|
+
(url ? '<a class="fsopt" href="' + url + '" download="databricksedu.html" id="fsDl"><b>⬇ Download as an HTML file</b>' +
|
|
359
|
+
'<span>Open it later in any browser, also offline.</span></a>' : '') +
|
|
360
|
+
'<button class="mclose" id="mclose">Close</button></div>';
|
|
361
|
+
var modal = $('modal');
|
|
362
|
+
modal.innerHTML = h; modal.classList.add('on');
|
|
363
|
+
function close() { modal.classList.remove('on'); }
|
|
364
|
+
$('fsFill').onclick = function () { close(); fillScreen(); };
|
|
365
|
+
if (url) { $('fsTab').addEventListener('click', function () { setTimeout(close, 50); }); $('fsDl').addEventListener('click', function () { setTimeout(close, 50); }); }
|
|
366
|
+
$('mclose').onclick = close;
|
|
367
|
+
modal.onclick = function (e) { if (e.target === modal) close(); };
|
|
349
368
|
}
|
|
350
369
|
function toggleFs() {
|
|
351
370
|
if (document.fullscreenElement || document.webkitFullscreenElement) return (document.exitFullscreen || document.webkitExitFullscreen).call(document);
|
|
352
|
-
if (!fsOk) return
|
|
371
|
+
if (!fsOk) return fsMenu();
|
|
353
372
|
var req = root.requestFullscreen || root.webkitRequestFullscreen, p = null;
|
|
354
|
-
try { p = req.call(root); } catch (e) { return
|
|
355
|
-
if (p && p.catch) p.catch(
|
|
373
|
+
try { p = req.call(root); } catch (e) { return fsMenu(); }
|
|
374
|
+
if (p && p.catch) p.catch(fsMenu);
|
|
356
375
|
}
|
|
357
376
|
document.addEventListener('keydown', function (e) {
|
|
358
377
|
if (/INPUT|TEXTAREA/.test((e.target.tagName || ''))) return;
|
|
@@ -13,20 +13,35 @@ def _magic(text):
|
|
|
13
13
|
return "\n".join("# MAGIC " + line if line else "# MAGIC" for line in text.splitlines())
|
|
14
14
|
|
|
15
15
|
|
|
16
|
+
_CSS_JS = {}
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def _css_loader(with_viz):
|
|
20
|
+
"""A script that adds the stylesheet. Databricks runs the scripts of a %md-sandbox cell, but its
|
|
21
|
+
Markdown pass can break a long <style> block (CSS is full of * and _); base64 has neither."""
|
|
22
|
+
if with_viz not in _CSS_JS:
|
|
23
|
+
css = catalog.asset("dbx.css") + (catalog.asset("viz.css") if with_viz else "")
|
|
24
|
+
b64 = base64.b64encode(css.encode("utf-8")).decode("ascii")
|
|
25
|
+
b64 = "'+\n'".join(b64[i:i + 400] for i in range(0, len(b64), 400)) # short lines
|
|
26
|
+
_CSS_JS[with_viz] = ("(function(){var b=atob('%s'),u=new Uint8Array(b.length);"
|
|
27
|
+
"for(var i=0;i<b.length;i++)u[i]=b.charCodeAt(i);"
|
|
28
|
+
"var s=document.createElement('style');s.textContent=new TextDecoder('utf-8').decode(u);"
|
|
29
|
+
"(document.head||document.documentElement).appendChild(s);})();\n" % b64)
|
|
30
|
+
return _CSS_JS[with_viz]
|
|
31
|
+
|
|
32
|
+
|
|
16
33
|
def _sandbox(cell):
|
|
17
34
|
"""A %md-sandbox cell. No blank lines (they would end the HTML block) and no bare $ (KaTeX)."""
|
|
18
35
|
body = cell["h"].replace("$", "$")
|
|
19
36
|
body = "\n".join(line if line.strip() else "<span></span>" for line in body.splitlines())
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
script = ""
|
|
37
|
+
out = "%md-sandbox\n<div class=\"dbx\">\n" + body + "\n</div>"
|
|
38
|
+
script = _css_loader(bool(cell.get("viz")))
|
|
23
39
|
if cell.get("viz"):
|
|
24
40
|
script += catalog.asset("viz.js") + "\nDBXViz.init(document, {autoplay: true});\n"
|
|
25
41
|
if cell.get("quiz"):
|
|
26
42
|
quiz = json.dumps(cell["quiz"], ensure_ascii=False).replace("$", "\\u0024").replace("</", "<\\/")
|
|
27
43
|
script += catalog.asset("quiz.js") + "\ndbxQuiz('dbxquiz', " + quiz + ");\n"
|
|
28
|
-
|
|
29
|
-
out += "\n<script>\n" + script.replace("$", "\\u0024") + "</script>"
|
|
44
|
+
out += "\n<script>\n" + script.replace("$", "\\u0024") + "</script>"
|
|
30
45
|
return out
|
|
31
46
|
|
|
32
47
|
|
|
@@ -139,6 +139,10 @@ body:has(#dbe.page){overflow:hidden}
|
|
|
139
139
|
.cmd code{flex:1;background:#0D1117;color:#E6EDF3;border-radius:10px;padding:10px 12px;font-size:12.5px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre-wrap;word-break:break-all}
|
|
140
140
|
.cmd button,.mclose{border:0;border-radius:10px;padding:0 14px;cursor:pointer;font-weight:700;background:linear-gradient(135deg,#FF3621,#7C4DFF);color:#fff;font-size:13px}
|
|
141
141
|
.mclose{padding:9px 18px;margin-top:10px;background:#E5E7EB;color:#374151}
|
|
142
|
+
.fsopt{display:block;width:100%;text-align:left;border:1px solid var(--line);background:#F8FAFC;border-radius:12px;padding:11px 14px;margin:8px 0;cursor:pointer;text-decoration:none;color:#0F172A;font-size:14px}
|
|
143
|
+
.fsopt:hover{border-color:#FF3621;background:#FFF7F5}
|
|
144
|
+
.fsopt span{display:block;color:#64748B;font-size:12.5px;margin-top:2px}
|
|
145
|
+
.mclose{padding:9px 16px;margin-top:6px}
|
|
142
146
|
.tip{background:#ECFDF3;border:1px solid #A7F3D0;border-radius:10px;padding:9px 12px;font-size:13.5px;color:#065F46;margin:8px 0}
|
|
143
147
|
#err{position:absolute;left:10px;right:10px;bottom:10px;background:#FEF2F2;border:1px solid #FCA5A5;color:#991B1B;border-radius:10px;padding:8px 12px;font-size:12px;z-index:30;display:none;white-space:pre-wrap}
|
|
144
148
|
.confetti{position:absolute;top:-20px;font-size:22px;z-index:9;animation:fall 2.6s linear forwards;pointer-events:none}
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
'<button class="hbtn" id="bOver" title="Slide overview (O)" style="display:none">▦</button>' +
|
|
29
29
|
'<button class="hbtn pri" id="bSave" style="display:none">💾 Save to workspace</button>' +
|
|
30
30
|
'<button class="hbtn" id="bSize" title="Window height">↕</button>' +
|
|
31
|
-
'<button class="hbtn" id="bFull" title="Full screen (F)"
|
|
31
|
+
'<button class="hbtn" id="bFull" title="Full screen (F)">⛶ Full screen</button>' +
|
|
32
32
|
'</div><div id="bar"></div>' +
|
|
33
33
|
'<div id="main">' +
|
|
34
34
|
'<div id="home"></div>' +
|
|
@@ -344,23 +344,42 @@
|
|
|
344
344
|
if (!S.mod) return 'cat/' + S.cat;
|
|
345
345
|
return S.mode === 'doc' ? 'doc/' + S.mod.id : 'slides/' + S.mod.id + '/' + S.idx;
|
|
346
346
|
}
|
|
347
|
-
|
|
348
|
-
// then the app is reopened in its own browser tab, where F / ⛶ gives real full screen.
|
|
349
|
-
function openTab() {
|
|
350
|
-
var w = null;
|
|
351
|
-
try { w = window.open('', '_blank'); } catch (e) { }
|
|
352
|
-
if (!w) { setH(Math.max(H, (window.screen && screen.availHeight || 900) - 160)); root.scrollIntoView(); return; }
|
|
347
|
+
function pageHtml() {
|
|
353
348
|
var start = '<script>window.DBE_START=' + JSON.stringify({ route: route(), page: true }) + ';<\/script>';
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
349
|
+
return SRC.replace('<script>window.DBE=', start + '<script>window.DBE=');
|
|
350
|
+
}
|
|
351
|
+
function fillScreen() {
|
|
352
|
+
setH(Math.max(H, ((window.screen && screen.availHeight) || 900) - 140));
|
|
353
|
+
try { root.scrollIntoView({ block: 'start' }); } catch (e) { root.scrollIntoView(); }
|
|
354
|
+
}
|
|
355
|
+
// Notebook outputs (Databricks displayHTML) live in an iframe that does not allow full screen.
|
|
356
|
+
// Then offer real links (a click on a link is rarely blocked, unlike window.open from script).
|
|
357
|
+
function fsMenu() {
|
|
358
|
+
var url = null;
|
|
359
|
+
try { url = URL.createObjectURL(new Blob([pageHtml()], { type: 'text/html' })); } catch (e) { }
|
|
360
|
+
var h = '<div class="mbox"><h3>⛶ Full screen</h3>' +
|
|
361
|
+
'<p>The notebook does not let this window go full screen by itself. Pick one:</p>' +
|
|
362
|
+
(url ? '<a class="fsopt" href="' + url + '" target="_blank" rel="noopener" id="fsTab"><b>↗ Open in a new browser tab</b>' +
|
|
363
|
+
'<span>The whole app in its own tab, right where you are now. Press <b>F</b> there for real full screen.</span></a>' : '') +
|
|
364
|
+
'<button class="fsopt" id="fsFill"><b>⤢ Make this window as tall as the screen</b><span>Stays in the notebook. Combine it with the ' +
|
|
365
|
+
'cell\'s own full-screen icon in the Databricks cell toolbar.</span></button>' +
|
|
366
|
+
(url ? '<a class="fsopt" href="' + url + '" download="databricksedu.html" id="fsDl"><b>⬇ Download as an HTML file</b>' +
|
|
367
|
+
'<span>Open it later in any browser, also offline.</span></a>' : '') +
|
|
368
|
+
'<button class="mclose" id="mclose">Close</button></div>';
|
|
369
|
+
var modal = $('modal');
|
|
370
|
+
modal.innerHTML = h; modal.classList.add('on');
|
|
371
|
+
function close() { modal.classList.remove('on'); }
|
|
372
|
+
$('fsFill').onclick = function () { close(); fillScreen(); };
|
|
373
|
+
if (url) { $('fsTab').addEventListener('click', function () { setTimeout(close, 50); }); $('fsDl').addEventListener('click', function () { setTimeout(close, 50); }); }
|
|
374
|
+
$('mclose').onclick = close;
|
|
375
|
+
modal.onclick = function (e) { if (e.target === modal) close(); };
|
|
357
376
|
}
|
|
358
377
|
function toggleFs() {
|
|
359
378
|
if (document.fullscreenElement || document.webkitFullscreenElement) return (document.exitFullscreen || document.webkitExitFullscreen).call(document);
|
|
360
|
-
if (!fsOk) return
|
|
379
|
+
if (!fsOk) return fsMenu();
|
|
361
380
|
var req = root.requestFullscreen || root.webkitRequestFullscreen, p = null;
|
|
362
|
-
try { p = req.call(root); } catch (e) { return
|
|
363
|
-
if (p && p.catch) p.catch(
|
|
381
|
+
try { p = req.call(root); } catch (e) { return fsMenu(); }
|
|
382
|
+
if (p && p.catch) p.catch(fsMenu);
|
|
364
383
|
}
|
|
365
384
|
document.addEventListener('keydown', function (e) {
|
|
366
385
|
if (/INPUT|TEXTAREA/.test((e.target.tagName || ''))) return;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.2.0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/analytics/020-ai-bi-dashboards/module.md
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/analytics/020-ai-bi-dashboards/quiz.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/020-parquet-files/module.md
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/020-parquet-files/quiz.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/090-deletion-vectors/module.md
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/090-deletion-vectors/quiz.json
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/100-delta-dml-merge/module.md
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/100-delta-dml-merge/quiz.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/120-change-data-feed/module.md
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/120-change-data-feed/quiz.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/220-lakeflow-jobs/module.md
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/data-engineering/220-lakeflow-jobs/quiz.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/exam-prep/040-exam-ml-associate/module.md
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/exam-prep/040-exam-ml-associate/quiz.json
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/exam-prep/050-exam-ml-professional/module.md
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/exam-prep/050-exam-ml-professional/quiz.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/020-prompt-engineering/module.md
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/020-prompt-engineering/quiz.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/040-chunking-parsing/module.md
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/040-chunking-parsing/quiz.json
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/050-rag-architecture/module.md
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/050-rag-architecture/quiz.json
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/060-agents-tools/module.md
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/060-agents-tools/quiz.json
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/070-genai-evaluation/module.md
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/070-genai-evaluation/quiz.json
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/080-ai-functions-gateway/module.md
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/generative-ai/080-ai-functions-gateway/quiz.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/governance/040-lineage-system-tables/module.md
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/governance/040-lineage-system-tables/quiz.json
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/machine-learning/010-ml-lifecycle/module.md
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/machine-learning/010-ml-lifecycle/quiz.json
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/machine-learning/020-mlflow-tracking/module.md
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/machine-learning/020-mlflow-tracking/quiz.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/machine-learning/060-model-serving/module.md
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/machine-learning/060-model-serving/quiz.json
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/machine-learning/070-model-monitoring/module.md
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/machine-learning/070-model-monitoring/quiz.json
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/recaps/010-lakeflow-connect-recap/module.md
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/recaps/010-lakeflow-connect-recap/quiz.json
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/recaps/020-lakeflow-jobs-recap/module.md
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/recaps/020-lakeflow-jobs-recap/quiz.json
RENAMED
|
File without changes
|
{databricksedu-0.2.0 → databricksedu-0.2.1}/content/recaps/030-declarative-pipelines-recap/module.md
RENAMED
|
File without changes
|