Recent Releases of hunter

hunter - v3.3.5

  • Added support for Python 3.10.
  • Added support for time objects and the fold option in safe_repr.
  • 3.3.4 was skipped cause I messed up the CI.

- Python
Published by ionelmc over 3 years ago

hunter - v3.3.6

  • Fixed regression from 3.3.4: stdlib filter was broken.
  • Improved the pth file (PYTHONHUNTER environment variable activation) to use a clean eval environment. No bogus variables like line (from the site.py machinery) will be available anymore.
  • Fixed a bug in VarsSnooper that would make it fail in rare situation where a double return event is emitted.

- Python
Published by ionelmc over 3 years ago

hunter - v3.3.7

  • Fixed a bug with how stdlib is detected on Windows (at least).

- Python
Published by ionelmc over 3 years ago

hunter - v3.3.8

  • Fixed CI problem that publishes same type of wheels two times.

- Python
Published by ionelmc over 3 years ago

hunter - v3.4.0

  • Switched CI to GitHub Actions, this has a couple consequences:

    • Support for Python 2.7 is dropped. You can still install it there but it's not tested anymore and Python 2 specific handling will be removed at some point.
    • Linux wheels are now provided in musllinux and manylinux2014 variants.
  • Extension building is now completely skipped on PyPy.

  • A pure but tagged as platform specific wheel is now provided for PyPy (to have fast installs there as well).

- Python
Published by ionelmc over 3 years ago

hunter - v3.4.1

  • Add support for building a pp37.pp38 tagged wheel (basically an universal wheel installable just for those two PyPy versions).

- Python
Published by ionelmc over 3 years ago

hunter - v3.4.2

  • Fixed CI to properly make win32 wheels.

- Python
Published by ionelmc over 3 years ago

hunter - v3.4.3

  • Removed most of the Python 2 support code.
  • Fix some refactoring regression in setup.py and make the 3.4.x series installable only on Python 3.6 and later.
  • Yank 3.4.0, 3.4.1, 3.4.2 releases to avoid install problems on Python 2.7.

- Python
Published by ionelmc over 3 years ago

hunter - v3.5.0

  • Add support for generators and coroutines in the hunter.wrap decorator.
  • Dropped support for Python 3.6.

- Python
Published by ionelmc over 3 years ago

hunter -

  • Fixed tracer still being active for other threads after it was stopped.

    Python unfortunately only allows removing the trace function for the current thread - now hunter.tracer.Tracer will uninstall itself if it's marked as stopped.

    This fixes bogus errors that appear when using ipdb with the hunter.actions.Debugger action while thread support is enabled (the default).

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Changed CI to build Python 3.9 wheels. Python 3.5 no longer tested and wheels no longer built to keep things simple.
  • Documentation improvements.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Fixed CI/test issues that prevented all of 21 wheels being published.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Fixed handling so that hunter.event.Event.module is always the "?" string instead of None. Previously it was None when tracing particularly broken code and broke various predicates.
  • Similarly hunter.event.Event.filename is now "?" if there's no filename available.
  • Building on the previous changes the actions have simpler code for displaying missing module/filenames.
  • Changed hunter.actions.CallPrinter so that trace events for builtin functions are displayed differently. These events appear when using profile mode (eg: trace(profile=True)).
  • Fixed failure that could occur if hunter.event.Event.module is an unicode string. Now it's always a regular string. Only applies to Python 2.
  • Fixed argument display when tracing functions with tuple arguments. Closes #88. Only applies to Python 2.
  • Improved error reporting when internal failures occur. Now some details about the triggering event are logged.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Fixed oversight over what value is in hunter.event.Event.builtin. Now it's always a boolean, and can be used consistently in filters (eg: builtin=True,function='getattr').

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Added support for regex, date and datetime in safe_repr.
  • Fixed call argument display when positional and keyword arguments are used in hunter.actions.CallPrinter.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Implemented the hunter.actions.StackPrinter action.
  • Implemented the hunter.predicates.Backlog predicate. Contributed by Dan Ailenei in #81.
  • Improved contributing section in docs a bit. Contributed by Tom Schraitle in #85.
  • Improved filtering performance by avoiding a lot of unnecessary PyObject_GetAttr calls in the Cython implementation of hunter.predicates.Backlog.
  • Implemented the hunter.actions.ErrorSnooper action.
  • Added support for profiling mode (eg: trace(profile=True)). This mode will use setprofile instead of settrace.
  • Added ARM64 wheels and CI.
  • Added hunter.event.Event.instruction and hunter.event.Event.builtin (usable in profile mode).
  • Added more cookbook entries.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Improved again the stdlib check to handle certain paths better.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Really fixed the <frozen importlib.something stdlib check.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Marked all the <frozen importlib.something files as part of stdlib.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Added hunter.actions.ErrorSnooper - an action that detects silenced exceptions.
  • Added hunter.load_config and fixed issues with configuration being loaded too late from the PYTHONHUNTERCONFIG environment variable.
  • Changed hunter.From helper to automatically move depth and calls filters to the predicate (so they filter after hunter.predicates.From activates).
  • Changed hunter.predicates.From to pass a copy of event to the predicate. The copy will have the depth and calls attributes adjusted to the point where hunter.predicates.From activated.
  • Fixed a bunch of inconsistencies and bugs when using & and | operators with predicates.
  • Fixed a bunch of broken fields on detached events from hunter.event.Event.detach (hunter.event.Event.function_object and hunter.event.Event.arg).
  • Improved docstrings in various and added a configuration doc section.
  • Improved testing (more coverage).

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Really fixed safe_repr so it doesn't cause side-effects (now isinstance/issubclass are avoided - they can cause side-effects in code that abuses descriptors in special attributes/methods).

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Really fixed stream setup in actions (using force_colors without any stream was broken). See: hunter.actions.ColorStreamAction.
  • Fixed __repr__ for the hunter.predicates.From predicate to include watermark.
  • Added binary wheels for Python 3.8.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Fixed safe_repr on pypy so it's safer on method objects. See: hunter.actions.ColorStreamAction.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Fixed setting stream from PYTHONHUNTERCONFIG environment variable. See: hunter.actions.ColorStreamAction.
  • Fixed a couple minor documentation issues.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Fixed issue with coloring missing source message (coloring leaked into next line).

- Python
Published by ionelmc almost 5 years ago

hunter -

  • The package now uses setuptools-scm for development builds (available at https://test.pypi.org/project/hunter/). As a consequence installing the sdist will download setuptools-scm.

  • Recompiled cython modules with latest Cython. Hunter can be installed without any Cython, as before.

  • Refactored some of the cython modules to have more typing information and not use deprecated property syntax.

  • Replaced unsafe_repr option with repr_func. Now you can use your custom repr function in the builtin actions. BACKWARDS INCOMPATIBLE

  • Fixed buggy filename handling when using Hunter in ipython/jupyter. Source code should be properly displayed now.

  • Removed globals option from VarsPrinter action. Globals are now always looked up. BACKWARDS INCOMPATIBLE

  • Added support for locals in VarsPrinter action. Now you can do VarsPrinter('len(foobar)').

  • Always pass module_globals dict to linecache methods. Source code from PEP-302 loaders is now printed properly. Contributed by Mikhail Borisov in #65.

  • Various code cleanup, style and docstring fixing.

  • Added hunter.From helper to allow passing in filters directly as keyword arguments.

  • Added hunter.event.Event.detach for storing events without leaks or side-effects (due to prolonged references to Frame objects, local or global variables).

  • Refactored the internals of actions for easier subclassing.

    Added the filename_prefix, output, pid_prefix, thread_prefix, try_repr and try_source methods to the hunter.actions.ColorStreamAction baseclass.

  • Added hunter.actions.VarsSnooper - a PySnooper-inspired variant of hunter.actions.VarsPrinter. It will record and show variable changes, with the risk of leaking or using too much memory of course :)

  • Fixed tracers to log error and automatically stop if there's an internal failure. Previously error may have been silently dropped in some situations.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Fixed a link in changelog.
  • Fixed some issues in the Travis configuration.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Added hunter.predicates.From predicate for tracing from a specific point. It stop after returning back to the same call depth with a configurable offset.
  • Fixed PYTHONHUNTERCONFIG not working in some situations (config values were resolved at the wrong time).
  • Made tests in CI test the wheel that will eventually be published to PyPI (tox-wheel).
  • Made event.stdlib more reliable: pkg_resources is considered part of stdlib and few more paths will be considered as stdlib.
  • Dumbed down the get_peercred check that is done when attaching with hunter-trace CLI (via hunter.remote.install()). It will be slightly insecure but will work on OSX.
  • Added OSX in the Travis test grid.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Made threading_support on by default but output automatic (also, now 1 or 0 allowed).
  • Added pid_alignment and force_pid action options to show a pid prefix.
  • Fixed some bugs around __eq__ in various classes.
  • Dropped Python 3.3 support.
  • Dropped dependency on fields.
  • Actions now repr using a simplified implementation that tries to avoid calling __repr__ on user classes in order to avoid creating side-effects while tracing.
  • Added support for the PYTHONHUNTERCONFIG environment variable (stores defaults and doesn't activate hunter).

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Fixed indentation in hunter.actions.CallPrinter action (shouldn't deindent on exception).
  • Fixed option filtering in Cython Query implementation (filtering on tracer was allowed by mistake).
  • Various fixes to docstrings and docs.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Now Py_AddPendingCall is used instead of acquiring the GIL (when using GDB).

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Added the hunter.event.Event.count and hunter.event.Event.calls attributes.
  • Added the lt/lte/gt/gte lookups.
  • Added convenience aliases for startswith (sw), endswith (ew), contains (has) and regex (rx).
  • Added a convenience hunter.wrap decorator to start tracing around a function.
  • Added support for remote tracing (with two backends: manhole and GDB) via the hunter-trace bin. Note: Windows is NOT SUPPORTED.
  • Changed the default action to hunter.actions.CallPrinter. You'll need to use action=CodePrinter if you want the old output.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Fix support for getting sources for Cython module (it was broken on Windows and Python3.5+).

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Added support for tracing Cython modules (#30). A # cython: linetrace=True stanza or equivalent is required in Cython modules for this to work.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Added hunter.event.Event.thread.
  • Added hunter.event.Event.threadid and hunter.event.Event.threadname (available for filtering with hunter.Q).
  • Added hunter.event.Event.threading_support argument to hunter.trace. It makes new threads be traced and changes action output to include thread name.
  • Added support for using pdb++ in the hunter.actions.Debugger action.
  • Added support for using manhole via a new hunter.actions.Manhole action.
  • Made the hunter.event.Event.handler a public but readonly property.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Fix broken import. Require fields>=4.0.
  • Simplify a string check in Cython code.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Fix "KeyError: 'normal'" bug in hunter.actions.CallPrinter. Create the NO_COLORS dict from the COLOR dicts. Some keys were missing.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Fixed printouts of objects that return very large string in __repr__(). Trimmed to 512. Configurable in actions with the repr_limit option.
  • Improved validation of hunter.actions.VarsPrinter's initializer.
  • Added a hunter.actions.CallPrinter action.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Implemented a destructor (__dealloc__) for the Cython tracer.
  • Improved the restoring of the previous tracer in the Cython tracer (use PyEval_SetTrace) directly.
  • Removed tracer as an allowed filtering argument in hunter.Query.
  • Add basic validation (must be callable) for positional arguments and actions passed into hunter.Q. Closes #23.
  • Fixed stdlib checks (wasn't very reliable). Closes #24.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Fixed missing import in setup.py.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Fix a compile issue with the MSVC compiler (seems it don't like the inline option on the fast_When_call).

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Implemented fast tracer and query objects in Cython. MAY BE BACKWARDS INCOMPATIBLE

    To force using the old pure-python implementation set the PUREPYTHONHUNTER environment variable to non-empty value.

  • Added filtering operators: contains, startswith, endswith and in. Examples:

    • Q(module_startswith='foo' will match events from foo, foo.bar and foobar.
    • Q(module_startswith=['foo', 'bar'] will match events from foo, foo.bar, foobar, bar, bar.foo and baroo .
    • Q(module_endswith='bar' will match events from foo.bar and foobar.
    • Q(module_contains='ip' will match events from lipsum.
    • Q(module_in=['foo', 'bar'] will match events from foo and bar.
    • Q(module_regex=r"(re|sre.*)\b") will match events fromre,re.foobar,srefoobarbut not fromrepr``.
  • Removed the merge option. Now when you call hunter.trace(...) multiple times only the last one is active. BACKWARDS INCOMPATIBLE

  • Remove the previous_tracer handling. Now when you call hunter.trace(...) the previous tracer (whatever was in sys.gettrace()) is disabled and restored when hunter.stop() is called. BACKWARDS INCOMPATIBLE

  • Fixed CodePrinter to show module name if it fails to get any sources.

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Added a clear_env_var option on the tracer (disables tracing in subprocess).
  • Added force_colors option on hunter.actions.VarsPrinter and hunter.actions.CodePrinter.
  • Allowed setting the stream to a file name (option on hunter.actions.VarsPrinter and hunter.actions.CodePrinter).
  • Bumped up the filename alignment to 40 cols.
  • If not merging then self is not kept as a previous tracer anymore. Closes #16.
  • Fixed handling in VarsPrinter: properly print eval errors and don't try to show anything if there's an AttributeError. Closes #18.
  • Added a stdlib boolean flag (for filtering purposes). Closes #15.
  • Fixed broken frames that have "None" for filename or module (so they can still be treated as strings).
  • Corrected output files in the install_lib command so that pip can uninstall the pth file. This only works when it's installed with pip (sadly, setup.py install/develop and pip install -e will still leave pth garbage on pip uninstall hunter).

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Fixed hunter.event.Event.globals to actually be the dict of global vars (it was just the locals).

- Python
Published by ionelmc almost 5 years ago

hunter -

  • Fixed And and Or "single argument unwrapping".
  • Implemented predicate compression. Example: Or(Or(a, b), c) is converted to Or(a, b, c).
  • Renamed the Event.source to Event.fullsource.
  • Added Event.source that doesn't do any fancy sourcecode tokenization.
  • Fixed Event.fullsource return value for situations where the tokenizer would fail.
  • Made the print function available in the PYTHONHUNTER env var payload.
  • Added a __repr__ for Event.

- Python
Published by ionelmc almost 11 years ago

hunter -

  • Disabled colors for Jython (contributed by Claudiu Popa in #12).
  • Test suite fixes for Windows (contributed by Claudiu Popa in #11).
  • Added an introduction section in the docs.
  • Implemented a prettier fallback for when no sources are available for that frame.
  • Implemented fixups in cases where you use action classes as a predicates.

- Python
Published by ionelmc almost 11 years ago

hunter -

  • Forgot to merge some commits ...

- Python
Published by ionelmc almost 11 years ago

hunter -

  • Added handling for internal repr failures.
  • Fixed issues with displaying code that has non-ascii characters.
  • Implemented better display for call frames so that when a function has decorators the function definition is shown (instead of just the first decorator). See: #8.

- Python
Published by ionelmc almost 11 years ago

hunter -

  • Added missing color entry for exception events.
  • Added Event.line property. It returns the source code for the line being run.

- Python
Published by ionelmc almost 11 years ago

hunter -

  • Initial PyPI release.

- Python
Published by ionelmc almost 11 years ago

hunter -

Changes

  • Added color support (and colorama as dependency).
  • Added support for expressions in VarsPrinter.
  • Breaking changes:
    • Renamed F to Q. And Q is now just a convenience wrapper for Query.
    • Renamed the PYTHON_HUNTER env variable to PYTHONHUNTER.
    • Changed :class:When to take positional arguments.
    • Changed output to show 2 path components (still not configurable).
    • Changed :class:VarsPrinter to take positional arguments for the names.
  • Improved error reporting for env variable activation (PYTHONHUNTER).
  • Fixed env var activator (the .pth file) installation with setup.py install (the "egg installs") and setup.py develop/pip install -e (the "egg links").

Installation

pip install hunter==0.2.0

- Python
Published by ionelmc almost 11 years ago