Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update for McStas McXtrace 3.5.16 #1

Merged
merged 145 commits into from
Dec 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
145 commits
Select commit Hold shift + click to select a range
8d1342d
Fix typo in README.md
nthiery Nov 26, 2023
a7f8d8b
Remove xfce4-screensaver
manics Jan 27, 2024
a68ce17
Include comment about why we need to remove screensaver
manics Jan 27, 2024
0ebf6cf
Merge pull request #76 from manics/disable-screensaver
yuvipanda Jan 28, 2024
6f527e8
Merge pull request #72 from nthiery/patch-1
yuvipanda Feb 3, 2024
a59abc4
Stop vendoring noVNC
yuvipanda Feb 3, 2024
823b155
Fix string used in smoke test
yuvipanda Feb 3, 2024
68e25d0
Link to the origin of these files
yuvipanda Feb 3, 2024
3a6e81e
Point to the exact version of vnc_lite.html we derived from
yuvipanda Feb 3, 2024
296f781
Make `pip install .` work with webpack
yuvipanda Feb 3, 2024
704151c
Add a test to check for built JS files inside package
yuvipanda Feb 3, 2024
7ac5182
Test to see if built JS file is in container
yuvipanda Feb 3, 2024
0ba0689
Make an editable pip install
yuvipanda Feb 4, 2024
f487972
Cleanup JS just a bit
yuvipanda Feb 3, 2024
21efc20
Add eslint & fix the one issue it found
yuvipanda Feb 3, 2024
389f265
Add missing eslintrc file
yuvipanda Feb 3, 2024
7674f14
Stop showing the desktop name
yuvipanda Feb 3, 2024
b411bf2
Set scaleViewPort to true
yuvipanda Feb 3, 2024
f932075
Cleanup styles
yuvipanda Feb 3, 2024
3d47e0a
Add a Jupyter Logo that takes you back home
yuvipanda Feb 3, 2024
e867a7d
Style everything to be nicer
yuvipanda Feb 3, 2024
09f2bc6
Refactor & document tooltip code
yuvipanda Feb 3, 2024
e63436f
Don't navigate to \# when clipboard is clicked
yuvipanda Feb 3, 2024
ee0d216
Remove stray box-shadow
yuvipanda Feb 3, 2024
c30d0a1
Cleanup the menu UI better
yuvipanda Feb 4, 2024
a018435
Split tooltip CSS into its own file
yuvipanda Feb 4, 2024
b1a264d
Fix value for protocol check
yuvipanda Feb 4, 2024
a1d2280
Switch to using a Server Extension
yuvipanda Feb 4, 2024
831fe1f
Switch back to using entrypoints to serve desktop-websocket
yuvipanda Feb 4, 2024
cfb1a14
Move .gitignore around
yuvipanda Feb 4, 2024
e6e4afb
Merge pull request #77 from jupyterhub/no-vendor
manics Feb 5, 2024
6efde33
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Feb 5, 2024
374c02d
Merge pull request #78 from jupyterhub/no-ctrl
manics Feb 5, 2024
457ad49
Merge pull request #82 from jupyterhub/pre-commit-ci-update-config
yuvipanda Feb 5, 2024
0fadd16
Fix typo
yuvipanda Feb 5, 2024
a0f7620
Merge pull request #79 from jupyterhub/server
manics Feb 5, 2024
6113577
rm jupyter_remote_desktop_proxy/share/tigervnc
manics Feb 5, 2024
25da126
Update __init__ and README now that vncserver is not bundled
manics Feb 5, 2024
958fc82
Install fonts-dejavu
yuvipanda Feb 6, 2024
94cf5b6
Separate note about VNC server
yuvipanda Feb 8, 2024
2c210fe
Stop excluding share folder from pre-commit now
consideRatio Feb 8, 2024
babd074
Require python 3.8+, up from 3.6+
consideRatio Feb 8, 2024
3911ba8
Require jupyter-server-proxy 4+
consideRatio Feb 8, 2024
468e3a1
Merge pull request #84 from manics/pr62
consideRatio Feb 8, 2024
5cdf4d8
Merge pull request #86 from jupyterhub/yuvipanda-patch-3
manics Feb 9, 2024
8ce6ff5
Merge pull request #90 from consideRatio/pr/require-py38
manics Feb 9, 2024
a41609e
Dockerfile to install either TigerVNC or TurboVNC
consideRatio Feb 15, 2024
5fcb6bd
Publish both TigerVNC and TurboVNC image to quay.io
consideRatio Feb 15, 2024
8842159
Apply suggestions from code review
consideRatio Feb 16, 2024
f780833
Merge pull request #94 from consideRatio/pr/turbovnc
consideRatio Feb 28, 2024
5322bc9
Fix bug in automation to publish tigervnc and turbovnc images
consideRatio Feb 28, 2024
bf7ddd9
Merge pull request #95 from consideRatio/pr/fix-tag-issue
consideRatio Feb 28, 2024
2896efa
Fix TigerVNC detection for non-apt installations
consideRatio Feb 29, 2024
183dc33
Merge pull request #91 from consideRatio/pr/bump-jsp
yuvipanda Feb 29, 2024
3013139
Bump manics/action-binderbadge from 2.0.0 to 3.0.0
dependabot[bot] Mar 1, 2024
fe221b3
Merge pull request #97 from jupyterhub/dependabot/github_actions/mani…
consideRatio Mar 1, 2024
3df5407
Merge pull request #96 from consideRatio/pr/tigervnc-check
consideRatio Mar 1, 2024
024414e
Fix failure to specify port for TurboVNC
consideRatio Mar 8, 2024
68f1388
Merge pull request #99 from consideRatio/pr/turbovnc-fix
consideRatio Mar 13, 2024
693cb40
Bump dependency requirement a patch version
consideRatio Mar 13, 2024
cbb55cc
Merge pull request #102 from consideRatio/pr/bump
consideRatio Mar 13, 2024
c1a3197
MANIFEST.in: Include templates/ directory
zmcgrew Mar 26, 2024
a7c1ae9
Merge pull request #103 from zmcgrew/include_templates_dir
consideRatio Mar 26, 2024
7426daf
tests: verify basic function of built images
consideRatio Mar 29, 2024
bc7b52e
refactor: adjust variable name for readability
consideRatio Mar 29, 2024
a27fde4
refactor: use long flag names
consideRatio Mar 29, 2024
4219727
refactor: let turbovnc listen to localhost
consideRatio Mar 29, 2024
7797912
refactor: co-locate code for tiger's unix socket initialization
consideRatio Mar 30, 2024
47a79ff
Update inline comment about initial attempt failure
consideRatio Mar 30, 2024
bc39ad7
Merge pull request #101 from consideRatio/pr/fix-tests
consideRatio Mar 30, 2024
203e123
Merge pull request #104 from consideRatio/pr/small-refactor
consideRatio Mar 30, 2024
c12c16c
Fail early on missing websockify executable
consideRatio Mar 30, 2024
3560f09
Merge pull request #107 from consideRatio/pr/check-for-executable
consideRatio Mar 30, 2024
d6fe231
Add changelog for v2.0.0
consideRatio Mar 30, 2024
34f3931
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Apr 1, 2024
8edc4e6
Revert eslint bump to v9 alpha
consideRatio Apr 2, 2024
c6a1e22
Merge pull request #109 from jupyterhub/pre-commit-ci-update-config
consideRatio Apr 2, 2024
63c2200
Remove pre-commit github actions dependabot bumps
consideRatio Apr 2, 2024
817da82
Merge pull request #108 from consideRatio/pr/add-changelog-for-v2.0.0
consideRatio Apr 2, 2024
6627645
Bump to 2.0.0
consideRatio Apr 2, 2024
a666621
Bump to 2.0.1.dev
consideRatio Apr 2, 2024
f508577
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] May 6, 2024
74dc1c4
Revert not-yet-functional eslint bump
consideRatio May 7, 2024
d41bca2
Merge pull request #111 from jupyterhub/pre-commit-ci-update-config
consideRatio May 7, 2024
8c1d4f2
retry a few time if a connection fails
sunu May 31, 2024
975d084
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 31, 2024
bec995c
Merge pull request #112 from sunu/retry-initial-connection
yuvipanda Jun 12, 2024
abe826f
Add changelog for v2.0.1
yuvipanda Jun 13, 2024
617a9f3
Merge pull request #114 from jupyterhub/cl2
yuvipanda Jun 13, 2024
24c33ba
Bump to 2.0.1
yuvipanda Jun 13, 2024
b4e88e9
Bump to 2.0.2.dev
yuvipanda Jun 13, 2024
1612d19
Bump docker/build-push-action from 5 to 6
dependabot[bot] Jul 1, 2024
bcab4d1
Disable @novnc/novnc 1.5.0
manics Jul 5, 2024
40557b2
Remove websockify
manics Jul 4, 2024
c224790
Disable @novnc/novnc 1.5.0
manics Jul 5, 2024
12eb171
Add Playwright tests, remove websockify from image
manics Jul 5, 2024
3952c14
Upload screenshot as artifact
manics Jul 5, 2024
c8c6157
Setup Python and cache browsers
manics Jul 5, 2024
a3981b0
Screenshot comparison: threshold=2
manics Jul 5, 2024
857237c
Update tests/conftest.py
manics Jul 8, 2024
3f8e3a2
Merge pull request #120 from manics/novnc-disable-1.5.0
consideRatio Jul 8, 2024
70393e5
Update Dockerfile
manics Jul 8, 2024
7f16655
Merge pull request #119 from manics/raw_socket_proxy
consideRatio Jul 8, 2024
947092e
Merge pull request #118 from jupyterhub/dependabot/github_actions/doc…
consideRatio Jul 8, 2024
6a12703
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Jul 2, 2024
d702e1a
Hold back eslint
consideRatio Jul 8, 2024
53c67fe
Rename tooltip to clipboard
manics Jul 12, 2024
f337437
Close clipboard if clicked outside
manics Jul 12, 2024
b4ef5ac
stopPropagation shouldn't be needed here since the button is outside …
manics Jul 12, 2024
022d2fc
Merge pull request #121 from manics/refactor-tooltip
consideRatio Jul 12, 2024
db42535
novnc 1.5.0
manics Jul 12, 2024
f3a6b1b
Merge pull request #123 from manics/novnc-1.5.0
yuvipanda Jul 12, 2024
05c6af9
Close clipboard if clicked anywhere outside clipboard
manics Jul 14, 2024
acd6436
Try resizeSession instead of scaleViewport
manics Jul 15, 2024
c9795ea
Update screenshot
manics Jul 15, 2024
f88af7d
Clos clipboard if canvas or other element is clicked
manics Jul 15, 2024
5fa250b
Merge pull request #122 from manics/clipboard-close
yuvipanda Jul 16, 2024
30e67eb
Merge pull request #124 from manics/resizesession
yuvipanda Jul 19, 2024
effc3ba
Edits for SwedNess2024 container in Docker format. Includes
willend Aug 9, 2024
69ff23a
Remove Mantid and FullProf entries in Dockerfile
willend Aug 9, 2024
ee9d252
Include McXtrace
willend Aug 9, 2024
8f8aa78
Remove mantid, add McXtrace
willend Aug 9, 2024
dc10c53
Allows build of the image in config close to "swedness"
willend Aug 11, 2024
4a8a27a
Xclip from upstream
willend Aug 11, 2024
e82cb60
Install netcat-openbsd in tests
manics Sep 14, 2024
f5a1fb0
Screenshot whole body, not just canvas
manics Sep 14, 2024
b137b9c
TurboVNC screenshot is a lot more variable
manics Sep 14, 2024
646cedf
Add screenshot to README
manics Sep 14, 2024
b3a37bb
Pin dockerfile SHA, bump monthly with dependabot
manics Sep 14, 2024
cf07279
Merge pull request #129 from manics/netcat-openbsd
manics Sep 15, 2024
0fd70e6
Merge pull request #130 from manics/dependabot-pin-dockerfile
manics Sep 15, 2024
e55a2e6
Explictly require 3.5.1
willend Sep 17, 2024
0f54b4b
Merge pull request #3 from jupyterhub/main
willend Sep 17, 2024
daa4fea
Use updated conda build
willend Sep 18, 2024
0c9617d
Inject rsync via env deps
willend Sep 18, 2024
1594bad
Remove tigervnc-xorg-extension
manics Sep 24, 2024
d0567f0
Run mcdoc and mxdoc post mamba install
willend Sep 26, 2024
6de9b65
Bump jupyter/base-notebook from `876e3c3` to `116c698`
dependabot[bot] Nov 1, 2024
4f68d13
Merge pull request #133 from jupyterhub/dependabot/docker/jupyter/bas…
manics Nov 1, 2024
50aa1f3
Merge pull request #132 from manics/tigervnc-xorg-extension
consideRatio Nov 5, 2024
961d713
Update for 3.5.12 release(s)
willend Dec 2, 2024
1609c22
Merge branch 'jupyterhub:main' into mcstas-mcxtrace-3.5
willend Dec 2, 2024
4fa0622
Update to 3.5.16
willend Dec 16, 2024
e2cedca
Merge branch 'main' into mcstas-mcxtrace-3.5
willend Dec 16, 2024
3c327c3
Merge branch 'main' into mcstas-mcxtrace-3.5
willend Dec 16, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
module.exports = {
env: {
browser: true,
es2021: true,
},
extends: ["eslint:recommended"],
overrides: [
{
env: {
node: true,
},
files: [".eslintrc.{js,cjs}"],
parserOptions: {
sourceType: "script",
},
},
],
parserOptions: {
ecmaVersion: "latest",
sourceType: "module",
},
plugins: [],
rules: {
"no-unused-vars": ["error", { args: "after-used" }],
},
ignorePatterns: [
"jupyter_remote_desktop_proxy/static/dist/**",
"webpack.config.js",
],
};
7 changes: 7 additions & 0 deletions .github/dependabot.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,10 @@ updates:
interval: monthly
time: "05:00"
timezone: Etc/UTC

# Bump dockerfile FROM
- package-ecosystem: docker
directory: /
labels: [dependencies]
schedule:
interval: monthly
2 changes: 1 addition & 1 deletion .github/workflows/binder-badge.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ jobs:
pull-requests: write

steps:
- uses: manics/action-binderbadge@v2.0.0
- uses: manics/action-binderbadge@v3.0.0
with:
githubToken: ${{ secrets.GITHUB_TOKEN }}
77 changes: 77 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,83 @@ jobs:
python -m build --sdist --wheel .
ls -l dist

- name: test to see if built js file is in the package
run: |
tar -tvf dist/*.tar.gz | grep dist/viewer.js
unzip -l dist/*.whl | grep dist/viewer.js

- name: publish to pypi
uses: pypa/gh-action-pypi-publish@release/v1
if: startsWith(github.ref, 'refs/tags/')

publish-images:
runs-on: ubuntu-22.04

strategy:
fail-fast: false
matrix:
include:
- vncserver: tigervnc
- vncserver: turbovnc

steps:
- uses: actions/checkout@v4

- name: Set up QEMU (for docker buildx)
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx (for multi-arch builds)
uses: docker/setup-buildx-action@v3

- name: Make decisions on pushing and suffix (based on vnc server chosen)
id: decisions
run: |
if [ "${{ startsWith(github.ref, 'refs/tags/') || (github.ref == 'refs/heads/main') }}" = "true" ]; then
echo "push=true" >> $GITHUB_OUTPUT
else
echo "push=false" >> $GITHUB_OUTPUT
fi

# We provide image tags with -tigervnc and -turbovnc suffixes to allow
# for an explicit choice, but also ship with a default choice of
# TigerVNC.
if [ "${{ matrix.vncserver == 'tigervnc' }}" == "true" ]; then
echo 'suffix="",-${{ matrix.vncserver }}' >> $GITHUB_OUTPUT
else
echo "suffix=-${{ matrix.vncserver }}" >> $GITHUB_OUTPUT
fi

# For builds triggered by a git tag 1.2.3, we calculate image tags like:
# [{prefix}:1.2.3, {prefix}:1.2, {prefix}:1, {prefix}:latest]
#
# More details at
# https://github.com/jupyterhub/action-major-minor-tag-calculator.
#
- name: Get image tags
id: tags
uses: jupyterhub/action-major-minor-tag-calculator@v3
with:
githubToken: ${{ secrets.GITHUB_TOKEN }}
prefix: "quay.io/jupyterhub/jupyter-remote-desktop-proxy:"
suffix: ${{ steps.decisions.outputs.suffix }}
branchRegex: ^\w[\w-.]*$
defaultTag: quay.io/jupyterhub/jupyter-remote-desktop-proxy:noref

- name: Login to container registry
# Credentials to Quay.io was setup by...
# 1. Creating a [Robot Account](https://quay.io/organization/jupyterhub?tab=robots)
# 2. Giving it push permissions to the image repository
# 3. Adding Robot Account credentials as workflow environment secrets
if: steps.decisions.outputs.push == 'true'
run: |
docker login -u "${{ secrets.QUAY_USERNAME }}" -p "${{ secrets.QUAY_PASSWORD }}" quay.io

- name: Build and push image
uses: docker/build-push-action@v6
with:
build-args: |
vncserver=${{ matrix.vncserver }}
context: .
platforms: linux/amd64,linux/arm64
push: ${{ steps.decisions.outputs.push }}
tags: ${{ join(fromJson(steps.tags.outputs.tags)) }}
105 changes: 97 additions & 8 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,112 @@ on:
tags: ["**"]
workflow_dispatch:

defaults:
run:
# Both TigerVNC and TurboVNC reports "the input device is not a TTY" if
# started without a TTY. GitHub Actions environments doesn't come with one,
# so this provides one.
#
# ref: https://github.com/actions/runner/issues/241#issuecomment-842566950
#
shell: script --quiet --return --log-out /dev/null --command "bash -e {0}"

jobs:
container:
image-test:
runs-on: ubuntu-22.04
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
include:
- vncserver: tigervnc
- vncserver: turbovnc

steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Cache playwright binaries
uses: actions/cache@v4
with:
path: |
~/.cache/ms-playwright
key: ${{ runner.os }}-playwright

- name: Build image
run: |
docker build -t jupyter-remote-desktop-proxy .
docker build --progress=plain --build-arg vncserver=${{ matrix.vncserver }} -t test .

- name: (inside container) vncserver -help
run: |
# -help flag is not available for TurboVNC, but it emits the -help
# equivalent information anyhow if passed -help, but also errors. Due
# to this, we fallback to use the errorcode of vncsrever -list.
docker run test bash -c "vncserver -help || vncserver -list > /dev/null"

- name: Test vncserver
run: |
container_id=$(docker run -d -it -p 5901:5901 test vncserver -xstartup /opt/install/jupyter_remote_desktop_proxy/share/xstartup -verbose -fg -geometry 1680x1050 -SecurityTypes None -rfbport 5901)
sleep 1

echo "::group::Install netcat, a test dependency"
docker exec --user root $container_id bash -c '
apt update
apt install -y netcat-openbsd
'
echo "::endgroup::"

docker exec -it $container_id timeout --preserve-status 1 nc -v localhost 5901 2>&1 | tee -a /dev/stderr | \
grep --quiet RFB && echo "Passed test" || { echo "Failed test" && TEST_OK=false; }

echo "::group::vncserver logs"
docker exec $container_id bash -c 'cat ~/.vnc/*.log'
echo "::endgroup::"

docker stop $container_id > /dev/null
if [ "$TEST_OK" == "false" ]; then
echo "Test failed!"
exit 1
fi

- name: Install playwright
run: |
python -mpip install -r dev-requirements.txt
python -mplaywright install --with-deps

- name: Smoke test image
- name: Playwright browser test
run: |
docker run -d -p 8888:8888 -e JUPYTER_TOKEN=secret jupyter-remote-desktop-proxy
sleep 10
curl 'http://localhost:8888/desktop/?token=secret' | grep 'Modified from novnc_lite.html example in noVNC'
container_id=$(docker run -d -it -p 8888:8888 -e JUPYTER_TOKEN=secret test)
sleep 3
export CONTAINER_ID=$container_id
export JUPYTER_HOST=http://localhost:8888
export JUPYTER_TOKEN=secret
export VNCSERVER=${{ matrix.vncserver }}

python -mpytest -vs

echo "::group::jupyter_server logs"
docker logs $container_id
echo "::endgroup::"

echo "::group::vncserver logs"
docker exec $container_id bash -c 'cat ~/.vnc/*.log'
echo "::endgroup::"

timeout 5 docker stop $container_id > /dev/null && echo "Passed SIGTERM test" || { echo "Failed SIGTERM test" && TEST_OK=false; }

if [ "$TEST_OK" == "false" ]; then
echo "One or more tests failed!"
exit 1
fi

# TODO: Check VNC desktop works, e.g. by comparing Playwright screenshots
# https://playwright.dev/docs/test-snapshots
- name: Upload screenshot
uses: actions/upload-artifact@v4
if: always()
with:
name: screenshots-${{ matrix.vncserver }}
path: screenshots/*
if-no-files-found: error
139 changes: 139 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
# Extra ignore patterns specific to this project
# Installed JS libraries
node_modules/
# Built JS files
jupyter_remote_desktop_proxy/static/dist

# Standard python gitignore patterns
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
.python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock

# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# Additional ignores
screenshots/
Loading