Breaking changes
- Removed
pygdbmi.IoManager.make_non_blocking
from the public API; it's unrelated and was not meant to be public
Other changes
- Fixed a bug where notifications without a payload were not recognized as such
- Invalid octal sequences produced by GDB are left unchanged instead of causing a
UnicodeDecodeError
(#64) - Fix a crash on Windows by waiting for the GDB process to exit in
GdbController.exit
- Added type annotations to the whole public API
- Updated the examples in
README.md
to use the current API and show the results printed by this version of pygdbmi (#69)
Internal changes
- Update and freeze dependencies for documentation generation
- Refactored the code to parse MI records to decrease the number of regex matches to perform
- Added
__all__
to all modules, which means that star imports (likefrom pygdbmi.gdbmiparser import *
) will not pollute the namespace with modules used by pygdbmi itself - Added
nox -s format
to re-format the source code using the correct options - Reformatted all imports with
isort
, and use it as part ofnox -s lint
andnox -s format
- Converted tests to use pytest's test structure rather than the unittest-based one
- Added mypy configuration to detect more problems and to force all code to be annotated
- Added a test for
example.py
- Replaced uses of
distutils.spawn.find_executable
, which is deprecated, withshutil.which
- Ran
pyupgrade
(with option--py37-plus
) on the codebase to convert to Python 3.7 idioms - Excluded some common backup and cache files from
MANIFEST.in
to prevent unwanted files to be included which causescheck-manifest
to fail - Fix
.flake8
to not cause errors with some versions of theflake8
tool
- Strings containing escapes are now unescaped, both for messages in error records, which were previously mangled (#57), and textual records, which were previously left escaped (#58)
- Dropped support for Python 3.6 and added explicit support for Python 3.9 and 3.10.
- Fix bug with
time_to_check_for_additional_output_sec
, as it was not being used when passed toGdbController
Breaking Changes
- Drop support for Python 3.5
- Update
GdbController()
API. New API isGdbController(command: Optional[List[str]], time_to_check_for_additional_output_sec: Optional[int])
. GdbController.verify_valid_gdb_subprocess()
was removed- Remove
NoGdbProcessError
error
Other Changes
- Add new
IoManager
class to handle more generic use-cases - [dev] use pytest for testing
- gdb mi parsing remains unchanged
- Drop support for 2.7, 3.4
- Add support for 3.7, 3.8
- Add
py.typed
file so mypy can enforce type hints onpygdbmi
- Do not log in StringStream (#36)
- Updates to build and CI tests (use nox)
- Use mkdocs and mkdocstrings
- Doc updates
- More doc updates
- Update docs
- Stop buffering output
- Use logger in GdbController; modify
verbose
arguments. - Remove support for Python 3.3
- Add method
get_subprocess_cmd
to view the gdb command run in the shell
- Improve reading gdb responses on unix (performance, bugfix) (@mouuff)
- Add support for record and replay (rr) gdb supplement
- Discard unexpected text from gdb
- Add native Windows support
- Make parsing more efficient when gdb outputs large strings
- Add new methods to GdbController class:
spawn_new_gdb_subprocess
,send_signal_to_gdb
, andinterrupt_gdb
- Update setup.py
- Fix windows ctypes import (#23, @rudolfwalter)
- Workaround gdb bug with repeated dictionary keys
- Improved buffering of incomplete gdb mi output (@trapito)
- Remove support of Python 3.2
- Preserve leading and trailing spaces in gdb/mi output (plus unit tests)
- Add unit test for buffering of gdb/mi output
- Documentation updates
- Refactoring
- Add more exception types (
NoGdbProcessError
,GdbTimeoutError
) - Add logic fixes for Windows (@johncf)
- Use codecs.open() to open the readme.rst, to prevent locale related bugs (@mariusmue)
- Add alternate pipe implementation for Windows
- Replace
epoll
withselect
for osx compatibility (@felipesere)
- Fix README
- Add support for gdb/mi (optional) tokens (@mariusmue)