Synchronization with PyDev.Debugger =================================== The sources in this folder are PyCharm version of the debugger `PyDev.Debugger`_. They should be in sync, so after testing all commits should be back-ported to the original repo. .. _PyDev.Debugger: https://github.com/fabioz/PyDev.Debugger.git How to do it? a) You should have PyDev.Debugger repo clone and fetch there IDEA commits related to this folder with changed paths from python/pydev/* to * b) Then cherry-pick all necessary commits resolving merge conflicts Steps: 1) git clone https://github.com/fabioz/PyDev.Debugger.git 2) and in this folder: 3) git remote rm origin 4) git tag -l | xargs git tag -d 5) git filter-branch --subdirectory-filter python/helpers/pydev --prune-empty --index-filter 'SHA=$(git write-tree); rm $GIT_INDEX_FILE && git read-tree --prefix= $SHA' -- --all in PyDev.Debugger folder: 6) git remote add temp-repo 7) git fetch temp-repo 8) Cherry-pick all the changes Note about C Files ================== PyCharm does not ship with pre-built Cython extensions for Linux. Instead, the extensions are built on site. The mentioned C files are: - ``pydevd_cython.c`` from ``_pydevd_bundle`` - ``pydevd_frame_evaluator_common.c`` - ``pydevd_frame_evaluator.c`` - ``pydevd_frame_evaluator_py39.c`` (for Python 3.9 and above) The latest three are located in ``_pydevd_frame_eval`` package. These C files are generated by the Cython but they **aren't saved** during the standard extension build process initiated by calling the ``buildBinaries`` task from ``build-debug-binaries`` Gradle project. To regenerate the C files the following two commands should be called from the ``pydev`` root directory: :: PYTHONPATH=. python build_tools/build.py --no-remove-binaries PYTHONPATH=. python3.9 build_tools/build.py --no-remove-binaries Note, that it's important to run the build script twice: one for the versions older than 3.9 and another for Python 3.9 and above. After that the ``checkCFilesAreUpToDate`` Gradle task can be run to check the C files are up to date, e.g.: :: ./gradlew -q checkCFileAreUpToDate