colabsh 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. colabsh-1.0.0/.github/dependabot.yml +21 -0
  2. colabsh-1.0.0/.github/workflows/autofix.yml +15 -0
  3. colabsh-1.0.0/.github/workflows/ci.yml +105 -0
  4. colabsh-1.0.0/.github/workflows/docs.yml +56 -0
  5. colabsh-1.0.0/.github/workflows/release.yml +95 -0
  6. colabsh-1.0.0/.gitignore +220 -0
  7. colabsh-1.0.0/.pre-commit-config.yaml +39 -0
  8. colabsh-1.0.0/.prettierignore +10 -0
  9. colabsh-1.0.0/.prettierrc.yaml +7 -0
  10. colabsh-1.0.0/CODE_OF_CONDUCT.md +133 -0
  11. colabsh-1.0.0/CONTRIBUTING.md +148 -0
  12. colabsh-1.0.0/LICENSE +202 -0
  13. colabsh-1.0.0/PKG-INFO +31 -0
  14. colabsh-1.0.0/README.md +293 -0
  15. colabsh-1.0.0/assets/colabsh-logo.png +0 -0
  16. colabsh-1.0.0/cliff.toml +52 -0
  17. colabsh-1.0.0/codecov.yml +12 -0
  18. colabsh-1.0.0/docs/architecture.md +107 -0
  19. colabsh-1.0.0/docs/commands.md +172 -0
  20. colabsh-1.0.0/docs/configuration.md +88 -0
  21. colabsh-1.0.0/docs/contributing.md +141 -0
  22. colabsh-1.0.0/docs/headless.md +81 -0
  23. colabsh-1.0.0/docs/index.md +86 -0
  24. colabsh-1.0.0/docs/installation.md +68 -0
  25. colabsh-1.0.0/docs/reference.md +9 -0
  26. colabsh-1.0.0/docs/security.md +58 -0
  27. colabsh-1.0.0/pyproject.toml +139 -0
  28. colabsh-1.0.0/src/colabsh/__about__.py +4 -0
  29. colabsh-1.0.0/src/colabsh/__init__.py +3 -0
  30. colabsh-1.0.0/src/colabsh/commands.py +570 -0
  31. colabsh-1.0.0/src/colabsh/constants.py +71 -0
  32. colabsh-1.0.0/src/colabsh/core/__init__.py +0 -0
  33. colabsh-1.0.0/src/colabsh/core/cells.py +97 -0
  34. colabsh-1.0.0/src/colabsh/core/config.py +73 -0
  35. colabsh-1.0.0/src/colabsh/core/history.py +118 -0
  36. colabsh-1.0.0/src/colabsh/core/output.py +91 -0
  37. colabsh-1.0.0/src/colabsh/core/proxy.py +210 -0
  38. colabsh-1.0.0/src/colabsh/core/qr.py +39 -0
  39. colabsh-1.0.0/src/colabsh/core/repl.py +113 -0
  40. colabsh-1.0.0/src/colabsh/core/server.py +367 -0
  41. colabsh-1.0.0/src/colabsh/history.py +95 -0
  42. colabsh-1.0.0/src/colabsh/main.py +48 -0
  43. colabsh-1.0.0/src/colabsh/py.typed +0 -0
  44. colabsh-1.0.0/tests/__init__.py +3 -0
  45. colabsh-1.0.0/tests/conftest.py +28 -0
  46. colabsh-1.0.0/tests/test_cells.py +152 -0
  47. colabsh-1.0.0/tests/test_config.py +96 -0
  48. colabsh-1.0.0/tests/test_history_cli.py +116 -0
  49. colabsh-1.0.0/tests/test_history_core.py +132 -0
  50. colabsh-1.0.0/tests/test_main.py +46 -0
  51. colabsh-1.0.0/tests/test_output.py +107 -0
  52. colabsh-1.0.0/tests/test_qr.py +58 -0
  53. colabsh-1.0.0/uv.lock +1503 -0
  54. colabsh-1.0.0/zensical.toml +150 -0
@@ -0,0 +1,21 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "github-actions"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
7
+ commit-message:
8
+ prefix: "ci(deps)"
9
+ labels:
10
+ - "dependencies"
11
+ - "github-actions"
12
+
13
+ - package-ecosystem: "pip"
14
+ directory: "/"
15
+ schedule:
16
+ interval: "weekly"
17
+ commit-message:
18
+ prefix: "chore(deps)"
19
+ labels:
20
+ - "dependencies"
21
+ - "python"
@@ -0,0 +1,15 @@
1
+ name: autofix.ci
2
+ on:
3
+ pull_request:
4
+ push:
5
+ permissions: {}
6
+ jobs:
7
+ prettier:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: actions/checkout@v6
11
+ - uses: oven-sh/setup-bun@v2
12
+ - run: bunx prettier . --write
13
+ - uses: autofix-ci/action@v1.3.3
14
+ with:
15
+ commit-message: "style: 🎨 apply Prettier formatting"
@@ -0,0 +1,105 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ concurrency:
10
+ group: ${{ github.workflow }}-${{ github.ref }}
11
+ cancel-in-progress: true
12
+
13
+ jobs:
14
+ lint:
15
+ name: Lint
16
+ runs-on: ubuntu-latest
17
+ steps:
18
+ - uses: actions/checkout@v6
19
+
20
+ - name: Install uv
21
+ uses: astral-sh/setup-uv@v7
22
+
23
+ - name: Set up Python
24
+ uses: actions/setup-python@v6
25
+ with:
26
+ python-version: "3.13"
27
+
28
+ - name: Install dependencies
29
+ run: uv sync --group dev
30
+
31
+ - name: Ruff check
32
+ run: uv run ruff check .
33
+
34
+ - name: Ruff format check
35
+ run: uv run ruff format --check .
36
+
37
+ - name: Mypy
38
+ run: uv run mypy src/
39
+
40
+ test:
41
+ name: Test (Python ${{ matrix.python-version }})
42
+ runs-on: ubuntu-latest
43
+ strategy:
44
+ fail-fast: false
45
+ matrix:
46
+ python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
47
+ steps:
48
+ - uses: actions/checkout@v6
49
+
50
+ - name: Install uv
51
+ uses: astral-sh/setup-uv@v7
52
+
53
+ - name: Set up Python ${{ matrix.python-version }}
54
+ uses: actions/setup-python@v6
55
+ with:
56
+ python-version: ${{ matrix.python-version }}
57
+ allow-prereleases: true
58
+
59
+ - name: Install dependencies
60
+ run: uv sync --group dev
61
+
62
+ - name: Run tests
63
+ run:
64
+ uv run pytest --cov-report=xml --junitxml=junit.xml -o
65
+ junit_family=legacy
66
+
67
+ - name: Upload coverage
68
+ if: matrix.python-version == '3.13'
69
+ uses: codecov/codecov-action@v5
70
+ with:
71
+ token: ${{ secrets.CODECOV_TOKEN }}
72
+ files: coverage.xml
73
+ flags: python${{ matrix.python-version }}
74
+ fail_ci_if_error: false
75
+ verbose: true
76
+
77
+ - name: Upload test results to Codecov
78
+ if: ${{ !cancelled() && matrix.python-version == '3.13' }}
79
+ uses: codecov/test-results-action@v1
80
+ with:
81
+ token: ${{ secrets.CODECOV_TOKEN }}
82
+ files: junit.xml
83
+
84
+ docs:
85
+ name: Docs
86
+ runs-on: ubuntu-latest
87
+ steps:
88
+ - uses: actions/checkout@v6
89
+
90
+ - name: Install uv
91
+ uses: astral-sh/setup-uv@v7
92
+
93
+ - name: Set up Python
94
+ uses: actions/setup-python@v6
95
+ with:
96
+ python-version: "3.13"
97
+
98
+ - name: Install zensical and mkdocstrings
99
+ run: uv tool install zensical --with mkdocstrings-python
100
+
101
+ - name: Install project (for mkdocstrings)
102
+ run: uv sync
103
+
104
+ - name: Build docs (strict)
105
+ run: zensical build --strict
@@ -0,0 +1,56 @@
1
+ name: Docs
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ contents: read
10
+ pages: write
11
+ id-token: write
12
+
13
+ concurrency:
14
+ group: pages
15
+ cancel-in-progress: false
16
+
17
+ jobs:
18
+ build:
19
+ name: Build docs
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - uses: actions/checkout@v6
23
+
24
+ - name: Install uv
25
+ uses: astral-sh/setup-uv@v7
26
+
27
+ - name: Set up Python
28
+ uses: actions/setup-python@v6
29
+ with:
30
+ python-version: "3.13"
31
+
32
+ - name: Install zensical and mkdocstrings
33
+ run: uv tool install zensical --with mkdocstrings-python
34
+
35
+ - name: Install project (for mkdocstrings)
36
+ run: uv sync
37
+
38
+ - name: Build docs
39
+ run: zensical build --strict
40
+
41
+ - name: Upload pages artifact
42
+ uses: actions/upload-pages-artifact@v3
43
+ with:
44
+ path: site
45
+
46
+ deploy:
47
+ name: Deploy to GitHub Pages
48
+ needs: build
49
+ runs-on: ubuntu-latest
50
+ environment:
51
+ name: github-pages
52
+ url: ${{ steps.deployment.outputs.page_url }}
53
+ steps:
54
+ - name: Deploy to GitHub Pages
55
+ id: deployment
56
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,95 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ permissions:
9
+ contents: write
10
+ id-token: write
11
+
12
+ jobs:
13
+ build:
14
+ name: Build distribution
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v6
18
+ with:
19
+ fetch-depth: 0
20
+
21
+ - name: Install uv
22
+ uses: astral-sh/setup-uv@v7
23
+
24
+ - name: Set up Python
25
+ uses: actions/setup-python@v6
26
+ with:
27
+ python-version: "3.13"
28
+
29
+ - name: Install dependencies
30
+ run: uv sync --group dev
31
+
32
+ - name: Build package
33
+ run: uv run hatch build
34
+
35
+ - name: Upload dist artifacts
36
+ uses: actions/upload-artifact@v7
37
+ with:
38
+ name: dist
39
+ path: dist/
40
+
41
+ changelog:
42
+ name: Generate changelog
43
+ runs-on: ubuntu-latest
44
+ outputs:
45
+ changelog: ${{ steps.changelog.outputs.content }}
46
+ steps:
47
+ - uses: actions/checkout@v6
48
+ with:
49
+ fetch-depth: 0
50
+
51
+ - name: Generate changelog
52
+ id: changelog
53
+ uses: orhun/git-cliff-action@v4
54
+ with:
55
+ config: cliff.toml
56
+ args: --latest --strip header
57
+
58
+ publish-pypi:
59
+ name: Publish to PyPI
60
+ needs: [build]
61
+ runs-on: ubuntu-latest
62
+ environment:
63
+ name: pypi
64
+ url: https://pypi.org/p/colabsh
65
+ permissions:
66
+ id-token: write
67
+ steps:
68
+ - name: Download dist artifacts
69
+ uses: actions/download-artifact@v8
70
+ with:
71
+ name: dist
72
+ path: dist/
73
+
74
+ - name: Publish to PyPI
75
+ uses: pypa/gh-action-pypi-publish@release/v1
76
+
77
+ github-release:
78
+ name: GitHub Release
79
+ needs: [build, changelog]
80
+ runs-on: ubuntu-latest
81
+ permissions:
82
+ contents: write
83
+ steps:
84
+ - name: Download dist artifacts
85
+ uses: actions/download-artifact@v8
86
+ with:
87
+ name: dist
88
+ path: dist/
89
+
90
+ - name: Create GitHub Release
91
+ uses: softprops/action-gh-release@v2
92
+ with:
93
+ body: ${{ needs.changelog.outputs.changelog }}
94
+ files: dist/*
95
+ generate_release_notes: false
@@ -0,0 +1,220 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[codz]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ junit.xml
49
+ *.cover
50
+ *.py.cover
51
+ .hypothesis/
52
+ .pytest_cache/
53
+ cover/
54
+
55
+ # Translations
56
+ *.mo
57
+ *.pot
58
+
59
+ # Django stuff:
60
+ *.log
61
+ local_settings.py
62
+ db.sqlite3
63
+ db.sqlite3-journal
64
+
65
+ # Flask stuff:
66
+ instance/
67
+ .webassets-cache
68
+
69
+ # Scrapy stuff:
70
+ .scrapy
71
+
72
+ # Sphinx documentation
73
+ docs/_build/
74
+
75
+ # PyBuilder
76
+ .pybuilder/
77
+ target/
78
+
79
+ # Jupyter Notebook
80
+ .ipynb_checkpoints
81
+
82
+ # IPython
83
+ profile_default/
84
+ ipython_config.py
85
+
86
+ # pyenv
87
+ # For a library or package, you might want to ignore these files since the code is
88
+ # intended to run in multiple environments; otherwise, check them in:
89
+ # .python-version
90
+
91
+ # pipenv
92
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
93
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
94
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
95
+ # install all needed dependencies.
96
+ # Pipfile.lock
97
+
98
+ # UV
99
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
100
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
101
+ # commonly ignored for libraries.
102
+ # uv.lock
103
+
104
+ # poetry
105
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
106
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
107
+ # commonly ignored for libraries.
108
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
109
+ # poetry.lock
110
+ # poetry.toml
111
+
112
+ # pdm
113
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
114
+ # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
115
+ # https://pdm-project.org/en/latest/usage/project/#working-with-version-control
116
+ # pdm.lock
117
+ # pdm.toml
118
+ .pdm-python
119
+ .pdm-build/
120
+
121
+ # pixi
122
+ # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
123
+ # pixi.lock
124
+ # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
125
+ # in the .venv directory. It is recommended not to include this directory in version control.
126
+ .pixi
127
+
128
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
129
+ __pypackages__/
130
+
131
+ # Celery stuff
132
+ celerybeat-schedule
133
+ celerybeat.pid
134
+
135
+ # Redis
136
+ *.rdb
137
+ *.aof
138
+ *.pid
139
+
140
+ # RabbitMQ
141
+ mnesia/
142
+ rabbitmq/
143
+ rabbitmq-data/
144
+
145
+ # ActiveMQ
146
+ activemq-data/
147
+
148
+ # SageMath parsed files
149
+ *.sage.py
150
+
151
+ # Environments
152
+ .env
153
+ .envrc
154
+ .venv
155
+ env/
156
+ venv/
157
+ ENV/
158
+ env.bak/
159
+ venv.bak/
160
+
161
+ # Spyder project settings
162
+ .spyderproject
163
+ .spyproject
164
+
165
+ # Rope project settings
166
+ .ropeproject
167
+
168
+ # mkdocs documentation
169
+ /site
170
+
171
+ # mypy
172
+ .mypy_cache/
173
+ .dmypy.json
174
+ dmypy.json
175
+
176
+ # Pyre type checker
177
+ .pyre/
178
+
179
+ # pytype static type analyzer
180
+ .pytype/
181
+
182
+ # Cython debug symbols
183
+ cython_debug/
184
+
185
+ # PyCharm
186
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
187
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
188
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
189
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
190
+ # .idea/
191
+
192
+ # Abstra
193
+ # Abstra is an AI-powered process automation framework.
194
+ # Ignore directories containing user credentials, local state, and settings.
195
+ # Learn more at https://abstra.io/docs
196
+ .abstra/
197
+
198
+ # Visual Studio Code
199
+ # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
200
+ # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
201
+ # and can be added to the global gitignore or merged into this file. However, if you prefer,
202
+ # you could uncomment the following to ignore the entire vscode folder
203
+ # .vscode/
204
+
205
+ # Zensical / docs build output
206
+ site/
207
+
208
+ # Ruff stuff:
209
+ .ruff_cache/
210
+
211
+ # PyPI configuration file
212
+ .pypirc
213
+
214
+ # Marimo
215
+ marimo/_static/
216
+ marimo/_lsp/
217
+ __marimo__/
218
+
219
+ # Streamlit
220
+ .streamlit/secrets.toml
@@ -0,0 +1,39 @@
1
+ ci:
2
+ autofix_prs: true
3
+ autoupdate_schedule: weekly
4
+ autofix_commit_msg: "fix(pre_commit): 🎨 auto format pre-commit hooks"
5
+ autoupdate_commit_msg: "chore(pre_commit): ⬆ pre_commit autoupdate"
6
+
7
+ repos:
8
+ - repo: https://github.com/pre-commit/pre-commit-hooks
9
+ rev: v6.0.0
10
+ hooks:
11
+ - id: trailing-whitespace
12
+ - id: check-executables-have-shebangs
13
+ - id: check-toml
14
+ - id: check-case-conflict
15
+ - id: check-added-large-files
16
+ - id: detect-private-key
17
+ - id: pretty-format-json
18
+ - id: end-of-file-fixer
19
+ - id: mixed-line-ending
20
+
21
+ - repo: https://github.com/astral-sh/ruff-pre-commit
22
+ rev: v0.15.7
23
+ hooks:
24
+ - id: ruff
25
+ args: [--fix]
26
+ - id: ruff-format
27
+ types_or: [python, pyi, jupyter]
28
+
29
+ - repo: https://github.com/pre-commit/mirrors-mypy
30
+ rev: v1.19.1
31
+ hooks:
32
+ - id: mypy
33
+ additional_dependencies:
34
+ - types-requests>=2.32.0
35
+ - click>=8.1.0
36
+ - pydantic>=2.12.3
37
+ - websockets>=15.0.1
38
+ - pytest
39
+ args: [--config-file=pyproject.toml]
@@ -0,0 +1,10 @@
1
+ *.py
2
+ *.toml
3
+ *.lock
4
+ *.typed
5
+ __pycache__/
6
+ dist/
7
+ .venv/
8
+ .mypy_cache/
9
+ .pytest_cache/
10
+ .ruff_cache/
@@ -0,0 +1,7 @@
1
+ proseWrap: always
2
+ tabWidth: 2
3
+ overrides:
4
+ - files: "*.md"
5
+ options:
6
+ parser: markdown
7
+ proseWrap: always
@@ -0,0 +1,133 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our
6
+ community a harassment-free experience for everyone, regardless of age, body
7
+ size, visible or invisible disability, ethnicity, sex characteristics, gender
8
+ identity and expression, level of experience, education, socioeconomic status,
9
+ nationality, personal appearance, race, caste, color, religion, or sexual
10
+ identity and orientation.
11
+
12
+ We pledge to act and interact in ways that contribute to an open, welcoming,
13
+ diverse, inclusive, and healthy community.
14
+
15
+ ## Our Standards
16
+
17
+ Examples of behavior that contributes to a positive environment for our
18
+ community include:
19
+
20
+ - Demonstrating empathy and kindness toward other people
21
+ - Being respectful of differing opinions, viewpoints, and experiences
22
+ - Giving and gracefully accepting constructive feedback
23
+ - Accepting responsibility and apologizing to those affected by our mistakes,
24
+ and learning from the experience
25
+ - Focusing on what is best not just for us as individuals, but for the overall
26
+ community
27
+
28
+ Examples of unacceptable behavior include:
29
+
30
+ - The use of sexualized language or imagery, and sexual attention or advances of
31
+ any kind
32
+ - Trolling, insulting or derogatory comments, and personal or political attacks
33
+ - Public or private harassment
34
+ - Publishing others' private information, such as a physical or email address,
35
+ without their explicit permission
36
+ - Other conduct which could reasonably be considered inappropriate in a
37
+ professional setting
38
+
39
+ ## Enforcement Responsibilities
40
+
41
+ Community leaders are responsible for clarifying and enforcing our standards of
42
+ acceptable behavior and will take appropriate and fair corrective action in
43
+ response to any behavior that they deem inappropriate, threatening, offensive,
44
+ or harmful.
45
+
46
+ Community leaders have the right and responsibility to remove, edit, or reject
47
+ comments, commits, code, wiki edits, issues, and other contributions that are
48
+ not aligned to this Code of Conduct, and will communicate reasons for moderation
49
+ decisions when appropriate.
50
+
51
+ ## Scope
52
+
53
+ This Code of Conduct applies within all community spaces, and also applies when
54
+ an individual is officially representing the community in public spaces.
55
+ Examples of representing our community include using an official e-mail address,
56
+ posting via an official social media account, or acting as an appointed
57
+ representative at an online or offline event.
58
+
59
+ ## Enforcement
60
+
61
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
62
+ reported to the community leaders responsible for enforcement at
63
+ thunderbirdtr@gmail.com.
64
+
65
+ All complaints will be reviewed and investigated promptly and fairly.
66
+
67
+ All community leaders are obligated to respect the privacy and security of the
68
+ reporter of any incident.
69
+
70
+ ## Enforcement Guidelines
71
+
72
+ Community leaders will follow these Community Impact Guidelines in determining
73
+ the consequences for any action they deem in violation of this Code of Conduct:
74
+
75
+ ### 1. Correction
76
+
77
+ **Community Impact**: Use of inappropriate language or other behavior deemed
78
+ unprofessional or unwelcome in the community.
79
+
80
+ **Consequence**: A private, written warning from community leaders, providing
81
+ clarity around the nature of the violation and an explanation of why the
82
+ behavior was inappropriate. A public apology may be requested.
83
+
84
+ ### 2. Warning
85
+
86
+ **Community Impact**: A violation through a single incident or series of
87
+ actions.
88
+
89
+ **Consequence**: A warning with consequences for continued behavior. No
90
+ interaction with the people involved, including unsolicited interaction with
91
+ those enforcing the Code of Conduct, for a specified period of time. This
92
+ includes avoiding interactions in community spaces as well as external channels
93
+ like social media. Violating these terms may lead to a temporary or permanent
94
+ ban.
95
+
96
+ ### 3. Temporary Ban
97
+
98
+ **Community Impact**: A serious violation of community standards, including
99
+ sustained inappropriate behavior.
100
+
101
+ **Consequence**: A temporary ban from any sort of interaction or public
102
+ communication with the community for a specified period of time. No public or
103
+ private interaction with the people involved, including unsolicited interaction
104
+ with those enforcing the Code of Conduct, is allowed during this period.
105
+ Violating these terms may lead to a permanent ban.
106
+
107
+ ### 4. Permanent Ban
108
+
109
+ **Community Impact**: Demonstrating a pattern of violation of community
110
+ standards, including sustained inappropriate behavior, harassment of an
111
+ individual, or aggression toward or disparagement of classes of individuals.
112
+
113
+ **Consequence**: A permanent ban from any sort of public interaction within the
114
+ community.
115
+
116
+ ## Attribution
117
+
118
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
119
+ version 2.1, available at
120
+ [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
121
+
122
+ Community Impact Guidelines were inspired by [Mozilla's code of conduct
123
+ enforcement ladder][mozilla coc].
124
+
125
+ For answers to common questions about this code of conduct, see the FAQ at
126
+ [https://www.contributor-covenant.org/faq][faq]. Translations are available at
127
+ [https://www.contributor-covenant.org/translations][translations].
128
+
129
+ [faq]: https://www.contributor-covenant.org/faq
130
+ [homepage]: https://www.contributor-covenant.org
131
+ [mozilla coc]: https://github.com/mozilla/diversity
132
+ [translations]: https://www.contributor-covenant.org/translations
133
+ [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html