From aae0458079c8183403cac39f3ee5198790cd4af5 Mon Sep 17 00:00:00 2001 From: Adrian Macneil Date: Sun, 26 Mar 2023 17:05:51 -0500 Subject: [PATCH] Website --- .github/workflows/ci.yml | 12 - .github/workflows/pages.yml | 217 - .github/workflows/website.yml | 50 + .prettierignore | 3 + docs/.prettierrc.yml => .prettierrc.yml | 2 - .vscode/settings.json | 13 +- docs/CNAME | 1 - docs/Pipfile | 8 - docs/Pipfile.lock | 537 - docs/README.md | 15 - docs/home/data-serialization-formats.md | 16 - docs/specification/README.md | 522 - docs/styles/extra.css | 21 - docs/support-matrix.md | 30 - docs/theme/main.html | 8 - .../integrations/analytics/fathom.html | 5 - package.json | 10 +- website/.gitignore | 3 + website/README.md | 41 + website/babel.config.js | 3 + .../docs/guides/comparison/motivation.md | 15 +- .../comparison/rosbag2-plugin-comparison.mdx | 123 +- .../comparison}/throughput/m1/100B_10MiB.png | 0 .../comparison}/throughput/m1/100B_1KiB.png | 0 .../comparison}/throughput/m1/10KiB_10MiB.png | 0 .../comparison}/throughput/m1/10KiB_1KiB.png | 0 .../comparison}/throughput/m1/1MiB_10MiB.png | 0 .../comparison}/throughput/m1/1MiB_1KiB.png | 0 .../comparison}/throughput/m1/mixed_10MiB.png | 0 .../comparison}/throughput/m1/mixed_1KiB.png | 0 .../comparison}/throughput/nuc/100B_10MiB.png | 0 .../comparison}/throughput/nuc/100B_1KiB.png | 0 .../throughput/nuc/10KiB_10MiB.png | 0 .../comparison}/throughput/nuc/10KiB_1KiB.png | 0 .../comparison}/throughput/nuc/1MiB_10MiB.png | 0 .../comparison}/throughput/nuc/1MiB_1KiB.png | 0 .../throughput/nuc/mixed_10MiB.png | 0 .../comparison}/throughput/nuc/mixed_1KiB.png | 0 .../docs/guides/concepts.md | 4 +- website/docs/guides/cpp/_category_.json | 6 + {docs => website/docs}/guides/cpp/protobuf.md | 0 .../guides/getting-started/_category_.json | 7 + .../guides}/getting-started/flatbuffers.md | 0 .../docs/guides}/getting-started/json.md | 2 +- .../docs/guides}/getting-started/overview.md | 3 +- .../docs/guides}/getting-started/protobuf.md | 4 +- .../docs/guides}/getting-started/ros-1.md | 2 +- .../docs/guides}/getting-started/ros-2.md | 2 +- {docs => website/docs/guides}/index.md | 16 + website/docs/guides/python/_category_.json | 6 + .../docs/guides/python/json-hero.png | 0 .../docs/guides/python/json-sydney.png | 0 {docs => website/docs}/guides/python/json.md | 24 +- .../docs}/guides/python/protobuf.md | 0 {docs => website/docs}/guides/python/ros1.md | 0 {docs => website/docs}/guides/python/ros2.md | 0 website/docs/guides/support-matrix.md | 34 + website/docs/reference/index.md | 1 + website/docs/spec/index.md | 527 + .../docs/spec}/mcap.ksy | 0 .../docs/spec/notes.md | 1 + .../docs/spec/registry.md | 4 +- website/docusaurus.config.js | 155 + website/package.json | 44 + website/sidebars.js | 42 + .../src/components/HomepageFeatures/index.js | 64 + .../HomepageFeatures/styles.module.css | 11 + website/src/css/custom.css | 30 + website/src/pages/index.js | 40 + website/src/pages/index.module.css | 23 + website/src/pages/markdown-page.md | 7 + {docs => website/static}/img/favicon32.png | 0 {docs => website/static}/img/mcap.png | 0 {docs => website/static}/img/mcap.webp | Bin {docs => website/static}/img/mcap240.webp | Bin .../throughput}/m1_throughput_results.csv | 0 .../throughput}/nuc_throughput_results.csv | 0 website/yarn.lock | 7605 +++++++++++++ yarn.lock | 9791 ++++++++++++++++- 79 files changed, 18320 insertions(+), 1790 deletions(-) delete mode 100644 .github/workflows/pages.yml create mode 100644 .github/workflows/website.yml rename docs/.prettierrc.yml => .prettierrc.yml (77%) delete mode 100644 docs/CNAME delete mode 100644 docs/Pipfile delete mode 100644 docs/Pipfile.lock delete mode 100644 docs/README.md delete mode 100644 docs/home/data-serialization-formats.md delete mode 100644 docs/specification/README.md delete mode 100644 docs/styles/extra.css delete mode 100644 docs/support-matrix.md delete mode 100644 docs/theme/main.html delete mode 100644 docs/theme/partials/integrations/analytics/fathom.html create mode 100644 website/.gitignore create mode 100644 website/README.md create mode 100644 website/babel.config.js rename docs/motivation/evaluation-of-robotics-data-recording-file-formats.md => website/docs/guides/comparison/motivation.md (98%) rename docs/performance-comparison/rosbag2-plugin-comparison.md => website/docs/guides/comparison/rosbag2-plugin-comparison.mdx (71%) rename {docs/performance-comparison => website/docs/guides/comparison}/throughput/m1/100B_10MiB.png (100%) rename {docs/performance-comparison => website/docs/guides/comparison}/throughput/m1/100B_1KiB.png (100%) rename {docs/performance-comparison => website/docs/guides/comparison}/throughput/m1/10KiB_10MiB.png (100%) rename {docs/performance-comparison => website/docs/guides/comparison}/throughput/m1/10KiB_1KiB.png (100%) rename {docs/performance-comparison => website/docs/guides/comparison}/throughput/m1/1MiB_10MiB.png (100%) rename {docs/performance-comparison => website/docs/guides/comparison}/throughput/m1/1MiB_1KiB.png (100%) rename {docs/performance-comparison => website/docs/guides/comparison}/throughput/m1/mixed_10MiB.png (100%) rename {docs/performance-comparison => website/docs/guides/comparison}/throughput/m1/mixed_1KiB.png (100%) rename {docs/performance-comparison => website/docs/guides/comparison}/throughput/nuc/100B_10MiB.png (100%) rename {docs/performance-comparison => website/docs/guides/comparison}/throughput/nuc/100B_1KiB.png (100%) rename {docs/performance-comparison => website/docs/guides/comparison}/throughput/nuc/10KiB_10MiB.png (100%) rename {docs/performance-comparison => website/docs/guides/comparison}/throughput/nuc/10KiB_1KiB.png (100%) rename {docs/performance-comparison => website/docs/guides/comparison}/throughput/nuc/1MiB_10MiB.png (100%) rename {docs/performance-comparison => website/docs/guides/comparison}/throughput/nuc/1MiB_1KiB.png (100%) rename {docs/performance-comparison => website/docs/guides/comparison}/throughput/nuc/mixed_10MiB.png (100%) rename {docs/performance-comparison => website/docs/guides/comparison}/throughput/nuc/mixed_1KiB.png (100%) rename docs/home/messages-channels-and-schemas.md => website/docs/guides/concepts.md (89%) create mode 100644 website/docs/guides/cpp/_category_.json rename {docs => website/docs}/guides/cpp/protobuf.md (100%) create mode 100644 website/docs/guides/getting-started/_category_.json rename {docs => website/docs/guides}/getting-started/flatbuffers.md (100%) rename {docs => website/docs/guides}/getting-started/json.md (97%) rename {docs => website/docs/guides}/getting-started/overview.md (95%) rename {docs => website/docs/guides}/getting-started/protobuf.md (95%) rename {docs => website/docs/guides}/getting-started/ros-1.md (98%) rename {docs => website/docs/guides}/getting-started/ros-2.md (98%) rename {docs => website/docs/guides}/index.md (86%) create mode 100644 website/docs/guides/python/_category_.json rename docs/img/0398582-hero.png => website/docs/guides/python/json-hero.png (100%) rename docs/img/705a434-sydney.png => website/docs/guides/python/json-sydney.png (100%) rename {docs => website/docs}/guides/python/json.md (82%) rename {docs => website/docs}/guides/python/protobuf.md (100%) rename {docs => website/docs}/guides/python/ros1.md (100%) rename {docs => website/docs}/guides/python/ros2.md (100%) create mode 100644 website/docs/guides/support-matrix.md create mode 100644 website/docs/reference/index.md create mode 100644 website/docs/spec/index.md rename {docs/specification => website/docs/spec}/mcap.ksy (100%) rename docs/specification/explanatory-notes.md => website/docs/spec/notes.md (99%) rename docs/specification/appendix.md => website/docs/spec/registry.md (98%) create mode 100644 website/docusaurus.config.js create mode 100644 website/package.json create mode 100644 website/sidebars.js create mode 100644 website/src/components/HomepageFeatures/index.js create mode 100644 website/src/components/HomepageFeatures/styles.module.css create mode 100644 website/src/css/custom.css create mode 100644 website/src/pages/index.js create mode 100644 website/src/pages/index.module.css create mode 100644 website/src/pages/markdown-page.md rename {docs => website/static}/img/favicon32.png (100%) rename {docs => website/static}/img/mcap.png (100%) rename {docs => website/static}/img/mcap.webp (100%) rename {docs => website/static}/img/mcap240.webp (100%) rename {docs/performance-comparison/throughput/m1 => website/static/throughput}/m1_throughput_results.csv (100%) rename {docs/performance-comparison/throughput/nuc => website/static/throughput}/nuc_throughput_results.csv (100%) create mode 100644 website/yarn.lock diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7425afff02..532481f7c3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -157,18 +157,6 @@ jobs: - run: yarn test:conformance:generate-inputs --verify - run: yarn test:conformance --runner rust- - docs: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 16.x - cache: yarn - - - run: yarn install --frozen-lockfile - - run: yarn docs:lint - cpp: runs-on: ubuntu-latest defaults: diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml deleted file mode 100644 index 95cb265655..0000000000 --- a/.github/workflows/pages.yml +++ /dev/null @@ -1,217 +0,0 @@ -name: Pages - -on: - push: - branches: [main] - pull_request: - branches: ["*"] - -jobs: - pages-home: - runs-on: ubuntu-latest - env: - PIPENV_PIPFILE: "docs/Pipfile" - steps: - - uses: actions/checkout@v3 - with: - lfs: true - - uses: actions/setup-python@v4 - with: - python-version: 3.7 - - name: Install pipenv - run: pip install pipenv==2023.2.4 - - - name: Install dependencies - run: pipenv install --deploy - - - name: Build documentation site - run: | - pipenv run mkdocs build - touch site/.nojekyll - - - uses: actions/upload-artifact@v3 - with: - name: __home__ - path: site - retention-days: 1 - - pages-cpp: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - run: mkdir __docs__ - - name: Generate C++ documentation - run: cd cpp && make ci-docs - - - run: tar -czf docs-cpp.tgz __docs__/cpp - - uses: actions/upload-artifact@v3 - with: - name: docs-cpp - path: docs-cpp.tgz - retention-days: 1 - - pages-typescript: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 16.x - cache: yarn - - - run: mkdir __docs__ - - name: Generate TypeScript documentation - run: | - yarn install --frozen-lockfile - yarn typedoc - - - run: tar -czf docs-typescript.tgz __docs__/typescript - - uses: actions/upload-artifact@v3 - with: - name: docs-typescript - path: docs-typescript.tgz - retention-days: 1 - - pages-python: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: 3.7 - - - run: pip install pipenv - - run: make -C python docs - - run: tar -czf docs-python.tgz __docs__/python - - uses: actions/upload-artifact@v3 - with: - name: docs-python - path: docs-python.tgz - retention-days: 1 - - pages-swift: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: swift-actions/setup-swift@v1 - with: - swift-version: "5.7" - - - run: mkdir __docs__ - - name: Generate Swift documentation - run: | - set -x - swift package \ - --allow-writing-to-directory __docs__ \ - generate-documentation --target MCAP \ - --output-path __docs__/swift \ - --disable-indexing \ - --transform-for-static-hosting \ - --hosting-base-path docs/swift - - # https://github.com/actions/upload-artifact/issues/85 - - run: tar -czf docs-swift.tgz __docs__/swift - - uses: actions/upload-artifact@v3 - with: - name: docs-swift - path: docs-swift.tgz - retention-days: 1 - - pages-rust: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - default: true - - - run: mkdir __docs__ - - name: Generate Rust documentation - run: cd rust && cargo doc --no-deps - - run: cp -r rust/target/doc __docs__/rust - - - run: tar -czf docs-rust.tgz __docs__/rust - - uses: actions/upload-artifact@v3 - with: - name: docs-rust - path: docs-rust.tgz - - pages-publish: - needs: - - pages-home - - pages-cpp - - pages-typescript - - pages-python - - pages-swift - - pages-rust - permissions: - contents: write - statuses: write - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - with: - ref: gh-pages - - name: Prepare working directory - run: git rm -r . - - - uses: actions/download-artifact@v3 - - name: Prepare GitHub Pages - run: | - set -x - - # Extract main site - find __home__ -mindepth 1 -maxdepth 1 -exec mv {} ./ \; - rm -rf __home__ - - # Extract generated API docs - for f in docs-*/*.tgz; do tar -xf $f; done - mv __docs__ docs - rm -rf docs-* - - git add --all - git diff --cached --stat - - - name: Push updates to GitHub Pages - if: github.ref == 'refs/heads/main' - run: | - if git diff --cached --quiet; then - echo "No changes to publish" - else - set -x - git config user.name "Foxglove" - git config user.email "contact@foxglove.dev" - git commit -m "Update docs from $GITHUB_REF_NAME (${GITHUB_SHA::7})" - git push origin gh-pages - fi - - - name: "Preview: copy to staging dir" - if: "!github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' && github.ref != 'refs/heads/main'" - run: cp -r . /tmp/preview-files && rm -rf /tmp/preview-files/.git - - - name: "Preview: auth to GCS" - if: "!github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' && github.ref != 'refs/heads/main'" - uses: "google-github-actions/auth@v1" - with: - credentials_json: "${{ secrets.GCS_PREVIEW_KEY_JSON }}" - - - name: "Preview: push to preview bucket" - if: "!github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' && github.ref != 'refs/heads/main'" - uses: "google-github-actions/upload-cloud-storage@v1" - with: - path: "/tmp/preview-files" - parent: false - destination: "foxglove-mcap-dev-preview/${{ github.sha }}" - - - name: "Preview: display URL" - if: "!github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' && github.ref != 'refs/heads/main'" - uses: Sibz/github-status-action@v1 - with: - authToken: ${{secrets.GITHUB_TOKEN}} - context: "Pages Preview" - description: "Available in details" - state: "success" - sha: ${{github.event.pull_request.head.sha || github.sha}} - target_url: "https://storage.googleapis.com/foxglove-mcap-dev-preview/${{ github.sha }}/index.html" diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml new file mode 100644 index 0000000000..e3c03a8eb8 --- /dev/null +++ b/.github/workflows/website.yml @@ -0,0 +1,50 @@ +name: Website + +env: + VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} + +on: + push: + branches: [main] + pull_request: + branches: ["*"] + +jobs: + publish: + name: Publish + runs-on: ubuntu-latest + environment: + name: Preview + url: ${{ steps.deploy.outputs.url }} + defaults: + run: + working-directory: website + steps: + - uses: actions/checkout@v3 + with: + lfs: true + + - uses: actions/setup-node@v3 + with: + node-version: 16.x + cache: yarn + + - run: yarn install --frozen-lockfile + + - name: Pull Vercel Environment (Preview) + if: github.ref != 'refs/heads/main' + run: yarn vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }} + + - name: Pull Vercel Environment (Production) + if: github.ref == 'refs/heads/main' + run: yarn vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }} + + - name: Build + run: yarn vercel build --token=${{ secrets.VERCEL_TOKEN }} + + - id: deploy + name: Deploy to Vercel + run: | + yarn vercel deploy --prebuilt --token=${{ secrets.VERCEL_TOKEN }} | tee deploy.log + echo "url=$(tail -1 deploy.log)">> $GITHUB_OUTPUT diff --git a/.prettierignore b/.prettierignore index 578c33223d..cb5a4f47fa 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,2 +1,5 @@ # Prettier converts `` to ` in Markdown, which breaks Swift-DocC **/*.docc/**/*.md +python/Pipfile.lock +tests/conformance/data/**/*.json +typescript/examples/flatbuffer/output/**/*.ts diff --git a/docs/.prettierrc.yml b/.prettierrc.yml similarity index 77% rename from docs/.prettierrc.yml rename to .prettierrc.yml index ab46229d14..3692bca425 100644 --- a/docs/.prettierrc.yml +++ b/.prettierrc.yml @@ -1,5 +1,3 @@ -proseWrap: never - overrides: - files: "*.ksy" options: diff --git a/.vscode/settings.json b/.vscode/settings.json index 4e56bcc568..256033c80e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,12 @@ // -*- jsonc -*- { "editor.formatOnSave": true, + "editor.defaultFormatter": "esbenp.prettier-vscode", + + "files.eol": "\n", + "files.insertFinalNewline": true, + "files.trimFinalNewlines": true, + "files.trimTrailingWhitespace": true, "typescript.tsdk": "node_modules/typescript/lib", "prettier.prettierPath": "./node_modules/prettier", @@ -16,17 +22,14 @@ "**/node_modules": true, "tests/conformance/data": true, "python/**/build": true, - "python/docs/*-apidoc": true, + "python/docs/*-apidoc": true }, "python.formatting.provider": "black", "python.analysis.typeCheckingMode": "strict", "python.linting.flake8Enabled": true, "python.linting.enabled": true, - "python.linting.flake8Args": [ - "--config", - "python/.flake8" - ], + "python.linting.flake8Args": ["--config", "python/.flake8"], "python.analysis.extraPaths": [ "./python/mcap", "./python/mcap-protobuf-support", diff --git a/docs/CNAME b/docs/CNAME deleted file mode 100644 index e810d05257..0000000000 --- a/docs/CNAME +++ /dev/null @@ -1 +0,0 @@ -mcap.dev diff --git a/docs/Pipfile b/docs/Pipfile deleted file mode 100644 index d9e4fda6b5..0000000000 --- a/docs/Pipfile +++ /dev/null @@ -1,8 +0,0 @@ -[packages] -cairosvg = "*" -mdx-truly-sane-lists = "*" -mkdocs = "*" -mkdocs-material = ">=8.5.0" -pillow = "*" -pygments = "*" -mkdocs-glightbox = "*" diff --git a/docs/Pipfile.lock b/docs/Pipfile.lock deleted file mode 100644 index 9a102c3888..0000000000 --- a/docs/Pipfile.lock +++ /dev/null @@ -1,537 +0,0 @@ -{ - "_meta": { - "hash": { - "sha256": "bcb58a856c861ec5b7884c94643096bb429736d0d724f08379107e71e14b92dc" - }, - "pipfile-spec": 6, - "requires": {}, - "sources": [ - { - "name": "pypi", - "url": "https://pypi.org/simple", - "verify_ssl": true - } - ] - }, - "default": { - "beautifulsoup4": { - "hashes": [ - "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30", - "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693" - ], - "markers": "python_version >= '3.6'", - "version": "==4.11.1" - }, - "cairocffi": { - "hashes": [ - "sha256:509339b32ccd8d7b00c2204c32736cde78db53a32e6a162d312478d25626cd9a" - ], - "markers": "python_version >= '3.7'", - "version": "==1.4.0" - }, - "cairosvg": { - "hashes": [ - "sha256:98c276b7e4f0caf01e5c7176765c104ffa1aa1461d63b2053b04ab663cf7052b", - "sha256:b0b9929cf5dba005178d746a8036fcf0025550f498ca54db61873322384783bc" - ], - "index": "pypi", - "version": "==2.5.2" - }, - "certifi": { - "hashes": [ - "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14", - "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382" - ], - "markers": "python_version >= '3.6'", - "version": "==2022.9.24" - }, - "cffi": { - "hashes": [ - "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5", - "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef", - "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104", - "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426", - "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405", - "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375", - "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a", - "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e", - "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc", - "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf", - "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185", - "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497", - "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3", - "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35", - "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c", - "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83", - "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21", - "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca", - "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984", - "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac", - "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd", - "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee", - "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a", - "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2", - "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192", - "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7", - "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585", - "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f", - "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e", - "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27", - "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b", - "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e", - "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e", - "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d", - "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c", - "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415", - "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82", - "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02", - "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314", - "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325", - "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c", - "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3", - "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914", - "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045", - "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d", - "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9", - "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5", - "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2", - "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c", - "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3", - "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2", - "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8", - "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d", - "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d", - "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9", - "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162", - "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76", - "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4", - "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e", - "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9", - "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6", - "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b", - "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01", - "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0" - ], - "version": "==1.15.1" - }, - "charset-normalizer": { - "hashes": [ - "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845", - "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f" - ], - "markers": "python_version >= '3.6'", - "version": "==2.1.1" - }, - "click": { - "hashes": [ - "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e", - "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48" - ], - "markers": "python_version >= '3.7'", - "version": "==8.1.3" - }, - "cssselect2": { - "hashes": [ - "sha256:1ccd984dab89fc68955043aca4e1b03e0cf29cad9880f6e28e3ba7a74b14aa5a", - "sha256:fd23a65bfd444595913f02fc71f6b286c29261e354c41d722ca7a261a49b5969" - ], - "markers": "python_version >= '3.7'", - "version": "==0.7.0" - }, - "defusedxml": { - "hashes": [ - "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", - "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==0.7.1" - }, - "ghp-import": { - "hashes": [ - "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", - "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343" - ], - "version": "==2.1.0" - }, - "idna": { - "hashes": [ - "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", - "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" - ], - "markers": "python_version >= '3.5'", - "version": "==3.4" - }, - "importlib-metadata": { - "hashes": [ - "sha256:da31db32b304314d044d3c12c79bd59e307889b287ad12ff387b3500835fc2ab", - "sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43" - ], - "markers": "python_version < '3.10'", - "version": "==5.0.0" - }, - "jinja2": { - "hashes": [ - "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852", - "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61" - ], - "markers": "python_version >= '3.7'", - "version": "==3.1.2" - }, - "markdown": { - "hashes": [ - "sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874", - "sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621" - ], - "markers": "python_version >= '3.6'", - "version": "==3.3.7" - }, - "markupsafe": { - "hashes": [ - "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003", - "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88", - "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5", - "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7", - "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a", - "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603", - "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1", - "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135", - "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247", - "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6", - "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601", - "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77", - "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02", - "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e", - "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63", - "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f", - "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980", - "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b", - "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812", - "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff", - "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96", - "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1", - "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925", - "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a", - "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6", - "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e", - "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f", - "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4", - "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f", - "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3", - "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c", - "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a", - "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417", - "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a", - "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a", - "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37", - "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452", - "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933", - "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a", - "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7" - ], - "markers": "python_version >= '3.7'", - "version": "==2.1.1" - }, - "mdx-truly-sane-lists": { - "hashes": [ - "sha256:b661022df7520a1e113af7c355c62216b384c867e4f59fb8ee7ad511e6e77f45", - "sha256:b9546a4c40ff8f1ab692f77cee4b6bfe8ddf9cccf23f0a24e71f3716fe290a37" - ], - "index": "pypi", - "version": "==1.3" - }, - "mergedeep": { - "hashes": [ - "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", - "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307" - ], - "markers": "python_version >= '3.6'", - "version": "==1.3.4" - }, - "mkdocs": { - "hashes": [ - "sha256:8947af423a6d0facf41ea1195b8e1e8c85ad94ac95ae307fe11232e0424b11c5", - "sha256:c8856a832c1e56702577023cd64cc5f84948280c1c0fcc6af4cd39006ea6aa8c" - ], - "index": "pypi", - "version": "==1.4.2" - }, - "mkdocs-glightbox": { - "hashes": [ - "sha256:cea3b79277144cb8dbdb1dcb3fc420e64c4357b2453941db1452c166ad9430ad" - ], - "index": "pypi", - "version": "==0.3.0" - }, - "mkdocs-material": { - "hashes": [ - "sha256:61396251819cf7f547f70a09ce6a7edb2ff5d32e47b9199769020b2d20a83d44", - "sha256:7ff092299e3a63cef99cd87e4a6cc7e7d9ec31fd190d766fd147c35572e6d593" - ], - "index": "pypi", - "version": "==8.5.8" - }, - "mkdocs-material-extensions": { - "hashes": [ - "sha256:96ca979dae66d65c2099eefe189b49d5ac62f76afb59c38e069ffc7cf3c131ec", - "sha256:bcc2e5fc70c0ec50e59703ee6e639d87c7e664c0c441c014ea84461a90f1e902" - ], - "markers": "python_version >= '3.7'", - "version": "==1.1" - }, - "packaging": { - "hashes": [ - "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", - "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" - ], - "markers": "python_version >= '3.6'", - "version": "==21.3" - }, - "pillow": { - "hashes": [ - "sha256:03150abd92771742d4a8cd6f2fa6246d847dcd2e332a18d0c15cc75bf6703040", - "sha256:073adb2ae23431d3b9bcbcff3fe698b62ed47211d0716b067385538a1b0f28b8", - "sha256:0b07fffc13f474264c336298d1b4ce01d9c5a011415b79d4ee5527bb69ae6f65", - "sha256:0b7257127d646ff8676ec8a15520013a698d1fdc48bc2a79ba4e53df792526f2", - "sha256:12ce4932caf2ddf3e41d17fc9c02d67126935a44b86df6a206cf0d7161548627", - "sha256:15c42fb9dea42465dfd902fb0ecf584b8848ceb28b41ee2b58f866411be33f07", - "sha256:18498994b29e1cf86d505edcb7edbe814d133d2232d256db8c7a8ceb34d18cef", - "sha256:1c7c8ae3864846fc95f4611c78129301e203aaa2af813b703c55d10cc1628535", - "sha256:22b012ea2d065fd163ca096f4e37e47cd8b59cf4b0fd47bfca6abb93df70b34c", - "sha256:276a5ca930c913f714e372b2591a22c4bd3b81a418c0f6635ba832daec1cbcfc", - "sha256:2e0918e03aa0c72ea56edbb00d4d664294815aa11291a11504a377ea018330d3", - "sha256:3033fbe1feb1b59394615a1cafaee85e49d01b51d54de0cbf6aa8e64182518a1", - "sha256:3168434d303babf495d4ba58fc22d6604f6e2afb97adc6a423e917dab828939c", - "sha256:32a44128c4bdca7f31de5be641187367fe2a450ad83b833ef78910397db491aa", - "sha256:3dd6caf940756101205dffc5367babf288a30043d35f80936f9bfb37f8355b32", - "sha256:40e1ce476a7804b0fb74bcfa80b0a2206ea6a882938eaba917f7a0f004b42502", - "sha256:41e0051336807468be450d52b8edd12ac60bebaa97fe10c8b660f116e50b30e4", - "sha256:4390e9ce199fc1951fcfa65795f239a8a4944117b5935a9317fb320e7767b40f", - "sha256:502526a2cbfa431d9fc2a079bdd9061a2397b842bb6bc4239bb176da00993812", - "sha256:51e0e543a33ed92db9f5ef69a0356e0b1a7a6b6a71b80df99f1d181ae5875636", - "sha256:57751894f6618fd4308ed8e0c36c333e2f5469744c34729a27532b3db106ee20", - "sha256:5d77adcd56a42d00cc1be30843d3426aa4e660cab4a61021dc84467123f7a00c", - "sha256:655a83b0058ba47c7c52e4e2df5ecf484c1b0b0349805896dd350cbc416bdd91", - "sha256:68943d632f1f9e3dce98908e873b3a090f6cba1cbb1b892a9e8d97c938871fbe", - "sha256:6c738585d7a9961d8c2821a1eb3dcb978d14e238be3d70f0a706f7fa9316946b", - "sha256:73bd195e43f3fadecfc50c682f5055ec32ee2c933243cafbfdec69ab1aa87cad", - "sha256:772a91fc0e03eaf922c63badeca75e91baa80fe2f5f87bdaed4280662aad25c9", - "sha256:77ec3e7be99629898c9a6d24a09de089fa5356ee408cdffffe62d67bb75fdd72", - "sha256:7db8b751ad307d7cf238f02101e8e36a128a6cb199326e867d1398067381bff4", - "sha256:801ec82e4188e935c7f5e22e006d01611d6b41661bba9fe45b60e7ac1a8f84de", - "sha256:82409ffe29d70fd733ff3c1025a602abb3e67405d41b9403b00b01debc4c9a29", - "sha256:828989c45c245518065a110434246c44a56a8b2b2f6347d1409c787e6e4651ee", - "sha256:829f97c8e258593b9daa80638aee3789b7df9da5cf1336035016d76f03b8860c", - "sha256:871b72c3643e516db4ecf20efe735deb27fe30ca17800e661d769faab45a18d7", - "sha256:89dca0ce00a2b49024df6325925555d406b14aa3efc2f752dbb5940c52c56b11", - "sha256:90fb88843d3902fe7c9586d439d1e8c05258f41da473952aa8b328d8b907498c", - "sha256:97aabc5c50312afa5e0a2b07c17d4ac5e865b250986f8afe2b02d772567a380c", - "sha256:9aaa107275d8527e9d6e7670b64aabaaa36e5b6bd71a1015ddd21da0d4e06448", - "sha256:9f47eabcd2ded7698106b05c2c338672d16a6f2a485e74481f524e2a23c2794b", - "sha256:a0a06a052c5f37b4ed81c613a455a81f9a3a69429b4fd7bb913c3fa98abefc20", - "sha256:ab388aaa3f6ce52ac1cb8e122c4bd46657c15905904b3120a6248b5b8b0bc228", - "sha256:ad58d27a5b0262c0c19b47d54c5802db9b34d38bbf886665b626aff83c74bacd", - "sha256:ae5331c23ce118c53b172fa64a4c037eb83c9165aba3a7ba9ddd3ec9fa64a699", - "sha256:af0372acb5d3598f36ec0914deed2a63f6bcdb7b606da04dc19a88d31bf0c05b", - "sha256:afa4107d1b306cdf8953edde0534562607fe8811b6c4d9a486298ad31de733b2", - "sha256:b03ae6f1a1878233ac620c98f3459f79fd77c7e3c2b20d460284e1fb370557d4", - "sha256:b0915e734b33a474d76c28e07292f196cdf2a590a0d25bcc06e64e545f2d146c", - "sha256:b4012d06c846dc2b80651b120e2cdd787b013deb39c09f407727ba90015c684f", - "sha256:b472b5ea442148d1c3e2209f20f1e0bb0eb556538690fa70b5e1f79fa0ba8dc2", - "sha256:b59430236b8e58840a0dfb4099a0e8717ffb779c952426a69ae435ca1f57210c", - "sha256:b90f7616ea170e92820775ed47e136208e04c967271c9ef615b6fbd08d9af0e3", - "sha256:b9a65733d103311331875c1dca05cb4606997fd33d6acfed695b1232ba1df193", - "sha256:bac18ab8d2d1e6b4ce25e3424f709aceef668347db8637c2296bcf41acb7cf48", - "sha256:bca31dd6014cb8b0b2db1e46081b0ca7d936f856da3b39744aef499db5d84d02", - "sha256:be55f8457cd1eac957af0c3f5ece7bc3f033f89b114ef30f710882717670b2a8", - "sha256:c7025dce65566eb6e89f56c9509d4f628fddcedb131d9465cacd3d8bac337e7e", - "sha256:c935a22a557a560108d780f9a0fc426dd7459940dc54faa49d83249c8d3e760f", - "sha256:dbb8e7f2abee51cef77673be97760abff1674ed32847ce04b4af90f610144c7b", - "sha256:e6ea6b856a74d560d9326c0f5895ef8050126acfdc7ca08ad703eb0081e82b74", - "sha256:ebf2029c1f464c59b8bdbe5143c79fa2045a581ac53679733d3a91d400ff9efb", - "sha256:f1ff2ee69f10f13a9596480335f406dd1f70c3650349e2be67ca3139280cade0" - ], - "index": "pypi", - "version": "==9.3.0" - }, - "pycparser": { - "hashes": [ - "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9", - "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206" - ], - "version": "==2.21" - }, - "pygments": { - "hashes": [ - "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1", - "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42" - ], - "index": "pypi", - "version": "==2.13.0" - }, - "pymdown-extensions": { - "hashes": [ - "sha256:651b0107bc9ee790aedea3673cb88832c0af27d2569cf45c2de06f1d65292e96", - "sha256:767d07d9dead0f52f5135545c01f4ed627f9a7918ee86c646d893e24c59db87d" - ], - "markers": "python_version >= '3.7'", - "version": "==9.7" - }, - "pyparsing": { - "hashes": [ - "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb", - "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc" - ], - "markers": "python_full_version >= '3.6.8'", - "version": "==3.0.9" - }, - "python-dateutil": { - "hashes": [ - "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", - "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.8.2" - }, - "pyyaml": { - "hashes": [ - "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf", - "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", - "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", - "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", - "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", - "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", - "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", - "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", - "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", - "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", - "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", - "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", - "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782", - "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", - "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", - "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", - "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", - "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", - "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1", - "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", - "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", - "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", - "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", - "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", - "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", - "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d", - "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", - "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", - "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7", - "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", - "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", - "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", - "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358", - "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", - "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", - "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", - "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", - "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f", - "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", - "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" - ], - "markers": "python_version >= '3.6'", - "version": "==6.0" - }, - "pyyaml-env-tag": { - "hashes": [ - "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb", - "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069" - ], - "markers": "python_version >= '3.6'", - "version": "==0.1" - }, - "requests": { - "hashes": [ - "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983", - "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349" - ], - "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==2.28.1" - }, - "six": { - "hashes": [ - "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", - "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.16.0" - }, - "soupsieve": { - "hashes": [ - "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759", - "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d" - ], - "markers": "python_version >= '3.6'", - "version": "==2.3.2.post1" - }, - "tinycss2": { - "hashes": [ - "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847", - "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627" - ], - "markers": "python_version >= '3.7'", - "version": "==1.2.1" - }, - "urllib3": { - "hashes": [ - "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e", - "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' and python_version < '4'", - "version": "==1.26.12" - }, - "watchdog": { - "hashes": [ - "sha256:083171652584e1b8829581f965b9b7723ca5f9a2cd7e20271edf264cfd7c1412", - "sha256:117ffc6ec261639a0209a3252546b12800670d4bf5f84fbd355957a0595fe654", - "sha256:186f6c55abc5e03872ae14c2f294a153ec7292f807af99f57611acc8caa75306", - "sha256:195fc70c6e41237362ba720e9aaf394f8178bfc7fa68207f112d108edef1af33", - "sha256:226b3c6c468ce72051a4c15a4cc2ef317c32590d82ba0b330403cafd98a62cfd", - "sha256:247dcf1df956daa24828bfea5a138d0e7a7c98b1a47cf1fa5b0c3c16241fcbb7", - "sha256:255bb5758f7e89b1a13c05a5bceccec2219f8995a3a4c4d6968fe1de6a3b2892", - "sha256:43ce20ebb36a51f21fa376f76d1d4692452b2527ccd601950d69ed36b9e21609", - "sha256:4f4e1c4aa54fb86316a62a87b3378c025e228178d55481d30d857c6c438897d6", - "sha256:5952135968519e2447a01875a6f5fc8c03190b24d14ee52b0f4b1682259520b1", - "sha256:64a27aed691408a6abd83394b38503e8176f69031ca25d64131d8d640a307591", - "sha256:6b17d302850c8d412784d9246cfe8d7e3af6bcd45f958abb2d08a6f8bedf695d", - "sha256:70af927aa1613ded6a68089a9262a009fbdf819f46d09c1a908d4b36e1ba2b2d", - "sha256:7a833211f49143c3d336729b0020ffd1274078e94b0ae42e22f596999f50279c", - "sha256:8250546a98388cbc00c3ee3cc5cf96799b5a595270dfcfa855491a64b86ef8c3", - "sha256:97f9752208f5154e9e7b76acc8c4f5a58801b338de2af14e7e181ee3b28a5d39", - "sha256:9f05a5f7c12452f6a27203f76779ae3f46fa30f1dd833037ea8cbc2887c60213", - "sha256:a735a990a1095f75ca4f36ea2ef2752c99e6ee997c46b0de507ba40a09bf7330", - "sha256:ad576a565260d8f99d97f2e64b0f97a48228317095908568a9d5c786c829d428", - "sha256:b530ae007a5f5d50b7fbba96634c7ee21abec70dc3e7f0233339c81943848dc1", - "sha256:bfc4d351e6348d6ec51df007432e6fe80adb53fd41183716017026af03427846", - "sha256:d3dda00aca282b26194bdd0adec21e4c21e916956d972369359ba63ade616153", - "sha256:d9820fe47c20c13e3c9dd544d3706a2a26c02b2b43c993b62fcd8011bcc0adb3", - "sha256:ed80a1628cee19f5cfc6bb74e173f1b4189eb532e705e2a13e3250312a62e0c9", - "sha256:ee3e38a6cc050a8830089f79cbec8a3878ec2fe5160cdb2dc8ccb6def8552658" - ], - "markers": "python_version >= '3.6'", - "version": "==2.1.9" - }, - "webencodings": { - "hashes": [ - "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", - "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" - ], - "version": "==0.5.1" - }, - "zipp": { - "hashes": [ - "sha256:4fcb6f278987a6605757302a6e40e896257570d11c51628968ccb2a47e80c6c1", - "sha256:7a7262fd930bd3e36c50b9a64897aec3fafff3dfdeec9623ae22b40e93f99bb8" - ], - "markers": "python_version >= '3.7'", - "version": "==3.10.0" - } - }, - "develop": {} -} diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 6f8cdf4f16..0000000000 --- a/docs/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# mcap.dev documentation site - -To generate the docs site, run from the root of the repo: - -``` -PIPENV_PIPFILE=docs/Pipfile pipenv install -PIPENV_PIPFILE=docs/Pipfile pipenv run mkdocs build -``` - -To run the development server: - -``` -PIPENV_PIPFILE=docs/Pipfile pipenv install -PIPENV_PIPFILE=docs/Pipfile pipenv run mkdocs serve -``` diff --git a/docs/home/data-serialization-formats.md b/docs/home/data-serialization-formats.md deleted file mode 100644 index 6716ee00df..0000000000 --- a/docs/home/data-serialization-formats.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -description: >- - MCAP files can store multiple streams of heterogeneous data, serialized in any of the following data formats… ---- - -# Data Serialization Formats - -MCAP files can store multiple streams of heterogeneous data, serialized in any of the following data formats: - -- [ROS 1](http://wiki.ros.org/) -- [ROS 2](https://docs.ros.org/) -- [JSON Schema](https://json-schema.org/) -- [Protobuf](https://developers.google.com/protocol-buffers) -- [FlatBuffers](https://google.github.io/flatbuffers/) - -To start reading and writing MCAP messages in these formats, check out the [Python](../guides/python/ros1.md) and [C++](../guides/cpp/protobuf.md) tutorials in our [Guides](../getting-started/overview.md) section. diff --git a/docs/specification/README.md b/docs/specification/README.md deleted file mode 100644 index 898ffe76ed..0000000000 --- a/docs/specification/README.md +++ /dev/null @@ -1,522 +0,0 @@ -# MCAP File Format Specification - -[compression_formats]: ./appendix.md#well-known-compression-formats -[message_encodings]: ./appendix.md#well-known-message-encodings -[schema_encodings]: ./appendix.md#well-known-schema-encodings -[profiles]: ./appendix.md#well-known-profiles -[feature_explanations]: ./explanatory-notes.md#feature-explanations - -## Overview - -MCAP is a modular container file format for recording timestamped [pub/sub](https://en.wikipedia.org/wiki/Publish–subscribe_pattern) messages with arbitrary serialization formats. - -MCAP files are designed to work well under various workloads, resource constraints, and durability requirements. - -A [Kaitai Struct](http://kaitai.io) description for the MCAP format is provided at [mcap.ksy](https://github.com/foxglove/mcap/blob/main/docs/specification/mcap.ksy). - -## File Structure - -A valid MCAP file is structured as follows. The Summary and Summary Offset sections are optional. - -
[][]