<commit_before>Done in the merge (started from the PyCharm version and bringing in things from PyDev):

- Added modules which were unused in PyCharm but are used in PyDev.

- execfile was upgraded to the PyDev version (it had errors with BOM in utf-8).

- pydevd_file_utils: automatically doing normcase.

- pyded: multiprocessing supporting 2 approaches (use new connection/use same connection).

- pydev_monkey: fixes from PyDev to properly deal with windows command lines.

- Private variables (name-mangled) are now evaluated (so they can be hovered).

- Exceptions raised from lines with a #@IgnoreException are ignored.

- Fixed exception changing variable in django debugging.

- Made debugging with Django breakpoints a bit faster.

- Exceptions separated by caught/uncaught, so, it's no longer needed to check
    an additional attribute to check it.

- When exception is thrown evaluating breakpoint condition, the debugger will stop
    (can be configured in main_debugger.suspend_on_breakpoint_exception).

- #@DontTrace comments can be used on methods so that they are ignored when stepping
    in (needs UI for CMD_ENABLE_DONT_TRACE)

- Code which stops tracing inside python properties integrated (CMD_SET_PROPERTY_TRACE)

- Find Referrers integrated.

Already reviewed:

. pycompletionserver.py
. pydev_console_utils.py
. pydev_ipython_console_011.py
. pydev_xml.py
. pydevd_tracing.py
. pydevd_frame.py


Need reviewing later:

pydev_ipython_console_011.py:
pydevd_comm.py: renumbered to keep all commands from pydev/pycharm.
pydevd_vars.py: resolving variables by variable id().


Things to be fixed in PyCharm:
--------------------------------

1. CMD_VERSION now should receive that it wants breakpoints by ID (and it
    should give a breakpoint id which should be used to remove it later
    when setting a breakpoint).

2. Setting breakpoint: the func_name is not being properly passed from PyCharm
    (and as such, PyCharm debugging is slower than it should be).

    Note that it works passing 'None', but the func_name should be given when possible.

    I.e.:

    class MyClass(object):
        def __init__(self):
            print('here') # Break here: '__init__' as func_name
            print(a)

        def bar(self):
            print('bar') # Break here: 'bar' as func_name

3. Note (may not need to change anything):
    Removed support for removing breakpoint without knowing its type (i.e.:
    remove breakpoint tried to remove a breakpoint if the type wasn't
    python-line nor django-line, now, it'll give an exception).

4. break_on_exceptions_thrown_in_same_context / ignore_exceptions_thrown_in_lines_with_ignore_exception

    These are currently set in the bulk operation to add exceptions, but
    it does make sense to create a separate command for that (but it's only
    worth doing it when/if PyCharm gets an UI to add it).

5. UI to ignore exception from additional places (not only from #@IgnoreException code-comments)
    i.e.: UI for CMD_IGNORE_THROWN_EXCEPTION_AT.

6. UI to show the current exception (i.e.: deal with CMD_SEND_CURR_EXCEPTION_TRACE and
    CMD_SEND_CURR_EXCEPTION_TRACE_PROCEEDED in the client side).

7. When an exception is detected on a breakpoint condition evaluation, we'll send
    a CMD_GET_BREAKPOINT_EXCEPTION (which should be handled by PyCharm to show some
    UI notification).

8. The CMD_ENABLE_DONT_TRACE must be sent from the UI to skip methods which have
    an #@DontTrace above it.

9. The CMD_SET_PROPERTY_TRACE must be sent from the UI to skip setter/getter/deleter
    python properties.

10. Integrate find referrers UI in PyCharm. In the backend it uses a CMD_RUN_CUSTOM_OPERATION with:
    from pydevd_referrers import get_referrer_info
    get_referrer_info


Things to be fixed in PyDev:
--------------------------------

1. Provide UI for 'smart step into'


Manual test:
---------------

* Find referrers(objects that reference to) of an object instance
* Support for IPython GUI event loop in console
* Code autoreload in debugger/console
* Ignore thrown/caught exceptions on source code

* Django template debugging
* Gevent debugging
* Smart step into
* Code block execution in python console
* Possibility of interruption of a command, executing in python console
* Collection of type information of arguments in debug mode
* Ability to stop tracing
* Ability to run debugger and console on remote interpreter<commit_msg>CMD_RELOAD_CODE working: adding note for PyCharm.<commit_after>Done in the merge (started from the PyCharm version and bringing in things from PyDev):

- Added modules which were unused in PyCharm but are used in PyDev.

- execfile was upgraded to the PyDev version (it had errors with BOM in utf-8).

- pydevd_file_utils: automatically doing normcase.

- pyded: multiprocessing supporting 2 approaches (use new connection/use same connection).

- pydev_monkey: fixes from PyDev to properly deal with windows command lines.

- Private variables (name-mangled) are now evaluated (so they can be hovered).

- Exceptions raised from lines with a #@IgnoreException are ignored.

- Fixed exception changing variable in django debugging.

- Made debugging with Django breakpoints a bit faster.

- Exceptions separated by caught/uncaught, so, it's no longer needed to check
    an additional attribute to check it.

- When exception is thrown evaluating breakpoint condition, the debugger will stop
    (can be configured in main_debugger.suspend_on_breakpoint_exception).

- #@DontTrace comments can be used on methods so that they are ignored when stepping
    in (needs UI for CMD_ENABLE_DONT_TRACE)

- Code which stops tracing inside python properties integrated (CMD_SET_PROPERTY_TRACE)

- Find Referrers integrated.

Already reviewed:

. pycompletionserver.py
. pydev_console_utils.py
. pydev_ipython_console_011.py
. pydev_xml.py
. pydevd_tracing.py
. pydevd_frame.py


Need reviewing later:

pydev_ipython_console_011.py:
pydevd_comm.py: renumbered to keep all commands from pydev/pycharm.
pydevd_vars.py: resolving variables by variable id().


Things to be fixed in PyCharm:
--------------------------------

1. CMD_VERSION now should receive that it wants breakpoints by ID (and it
    should give a breakpoint id which should be used to remove it later
    when setting a breakpoint).

2. Setting breakpoint: the func_name is not being properly passed from PyCharm
    (and as such, PyCharm debugging is slower than it should be).

    Note that it works passing 'None', but the func_name should be given when possible.

    I.e.:

    class MyClass(object):
        def __init__(self):
            print('here') # Break here: '__init__' as func_name
            print(a)

        def bar(self):
            print('bar') # Break here: 'bar' as func_name

3. Note (may not need to change anything):
    Removed support for removing breakpoint without knowing its type (i.e.:
    remove breakpoint tried to remove a breakpoint if the type wasn't
    python-line nor django-line, now, it'll give an exception).

4. break_on_exceptions_thrown_in_same_context / ignore_exceptions_thrown_in_lines_with_ignore_exception

    These are currently set in the bulk operation to add exceptions, but
    it does make sense to create a separate command for that (but it's only
    worth doing it when/if PyCharm gets an UI to add it).

5. UI to ignore exception from additional places (not only from #@IgnoreException code-comments)
    i.e.: UI for CMD_IGNORE_THROWN_EXCEPTION_AT.

6. UI to show the current exception (i.e.: deal with CMD_SEND_CURR_EXCEPTION_TRACE and
    CMD_SEND_CURR_EXCEPTION_TRACE_PROCEEDED in the client side).

7. When an exception is detected on a breakpoint condition evaluation, we'll send
    a CMD_GET_BREAKPOINT_EXCEPTION (which should be handled by PyCharm to show some
    UI notification).

8. The CMD_ENABLE_DONT_TRACE must be sent from the UI to skip methods which have
    an #@DontTrace above it.

9. The CMD_SET_PROPERTY_TRACE must be sent from the UI to skip setter/getter/deleter
    python properties.

10. Integrate find referrers UI in PyCharm. In the backend it uses a CMD_RUN_CUSTOM_OPERATION with:
    from pydevd_referrers import get_referrer_info
    get_referrer_info

11. CMD_RELOAD_CODE has to be integrated (when a file changes it should be issued
    for 'hot' auto-reload of the code -- note that it's not needed if the
    user already has some sort of auto-reload builtin -- i.e.: django).


Things to be fixed in PyDev:
--------------------------------

1. Provide UI for 'smart step into'


Manual test:
---------------

* Find referrers(objects that reference to) of an object instance
* Support for IPython GUI event loop in console
* Code autoreload in debugger/console
* Ignore thrown/caught exceptions on source code

* Django template debugging
* Gevent debugging
* Smart step into
* Code block execution in python console
* Possibility of interruption of a command, executing in python console
* Collection of type information of arguments in debug mode
* Ability to stop tracing
* Ability to run debugger and console on remote interpreter
{'fraction_non_alphanumeric': 0.06573901610605895, 'fraction_numerical': 0.004601731127424126, 'mean_word_length': 3.6358557643473843, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4590421', 'n_tokens_mistral': 2645, 'n_tokens_neox': 2525, 'n_words': 1163}