Skip to content

Commit

Permalink
feat: add PYTHONBREAKPOINT as exposed config var
Browse files Browse the repository at this point in the history
PYTHONBREAKPOINT has been exposed as a Tutor configuration variable in
the dockerfile available to be changed in config.yml. It has also
been added as an empty variable in default.yml as required by the
test suite. The docs have also been changed to recommend using
breakpoint and explaining how PYTHONBREAKPOINT can be modified to use a
custom debugger. An entry in CHANGELOG has been added about this change.
  • Loading branch information
Carlos Muniz committed Jun 9, 2022
1 parent c4388e1 commit 5e64d26
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 2 deletions.
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,19 @@ Every user-facing change should have an entry in this changelog. Please respect
-->

## Unreleased
- [Feature] Add PYTHONBREAKPOINT as an exposed config variable for custom debugging.(by @Carlos-Muniz)

## v14.0.0 (2022-06-09)

- 💥[Feature] Upgrade to Nutmeg: (by @regisb)
- 💥[Feature] Hide a course from the `/course` search page in the LMS when the course visibility is set to "none" in the Studio. (thanks @ghassanmas!)
- 💥[Improvement] The `lms.env.json` and `cms.env.json` files are moved to `lms.env.yml` and `cms.env.yml`. As a consequence, plugin developers must reformat the following patches to use YAML format, and not JSON: "common-env-features", "lms-env-features", "cms-env-features", "lms-env", "cms-env", "openedx-auth".
- 💥[Feature] Persistent grades are now enabled by default.
- [Bugfix] Remove edX references from bulk emails ([issue](https://github.com/openedx/build-test-release-wg/issues/100)).
- [Improvement] For Tutor Nightly (and only Nightly), official plugins are now installed from their nightly branches on GitHub instead of a version range on PyPI. This will allow Nightly users to install all official plugins by running ``pip install -e ".[full]"``.
- [Bugfix] Start MongoDB when running migrations, because a new data migration fails if MongoDB is not running

## v13.3.1 (2022-06-06)

## v14.0.0 (2022-06-09)

Expand Down
6 changes: 4 additions & 2 deletions docs/dev.rst
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ Tutor makes it easy to create a bind-mount from an existing container. First, co

tutor dev bindmount lms /openedx/venv

This command recursively copies the contents of the ``/opendedx/venv`` directory to ``$(tutor config printroot)/volumes/venv``. The code of any Python dependency can then be edited -- for instance, you can then add a ``import ipdb; ipdb.set_trace()`` statement for step-by-step debugging, or implement a custom feature.
This command recursively copies the contents of the ``/opendedx/venv`` directory to ``$(tutor config printroot)/volumes/venv``. The code of any Python dependency can then be edited -- for instance, you can then add a ``breakpoint()`` statement for step-by-step debugging, or implement a custom feature.

Then, bind-mount the directory back in the container with the ``--mount`` option::

Expand Down Expand Up @@ -238,10 +238,12 @@ Then, you should run the following commands::
# Rebuild static assets
openedx-assets build --env=dev

After running all these commands, your edx-platform repository will be ready for local development. To debug a local edx-platform repository, you can then add a ``import ipdb; ipdb.set_trace()`` breakpoint anywhere in your code and run::
After running all these commands, your edx-platform repository will be ready for local development. To debug a local edx-platform repository, you can then add a `python breakpoint <https://docs.python.org/3/library/functions.html#breakpoint>`__ with ``breakpoint()`` anywhere in your code and run::

tutor dev start --mount=/path/to/edx-platform lms

``PYTHONBREAKPOINT`` can be modified in the `config.yml` in order to use a custom debugger. The default debugger is ``pdb.set_trace``.

If LMS isn't running, this will start it in your terminal. If an LMS container is already running background, this command will stop it, recreate it, and attach your terminal to it. Later, to detach your terminal without stopping the container, just hit ``Ctrl+z``.


Expand Down
3 changes: 3 additions & 0 deletions tutor/templates/build/openedx/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,9 @@ USER app
RUN pip install -r requirements/edx/development.txt
RUN pip install ipdb==0.13.4 ipython==7.27.0

# Add PYTHONBREAKPOINT from config.yml
ENV PYTHONBREAKPOINT={{ PYTHONBREAKPOINT }}

# Recompile static assets: in development mode all static assets are stored in edx-platform,
# and the location of these files is stored in webpack-stats.json. If we don't recompile
# static assets, then production assets will be served instead.
Expand Down
1 change: 1 addition & 0 deletions tutor/templates/config/defaults.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ MYSQL_ROOT_USERNAME: "root"
NPM_REGISTRY: "https://registry.npmjs.org/"
PLATFORM_NAME: "My Open edX"
PREVIEW_LMS_HOST: "preview.{{ LMS_HOST }}"
PYTHONBREAKPOINT:
REDIS_HOST: "redis"
REDIS_PORT: 6379
REDIS_USERNAME: ""
Expand Down

0 comments on commit 5e64d26

Please sign in to comment.