Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
44 changes: 43 additions & 1 deletion docs/practices/precommit.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,9 +10,51 @@ Using pre-commit enables a quick check of your code before it's committed and ch
by GitHub workflows. This cuts down on code feedback time, and allows for faster
development. Additional documentation can be found `here <https://pre-commit.com/index.html>`_.

To configure pre-commit for your project, run the following command register
To configure pre-commit for your project, run the following command to register
pre-commit hooks with ``.git/hooks/pre-commit``.

.. code-block:: bash

pre-commit install

List of ``pre-commit`` hooks
-----------------------------

The following is a list of pre-commit hooks that will be run each time you
commit code locally. The configuration file that defines these hooks is called
``.pre-commit-config.yaml``, you should feel free to update or remove any
of these that are not useful for your project.

.. list-table:: Pre-commit hooks
:widths: auto
:header-rows: 1

* - **Hook name**
- **Purpose**
* - Check template version
- Compare the current local template version against latest remote version and alert user if an update is recommended.
* - Clear output from Jupyter notebooks
- Clear output from Jupyter notebooks to avoid committing large binary files.
* - Run unit tests
- Run all unit tests that are discovered by pytest.
* - Prevent main branch commits
- Prevents accidental commits directly to the ``main`` (or ``master``) branches.
* - Check for large files
- Prevents committing very large files. The default file size threshold is 500kb and is configurable.
* - Validate pyproject.toml
- Verify pyproject.toml adheres to the required schema to avoid changes that would break the build.
* - isort (python files in src/ and tests/)
- Runs isort to sort and organize your python package imports. *(Optionally installed when project is created.)*
* - pylint (python files in src/)
- Runs pylint to enforce a particular code style on python files in the src/ directory. *(Optionally installed when project is created.)*
* - pylint (python files in tests/)
- Same as above, but for the tests/ directory. *(Optionally installed when project is created.)*
* - black
- Runs black to enforce a particular code style on python files in the src/ and tests/ directories. *(Optionally installed when project is created.)*
* - mypy
- Runs static type checking on python files in the src/ and tests/ directories. *(Optionally installed when project is created.)*
* - Build documentation with Sphinx
- Ensures that automatically generated documentation and, optionally, jupyter notebooks can be built successfully.


Many other pre-commit hooks exist, a partial list can be found `here <https://pre-commit.com/hooks.html>`_.
9 changes: 8 additions & 1 deletion docs/source/existing_project.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -193,8 +193,15 @@ Use pre-commit
..............

Install and use ``pre-commit``. It may seem annoying at first, but it will save
you many cycles of "see a test fail on GitHub, make and push a change, hope the test passes".
you many cycles of "see a test fail on GitHub, make and push a change, hope the
test passes". Installation is easy!

.. code:: bash

>> pre-commit install

For more information about ``pre-commit`` including a list of the checks that
will be run before each commit, check out :doc:`pre-commit <../practices/precommit>`.

Import sorting
..............
Expand Down
19 changes: 15 additions & 4 deletions docs/source/new_project.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -90,10 +90,6 @@ At this point, your new project is hydrated and ready for you to start coding. B
Commit your new project locally
-------------------------------------------------------------------------------

If you're interested in using pre-commit hooks to crosscheck your code before you commit it,
now is a good time to set that up (it's just one command) - check out
:doc:`pre-commit <../practices/precommit>`

Commit the project to your local version control like so to see the pre-commit checks run.

.. code-block:: bash
Expand All@@ -114,3 +110,18 @@ Create a new repository in GitHub: (`GitHub How-to <https://docs.github.com/en/g
>> git push origin <local_branch_name>

Notice that when you create a PR in GitHub, a set of tests for Continuous Integration starts up to verify that the project can build successfully and that all the unit tests pass. Neato!

Install pre-commit
----------------------------

Now that your project has been pushed to a GitHub remote repository, it's a good
time to install ``pre-commit`` so that future commits will run a suite of checks
before pushing code to the remote repository.
Run the following command in your terminal.

.. code:: bash

>> pre-commit install

For more information about ``pre-commit`` including a list of the checks that
will be run before each commit, please see :doc:`pre-commit <../practices/precommit>`.
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
44 changes: 43 additions & 1 deletion docs/practices/precommit.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,9 +10,51 @@ Using pre-commit enables a quick check of your code before it's committed and ch
by GitHub workflows. This cuts down on code feedback time, and allows for faster
development. Additional documentation can be found `here <https://pre-commit.com/index.html>`_.

To configure pre-commit for your project, run the following command register
To configure pre-commit for your project, run the following command to register
pre-commit hooks with ``.git/hooks/pre-commit``.

.. code-block:: bash

pre-commit install

List of ``pre-commit`` hooks
-----------------------------

The following is a list of pre-commit hooks that will be run each time you
commit code locally. The configuration file that defines these hooks is called
``.pre-commit-config.yaml``, you should feel free to update or remove any
of these that are not useful for your project.

.. list-table:: Pre-commit hooks
:widths: auto
:header-rows: 1

* - **Hook name**
- **Purpose**
* - Check template version
- Compare the current local template version against latest remote version and alert user if an update is recommended.
* - Clear output from Jupyter notebooks
- Clear output from Jupyter notebooks to avoid committing large binary files.
* - Run unit tests
- Run all unit tests that are discovered by pytest.
* - Prevent main branch commits
- Prevents accidental commits directly to the ``main`` (or ``master``) branches.
* - Check for large files
- Prevents committing very large files. The default file size threshold is 500kb and is configurable.
* - Validate pyproject.toml
- Verify pyproject.toml adheres to the required schema to avoid changes that would break the build.
* - isort (python files in src/ and tests/)
- Runs isort to sort and organize your python package imports. *(Optionally installed when project is created.)*
* - pylint (python files in src/)
- Runs pylint to enforce a particular code style on python files in the src/ directory. *(Optionally installed when project is created.)*
* - pylint (python files in tests/)
- Same as above, but for the tests/ directory. *(Optionally installed when project is created.)*
* - black
- Runs black to enforce a particular code style on python files in the src/ and tests/ directories. *(Optionally installed when project is created.)*
* - mypy
- Runs static type checking on python files in the src/ and tests/ directories. *(Optionally installed when project is created.)*
* - Build documentation with Sphinx
- Ensures that automatically generated documentation and, optionally, jupyter notebooks can be built successfully.


Many other pre-commit hooks exist, a partial list can be found `here <https://pre-commit.com/hooks.html>`_.
9 changes: 8 additions & 1 deletion docs/source/existing_project.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -193,8 +193,15 @@ Use pre-commit
..............

Install and use ``pre-commit``. It may seem annoying at first, but it will save
you many cycles of "see a test fail on GitHub, make and push a change, hope the test passes".
you many cycles of "see a test fail on GitHub, make and push a change, hope the
test passes". Installation is easy!

.. code:: bash

>> pre-commit install

For more information about ``pre-commit`` including a list of the checks that
will be run before each commit, check out :doc:`pre-commit <../practices/precommit>`.

Import sorting
..............
Expand Down
19 changes: 15 additions & 4 deletions docs/source/new_project.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -90,10 +90,6 @@ At this point, your new project is hydrated and ready for you to start coding. B
Commit your new project locally
-------------------------------------------------------------------------------

If you're interested in using pre-commit hooks to crosscheck your code before you commit it,
now is a good time to set that up (it's just one command) - check out
:doc:`pre-commit <../practices/precommit>`

Commit the project to your local version control like so to see the pre-commit checks run.

.. code-block:: bash
Expand All@@ -114,3 +110,18 @@ Create a new repository in GitHub: (`GitHub How-to <https://docs.github.com/en/g
>> git push origin <local_branch_name>

Notice that when you create a PR in GitHub, a set of tests for Continuous Integration starts up to verify that the project can build successfully and that all the unit tests pass. Neato!

Install pre-commit
----------------------------

Now that your project has been pushed to a GitHub remote repository, it's a good
time to install ``pre-commit`` so that future commits will run a suite of checks
before pushing code to the remote repository.
Run the following command in your terminal.

.. code:: bash

>> pre-commit install

For more information about ``pre-commit`` including a list of the checks that
will be run before each commit, please see :doc:`pre-commit <../practices/precommit>`.
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
44 changes: 43 additions & 1 deletion docs/practices/precommit.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,9 +10,51 @@ Using pre-commit enables a quick check of your code before it's committed and ch
by GitHub workflows. This cuts down on code feedback time, and allows for faster
development. Additional documentation can be found `here <https://pre-commit.com/index.html>`_.

To configure pre-commit for your project, run the following command register
To configure pre-commit for your project, run the following command to register
pre-commit hooks with ``.git/hooks/pre-commit``.

.. code-block:: bash

pre-commit install

List of ``pre-commit`` hooks
-----------------------------

The following is a list of pre-commit hooks that will be run each time you
commit code locally. The configuration file that defines these hooks is called
``.pre-commit-config.yaml``, you should feel free to update or remove any
of these that are not useful for your project.

.. list-table:: Pre-commit hooks
:widths: auto
:header-rows: 1

* - **Hook name**
- **Purpose**
* - Check template version
- Compare the current local template version against latest remote version and alert user if an update is recommended.
* - Clear output from Jupyter notebooks
- Clear output from Jupyter notebooks to avoid committing large binary files.
* - Run unit tests
- Run all unit tests that are discovered by pytest.
* - Prevent main branch commits
- Prevents accidental commits directly to the ``main`` (or ``master``) branches.
* - Check for large files
- Prevents committing very large files. The default file size threshold is 500kb and is configurable.
* - Validate pyproject.toml
- Verify pyproject.toml adheres to the required schema to avoid changes that would break the build.
* - isort (python files in src/ and tests/)
- Runs isort to sort and organize your python package imports. *(Optionally installed when project is created.)*
* - pylint (python files in src/)
- Runs pylint to enforce a particular code style on python files in the src/ directory. *(Optionally installed when project is created.)*
* - pylint (python files in tests/)
- Same as above, but for the tests/ directory. *(Optionally installed when project is created.)*
* - black
- Runs black to enforce a particular code style on python files in the src/ and tests/ directories. *(Optionally installed when project is created.)*
* - mypy
- Runs static type checking on python files in the src/ and tests/ directories. *(Optionally installed when project is created.)*
* - Build documentation with Sphinx
- Ensures that automatically generated documentation and, optionally, jupyter notebooks can be built successfully.


Many other pre-commit hooks exist, a partial list can be found `here <https://pre-commit.com/hooks.html>`_.
9 changes: 8 additions & 1 deletion docs/source/existing_project.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -193,8 +193,15 @@ Use pre-commit
..............

Install and use ``pre-commit``. It may seem annoying at first, but it will save
you many cycles of "see a test fail on GitHub, make and push a change, hope the test passes".
you many cycles of "see a test fail on GitHub, make and push a change, hope the
test passes". Installation is easy!

.. code:: bash

>> pre-commit install

For more information about ``pre-commit`` including a list of the checks that
will be run before each commit, check out :doc:`pre-commit <../practices/precommit>`.

Import sorting
..............
Expand Down
19 changes: 15 additions & 4 deletions docs/source/new_project.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -90,10 +90,6 @@ At this point, your new project is hydrated and ready for you to start coding. B
Commit your new project locally
-------------------------------------------------------------------------------

If you're interested in using pre-commit hooks to crosscheck your code before you commit it,
now is a good time to set that up (it's just one command) - check out
:doc:`pre-commit <../practices/precommit>`

Commit the project to your local version control like so to see the pre-commit checks run.

.. code-block:: bash
Expand All@@ -114,3 +110,18 @@ Create a new repository in GitHub: (`GitHub How-to <https://docs.github.com/en/g
>> git push origin <local_branch_name>

Notice that when you create a PR in GitHub, a set of tests for Continuous Integration starts up to verify that the project can build successfully and that all the unit tests pass. Neato!

Install pre-commit
----------------------------

Now that your project has been pushed to a GitHub remote repository, it's a good
time to install ``pre-commit`` so that future commits will run a suite of checks
before pushing code to the remote repository.
Run the following command in your terminal.

.. code:: bash

>> pre-commit install

For more information about ``pre-commit`` including a list of the checks that
will be run before each commit, please see :doc:`pre-commit <../practices/precommit>`.
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
44 changes: 43 additions & 1 deletion docs/practices/precommit.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,9 +10,51 @@ Using pre-commit enables a quick check of your code before it's committed and ch
by GitHub workflows. This cuts down on code feedback time, and allows for faster
development. Additional documentation can be found `here <https://pre-commit.com/index.html>`_.

To configure pre-commit for your project, run the following command register
To configure pre-commit for your project, run the following command to register
pre-commit hooks with ``.git/hooks/pre-commit``.

.. code-block:: bash

pre-commit install

List of ``pre-commit`` hooks
-----------------------------

The following is a list of pre-commit hooks that will be run each time you
commit code locally. The configuration file that defines these hooks is called
``.pre-commit-config.yaml``, you should feel free to update or remove any
of these that are not useful for your project.

.. list-table:: Pre-commit hooks
:widths: auto
:header-rows: 1

* - **Hook name**
- **Purpose**
* - Check template version
- Compare the current local template version against latest remote version and alert user if an update is recommended.
* - Clear output from Jupyter notebooks
- Clear output from Jupyter notebooks to avoid committing large binary files.
* - Run unit tests
- Run all unit tests that are discovered by pytest.
* - Prevent main branch commits
- Prevents accidental commits directly to the ``main`` (or ``master``) branches.
* - Check for large files
- Prevents committing very large files. The default file size threshold is 500kb and is configurable.
* - Validate pyproject.toml
- Verify pyproject.toml adheres to the required schema to avoid changes that would break the build.
* - isort (python files in src/ and tests/)
- Runs isort to sort and organize your python package imports. *(Optionally installed when project is created.)*
* - pylint (python files in src/)
- Runs pylint to enforce a particular code style on python files in the src/ directory. *(Optionally installed when project is created.)*
* - pylint (python files in tests/)
- Same as above, but for the tests/ directory. *(Optionally installed when project is created.)*
* - black
- Runs black to enforce a particular code style on python files in the src/ and tests/ directories. *(Optionally installed when project is created.)*
* - mypy
- Runs static type checking on python files in the src/ and tests/ directories. *(Optionally installed when project is created.)*
* - Build documentation with Sphinx
- Ensures that automatically generated documentation and, optionally, jupyter notebooks can be built successfully.


Many other pre-commit hooks exist, a partial list can be found `here <https://pre-commit.com/hooks.html>`_.
9 changes: 8 additions & 1 deletion docs/source/existing_project.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -193,8 +193,15 @@ Use pre-commit
..............

Install and use ``pre-commit``. It may seem annoying at first, but it will save
you many cycles of "see a test fail on GitHub, make and push a change, hope the test passes".
you many cycles of "see a test fail on GitHub, make and push a change, hope the
test passes". Installation is easy!

.. code:: bash

>> pre-commit install

For more information about ``pre-commit`` including a list of the checks that
will be run before each commit, check out :doc:`pre-commit <../practices/precommit>`.

Import sorting
..............
Expand Down
19 changes: 15 additions & 4 deletions docs/source/new_project.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -90,10 +90,6 @@ At this point, your new project is hydrated and ready for you to start coding. B
Commit your new project locally
-------------------------------------------------------------------------------

If you're interested in using pre-commit hooks to crosscheck your code before you commit it,
now is a good time to set that up (it's just one command) - check out
:doc:`pre-commit <../practices/precommit>`

Commit the project to your local version control like so to see the pre-commit checks run.

.. code-block:: bash
Expand All@@ -114,3 +110,18 @@ Create a new repository in GitHub: (`GitHub How-to <https://docs.github.com/en/g
>> git push origin <local_branch_name>

Notice that when you create a PR in GitHub, a set of tests for Continuous Integration starts up to verify that the project can build successfully and that all the unit tests pass. Neato!

Install pre-commit
----------------------------

Now that your project has been pushed to a GitHub remote repository, it's a good
time to install ``pre-commit`` so that future commits will run a suite of checks
before pushing code to the remote repository.
Run the following command in your terminal.

.. code:: bash

>> pre-commit install

For more information about ``pre-commit`` including a list of the checks that
will be run before each commit, please see :doc:`pre-commit <../practices/precommit>`.
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
44 changes: 43 additions & 1 deletion docs/practices/precommit.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,9 +10,51 @@ Using pre-commit enables a quick check of your code before it's committed and ch
by GitHub workflows. This cuts down on code feedback time, and allows for faster
development. Additional documentation can be found `here <https://pre-commit.com/index.html>`_.

To configure pre-commit for your project, run the following command register
To configure pre-commit for your project, run the following command to register
pre-commit hooks with ``.git/hooks/pre-commit``.

.. code-block:: bash

pre-commit install

List of ``pre-commit`` hooks
-----------------------------

The following is a list of pre-commit hooks that will be run each time you
commit code locally. The configuration file that defines these hooks is called
``.pre-commit-config.yaml``, you should feel free to update or remove any
of these that are not useful for your project.

.. list-table:: Pre-commit hooks
:widths: auto
:header-rows: 1

* - **Hook name**
- **Purpose**
* - Check template version
- Compare the current local template version against latest remote version and alert user if an update is recommended.
* - Clear output from Jupyter notebooks
- Clear output from Jupyter notebooks to avoid committing large binary files.
* - Run unit tests
- Run all unit tests that are discovered by pytest.
* - Prevent main branch commits
- Prevents accidental commits directly to the ``main`` (or ``master``) branches.
* - Check for large files
- Prevents committing very large files. The default file size threshold is 500kb and is configurable.
* - Validate pyproject.toml
- Verify pyproject.toml adheres to the required schema to avoid changes that would break the build.
* - isort (python files in src/ and tests/)
- Runs isort to sort and organize your python package imports. *(Optionally installed when project is created.)*
* - pylint (python files in src/)
- Runs pylint to enforce a particular code style on python files in the src/ directory. *(Optionally installed when project is created.)*
* - pylint (python files in tests/)
- Same as above, but for the tests/ directory. *(Optionally installed when project is created.)*
* - black
- Runs black to enforce a particular code style on python files in the src/ and tests/ directories. *(Optionally installed when project is created.)*
* - mypy
- Runs static type checking on python files in the src/ and tests/ directories. *(Optionally installed when project is created.)*
* - Build documentation with Sphinx
- Ensures that automatically generated documentation and, optionally, jupyter notebooks can be built successfully.


Many other pre-commit hooks exist, a partial list can be found `here <https://pre-commit.com/hooks.html>`_.
9 changes: 8 additions & 1 deletion docs/source/existing_project.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -193,8 +193,15 @@ Use pre-commit
..............

Install and use ``pre-commit``. It may seem annoying at first, but it will save
you many cycles of "see a test fail on GitHub, make and push a change, hope the test passes".
you many cycles of "see a test fail on GitHub, make and push a change, hope the
test passes". Installation is easy!

.. code:: bash

>> pre-commit install

For more information about ``pre-commit`` including a list of the checks that
will be run before each commit, check out :doc:`pre-commit <../practices/precommit>`.

Import sorting
..............
Expand Down
19 changes: 15 additions & 4 deletions docs/source/new_project.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -90,10 +90,6 @@ At this point, your new project is hydrated and ready for you to start coding. B
Commit your new project locally
-------------------------------------------------------------------------------

If you're interested in using pre-commit hooks to crosscheck your code before you commit it,
now is a good time to set that up (it's just one command) - check out
:doc:`pre-commit <../practices/precommit>`

Commit the project to your local version control like so to see the pre-commit checks run.

.. code-block:: bash
Expand All@@ -114,3 +110,18 @@ Create a new repository in GitHub: (`GitHub How-to <https://docs.github.com/en/g
>> git push origin <local_branch_name>

Notice that when you create a PR in GitHub, a set of tests for Continuous Integration starts up to verify that the project can build successfully and that all the unit tests pass. Neato!

Install pre-commit
----------------------------

Now that your project has been pushed to a GitHub remote repository, it's a good
time to install ``pre-commit`` so that future commits will run a suite of checks
before pushing code to the remote repository.
Run the following command in your terminal.

.. code:: bash

>> pre-commit install

For more information about ``pre-commit`` including a list of the checks that
will be run before each commit, please see :doc:`pre-commit <../practices/precommit>`.
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
44 changes: 43 additions & 1 deletion docs/practices/precommit.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,9 +10,51 @@ Using pre-commit enables a quick check of your code before it's committed and ch
by GitHub workflows. This cuts down on code feedback time, and allows for faster
development. Additional documentation can be found `here <https://pre-commit.com/index.html>`_.

To configure pre-commit for your project, run the following command register
To configure pre-commit for your project, run the following command to register
pre-commit hooks with ``.git/hooks/pre-commit``.

.. code-block:: bash

pre-commit install

List of ``pre-commit`` hooks
-----------------------------

The following is a list of pre-commit hooks that will be run each time you
commit code locally. The configuration file that defines these hooks is called
``.pre-commit-config.yaml``, you should feel free to update or remove any
of these that are not useful for your project.

.. list-table:: Pre-commit hooks
:widths: auto
:header-rows: 1

* - **Hook name**
- **Purpose**
* - Check template version
- Compare the current local template version against latest remote version and alert user if an update is recommended.
* - Clear output from Jupyter notebooks
- Clear output from Jupyter notebooks to avoid committing large binary files.
* - Run unit tests
- Run all unit tests that are discovered by pytest.
* - Prevent main branch commits
- Prevents accidental commits directly to the ``main`` (or ``master``) branches.
* - Check for large files
- Prevents committing very large files. The default file size threshold is 500kb and is configurable.
* - Validate pyproject.toml
- Verify pyproject.toml adheres to the required schema to avoid changes that would break the build.
* - isort (python files in src/ and tests/)
- Runs isort to sort and organize your python package imports. *(Optionally installed when project is created.)*
* - pylint (python files in src/)
- Runs pylint to enforce a particular code style on python files in the src/ directory. *(Optionally installed when project is created.)*
* - pylint (python files in tests/)
- Same as above, but for the tests/ directory. *(Optionally installed when project is created.)*
* - black
- Runs black to enforce a particular code style on python files in the src/ and tests/ directories. *(Optionally installed when project is created.)*
* - mypy
- Runs static type checking on python files in the src/ and tests/ directories. *(Optionally installed when project is created.)*
* - Build documentation with Sphinx
- Ensures that automatically generated documentation and, optionally, jupyter notebooks can be built successfully.


Many other pre-commit hooks exist, a partial list can be found `here <https://pre-commit.com/hooks.html>`_.
9 changes: 8 additions & 1 deletion docs/source/existing_project.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -193,8 +193,15 @@ Use pre-commit
..............

Install and use ``pre-commit``. It may seem annoying at first, but it will save
you many cycles of "see a test fail on GitHub, make and push a change, hope the test passes".
you many cycles of "see a test fail on GitHub, make and push a change, hope the
test passes". Installation is easy!

.. code:: bash

>> pre-commit install

For more information about ``pre-commit`` including a list of the checks that
will be run before each commit, check out :doc:`pre-commit <../practices/precommit>`.

Import sorting
..............
Expand Down
19 changes: 15 additions & 4 deletions docs/source/new_project.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -90,10 +90,6 @@ At this point, your new project is hydrated and ready for you to start coding. B
Commit your new project locally
-------------------------------------------------------------------------------

If you're interested in using pre-commit hooks to crosscheck your code before you commit it,
now is a good time to set that up (it's just one command) - check out
:doc:`pre-commit <../practices/precommit>`

Commit the project to your local version control like so to see the pre-commit checks run.

.. code-block:: bash
Expand All@@ -114,3 +110,18 @@ Create a new repository in GitHub: (`GitHub How-to <https://docs.github.com/en/g
>> git push origin <local_branch_name>

Notice that when you create a PR in GitHub, a set of tests for Continuous Integration starts up to verify that the project can build successfully and that all the unit tests pass. Neato!

Install pre-commit
----------------------------

Now that your project has been pushed to a GitHub remote repository, it's a good
time to install ``pre-commit`` so that future commits will run a suite of checks
before pushing code to the remote repository.
Run the following command in your terminal.

.. code:: bash

>> pre-commit install

For more information about ``pre-commit`` including a list of the checks that
will be run before each commit, please see :doc:`pre-commit <../practices/precommit>`.
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
44 changes: 43 additions & 1 deletion docs/practices/precommit.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,9 +10,51 @@ Using pre-commit enables a quick check of your code before it's committed and ch
by GitHub workflows. This cuts down on code feedback time, and allows for faster
development. Additional documentation can be found `here <https://pre-commit.com/index.html>`_.

To configure pre-commit for your project, run the following command register
To configure pre-commit for your project, run the following command to register
pre-commit hooks with ``.git/hooks/pre-commit``.

.. code-block:: bash

pre-commit install

List of ``pre-commit`` hooks
-----------------------------

The following is a list of pre-commit hooks that will be run each time you
commit code locally. The configuration file that defines these hooks is called
``.pre-commit-config.yaml``, you should feel free to update or remove any
of these that are not useful for your project.

.. list-table:: Pre-commit hooks
:widths: auto
:header-rows: 1

* - **Hook name**
- **Purpose**
* - Check template version
- Compare the current local template version against latest remote version and alert user if an update is recommended.
* - Clear output from Jupyter notebooks
- Clear output from Jupyter notebooks to avoid committing large binary files.
* - Run unit tests
- Run all unit tests that are discovered by pytest.
* - Prevent main branch commits
- Prevents accidental commits directly to the ``main`` (or ``master``) branches.
* - Check for large files
- Prevents committing very large files. The default file size threshold is 500kb and is configurable.
* - Validate pyproject.toml
- Verify pyproject.toml adheres to the required schema to avoid changes that would break the build.
* - isort (python files in src/ and tests/)
- Runs isort to sort and organize your python package imports. *(Optionally installed when project is created.)*
* - pylint (python files in src/)
- Runs pylint to enforce a particular code style on python files in the src/ directory. *(Optionally installed when project is created.)*
* - pylint (python files in tests/)
- Same as above, but for the tests/ directory. *(Optionally installed when project is created.)*
* - black
- Runs black to enforce a particular code style on python files in the src/ and tests/ directories. *(Optionally installed when project is created.)*
* - mypy
- Runs static type checking on python files in the src/ and tests/ directories. *(Optionally installed when project is created.)*
* - Build documentation with Sphinx
- Ensures that automatically generated documentation and, optionally, jupyter notebooks can be built successfully.


Many other pre-commit hooks exist, a partial list can be found `here <https://pre-commit.com/hooks.html>`_.
9 changes: 8 additions & 1 deletion docs/source/existing_project.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -193,8 +193,15 @@ Use pre-commit
..............

Install and use ``pre-commit``. It may seem annoying at first, but it will save
you many cycles of "see a test fail on GitHub, make and push a change, hope the test passes".
you many cycles of "see a test fail on GitHub, make and push a change, hope the
test passes". Installation is easy!

.. code:: bash

>> pre-commit install

For more information about ``pre-commit`` including a list of the checks that
will be run before each commit, check out :doc:`pre-commit <../practices/precommit>`.

Import sorting
..............
Expand Down
19 changes: 15 additions & 4 deletions docs/source/new_project.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -90,10 +90,6 @@ At this point, your new project is hydrated and ready for you to start coding. B
Commit your new project locally
-------------------------------------------------------------------------------

If you're interested in using pre-commit hooks to crosscheck your code before you commit it,
now is a good time to set that up (it's just one command) - check out
:doc:`pre-commit <../practices/precommit>`

Commit the project to your local version control like so to see the pre-commit checks run.

.. code-block:: bash
Expand All@@ -114,3 +110,18 @@ Create a new repository in GitHub: (`GitHub How-to <https://docs.github.com/en/g
>> git push origin <local_branch_name>

Notice that when you create a PR in GitHub, a set of tests for Continuous Integration starts up to verify that the project can build successfully and that all the unit tests pass. Neato!

Install pre-commit
----------------------------

Now that your project has been pushed to a GitHub remote repository, it's a good
time to install ``pre-commit`` so that future commits will run a suite of checks
before pushing code to the remote repository.
Run the following command in your terminal.

.. code:: bash

>> pre-commit install

For more information about ``pre-commit`` including a list of the checks that
will be run before each commit, please see :doc:`pre-commit <../practices/precommit>`.
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
44 changes: 43 additions & 1 deletion docs/practices/precommit.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,9 +10,51 @@ Using pre-commit enables a quick check of your code before it's committed and ch
by GitHub workflows. This cuts down on code feedback time, and allows for faster
development. Additional documentation can be found `here <https://pre-commit.com/index.html>`_.

To configure pre-commit for your project, run the following command register
To configure pre-commit for your project, run the following command to register
pre-commit hooks with ``.git/hooks/pre-commit``.

.. code-block:: bash

pre-commit install

List of ``pre-commit`` hooks
-----------------------------

The following is a list of pre-commit hooks that will be run each time you
commit code locally. The configuration file that defines these hooks is called
``.pre-commit-config.yaml``, you should feel free to update or remove any
of these that are not useful for your project.

.. list-table:: Pre-commit hooks
:widths: auto
:header-rows: 1

* - **Hook name**
- **Purpose**
* - Check template version
- Compare the current local template version against latest remote version and alert user if an update is recommended.
* - Clear output from Jupyter notebooks
- Clear output from Jupyter notebooks to avoid committing large binary files.
* - Run unit tests
- Run all unit tests that are discovered by pytest.
* - Prevent main branch commits
- Prevents accidental commits directly to the ``main`` (or ``master``) branches.
* - Check for large files
- Prevents committing very large files. The default file size threshold is 500kb and is configurable.
* - Validate pyproject.toml
- Verify pyproject.toml adheres to the required schema to avoid changes that would break the build.
* - isort (python files in src/ and tests/)
- Runs isort to sort and organize your python package imports. *(Optionally installed when project is created.)*
* - pylint (python files in src/)
- Runs pylint to enforce a particular code style on python files in the src/ directory. *(Optionally installed when project is created.)*
* - pylint (python files in tests/)
- Same as above, but for the tests/ directory. *(Optionally installed when project is created.)*
* - black
- Runs black to enforce a particular code style on python files in the src/ and tests/ directories. *(Optionally installed when project is created.)*
* - mypy
- Runs static type checking on python files in the src/ and tests/ directories. *(Optionally installed when project is created.)*
* - Build documentation with Sphinx
- Ensures that automatically generated documentation and, optionally, jupyter notebooks can be built successfully.


Many other pre-commit hooks exist, a partial list can be found `here <https://pre-commit.com/hooks.html>`_.
9 changes: 8 additions & 1 deletion docs/source/existing_project.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -193,8 +193,15 @@ Use pre-commit
..............

Install and use ``pre-commit``. It may seem annoying at first, but it will save
you many cycles of "see a test fail on GitHub, make and push a change, hope the test passes".
you many cycles of "see a test fail on GitHub, make and push a change, hope the
test passes". Installation is easy!

.. code:: bash

>> pre-commit install

For more information about ``pre-commit`` including a list of the checks that
will be run before each commit, check out :doc:`pre-commit <../practices/precommit>`.

Import sorting
..............
Expand Down
19 changes: 15 additions & 4 deletions docs/source/new_project.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -90,10 +90,6 @@ At this point, your new project is hydrated and ready for you to start coding. B
Commit your new project locally
-------------------------------------------------------------------------------

If you're interested in using pre-commit hooks to crosscheck your code before you commit it,
now is a good time to set that up (it's just one command) - check out
:doc:`pre-commit <../practices/precommit>`

Commit the project to your local version control like so to see the pre-commit checks run.

.. code-block:: bash
Expand All@@ -114,3 +110,18 @@ Create a new repository in GitHub: (`GitHub How-to <https://docs.github.com/en/g
>> git push origin <local_branch_name>

Notice that when you create a PR in GitHub, a set of tests for Continuous Integration starts up to verify that the project can build successfully and that all the unit tests pass. Neato!

Install pre-commit
----------------------------

Now that your project has been pushed to a GitHub remote repository, it's a good
time to install ``pre-commit`` so that future commits will run a suite of checks
before pushing code to the remote repository.
Run the following command in your terminal.

.. code:: bash

>> pre-commit install

For more information about ``pre-commit`` including a list of the checks that
will be run before each commit, please see :doc:`pre-commit <../practices/precommit>`.