67 Commits

Author SHA1 Message Date
Ryan Kurtz
56d072f13b GP-6580: Suppressing "java -version" output 2026-04-15 05:50:44 -04:00
Ryan Kurtz
64add1c0fa GP-6580: PyGhidra will now try to use the JAVA_HOME environment variable
to call LaunchSupport if java was not on the PATH
2026-03-19 09:06:53 -04:00
Ryan Kurtz
6f8100e585 GP-0: README update 2026-03-09 09:03:57 -04:00
fcrwr
49839645c7 Fix incorrect overriding of showsyntaxerror in PyConsole 2026-03-09 08:57:57 -04:00
Ryan Kurtz
35ac32e342 GP-0: Certify and README update 2026-03-09 08:42:20 -04:00
brandon
c0992425f0 Added py.typed to pyghidra 2026-03-09 08:39:33 -04:00
Ryan Kurtz
ee0accc44e Merge branch 'GP-0_ryanmkurtz_PR-8924_jstasiak_docs' 2026-02-06 05:51:35 -05:00
Jakub Stasiak
1231a520c0 Clarify the difference between ghidra and pyghidra imports
I got confused by the distinction and the differences a few times, I
figured it could be documented better.
2026-02-05 18:05:37 +01:00
Ryan Kurtz
3cda473a62 GP-0: Updating PyGhidra README.md 2026-02-03 12:28:15 -05:00
Alba Mendez
14c2495cb0 ghidra_launch.py: append JVM args in right order 2026-02-01 07:03:22 +01:00
Ryan Kurtz
2a14ce7be4 Merge remote-tracking branch 'origin/patch' 2026-01-12 06:26:11 -05:00
Ryan Kurtz
03740023b7 GP-6301: PyGhidra 3.0.2 now uses TaskMonitor.DUMMY instead of
PyGhidraTaskMonitor if no timeout is specified (#8858)
2026-01-12 06:21:07 -05:00
Ryan Kurtz
4e8ff9e621 Merge remote-tracking branch 'origin/patch' 2026-01-08 12:40:23 -05:00
Ryan Kurtz
1acb4a37a0 GP-6301: PyGhidraTaskMonitor no longer hangs python session
(Closes #8858)
2026-01-08 12:30:06 -05:00
Ryan Kurtz
7ca96c7fd2 GP-6288: Updating PyGhidra README and version 2026-01-06 09:31:14 -05:00
Ryan Kurtz
d5b9582fd5 GP-6288: PyGhidra now by default restores sys.modules each time a script
is run, or the interactive interpreter is reset.

Can be disabled by uncommenting
"#VMARGS=-Dpyghidra.sys.modules.restore.disable=true" in
launch.properties if its found to cause problems.
2026-01-06 06:20:11 -05:00
Ryan Kurtz
d6b7bb8c74 GP-6283: Fixing PyGhidra API inadvertently squashing some exceptions 2026-01-02 13:30:05 -05:00
Ryan Kurtz
89f487f65f GP-6283: PyGhidra 3.0.2 2026-01-02 07:28:00 -05:00
Ryan Kurtz
2c7cae08a9 GP-6241: Formatting, README update, version bump 2025-12-17 05:08:45 -05:00
Stanley He
f93cc03f27 PyGhidra: Fix up __init__ typo for program_context 2025-12-17 04:59:22 -05:00
Ryan Kurtz
5ab8d33592 GP-0: PyGhidra type hint fixes 2025-12-03 11:11:52 -05:00
Nicolas Iooss
fc0f971c39 Fix Python type annotations in PyGhidra module when using contextmanager
Verifying the type annotations used by PyGhidra with Mypy static type
checker leads to the following error:

    core.py:171: error: Argument 1 to "contextmanager" has incompatible
    type "Callable[[str | Path, str | Path, str, Any, str, str, str |
    JClass, str, Any], AbstractContextManager[Any, bool | None]]";
    expected "Callable[[str | Path, str | Path, str, Any, str, str, str
    | JClass, str, Any], Iterator[Never]]"  [arg-type]

Indeed, in Ghidra/Features/PyGhidra/src/main/py/src/pyghidra/core.py,
function open_program was declared to return a
ContextManager["FlatProgramAPI"]. While this function indeed returns
such a type, the implementation uses decorator @contextlib.contextmanager
which expects the wrapped function to return an generator (with yield).

Use Generator["FlatProgramAPI", None, None] to fix this.

While at it, fix other locations where the type annotation of the
function wrapped with contextmanager was incorrect.
2025-12-03 10:59:05 -05:00
Ryan Kurtz
a93de758f7 GP-6165: Changed JPype dependency to be fixed at version 1.5.2 to avoid
a possible Windows crash on 1.6.0
2025-12-03 05:33:51 -05:00
Ryan Kurtz
5e6c16073e GP-0: Renaming pyghidra.monitor() to pyghidra.task_monitor() to avoid
naming conflict with local monitor variables (Closes #8722)
2025-12-03 05:08:49 -05:00
Ryan Kurtz
6d36df6eca GP-0: Fixing PyGhidra version check when things like "-BETA" are present 2025-11-19 06:22:44 -05:00
Ryan Kurtz
0d52943d1f GP-6132: Fixed a bug in the the PyGhidra headless analyzer that resulted in the wrong exception being thrown when a script tries to import a module that isn't found 2025-11-18 14:15:44 -05:00
Ryan Kurtz
131aa4ac9a GP-0: If pyghidra.sys.modules.restore is set, PyGhidra will restore
sys.modules each time a script is run (Closes #8529)
2025-10-02 13:10:46 -04:00
Ryan Kurtz
951f5a5daa GP-6021: PyGhidra stdout/stderr scripting console fixes 2025-09-26 12:51:32 -04:00
Ryan Kurtz
26685abc75 GP-5637: More improvements to the PyGhidra API 2025-09-12 09:15:05 -04:00
Ryan Kurtz
657ec39201 GP-5637: More improvements to the PyGhidra API 2025-09-10 12:39:57 -04:00
Ryan Kurtz
c18c7a8f50 GP-5637: More improvements to the PyGhidra API 2025-09-08 13:24:10 -04:00
Ryan Kurtz
e0a060660b GP-5961: Deprecating pyghidra.open_program() and pyghidra.run_script()
Also fixed a recent regression with calling pyghidra.run_script()
2025-08-29 13:47:18 -04:00
Ryan Kurtz
2bb237e8d0 Merge remote-tracking branch
'origin/GP-5819-dragonmacher-help-build-update--SQUASHED' (Closes #8320)
2025-07-21 13:23:15 -04:00
dragonmacher
17c28209ef GP-5819 - Help - Added validation code to check all Ghidra TOC files after help is built 2025-07-21 11:59:01 -04:00
Ryan Kurtz
295f71472a GP-5637: The ghidra_script() function now accepts an optional
"script_args" parameter
2025-07-15 07:40:07 -04:00
Ryan Kurtz
cb68d29bac GP-5637: Fixing PyGhidra usage of DomainFileIterator 2025-07-11 06:58:18 -04:00
Ryan Kurtz
f5fd0171a2 GP-5637: New PyGhidra API 2025-07-10 11:42:46 -04:00
Ryan Kurtz
d58f2ad24c Merge remote-tracking branch 'origin/patch' 2025-07-07 12:25:55 -04:00
Ryan Kurtz
bf167a3126 GP-5810: Improving CWD removal from sys.path 2025-07-07 12:23:55 -04:00
Ryan Kurtz
fe335aa946 Merge remote-tracking branch 'origin/patch' 2025-07-07 11:40:02 -04:00
Ryan Kurtz
2930b622cc GP-5810: Removing CWD from PyGhidra's sys.path (Closes #8190) 2025-07-07 11:35:57 -04:00
Ryan Kurtz
1add5a9bce GP-5737: Fixing GhidraScript PrintWriter 2025-06-09 12:14:58 -04:00
Ryan Kurtz
ec43d344ad GP-0: Giving PyGhidra access to a ProjectManager 2025-05-28 14:59:29 -04:00
Ryan Kurtz
3f8fe98862 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-27 13:06:32 -04:00
Ryan Kurtz
189117e7d4 GP-5677: Ghidra now writes a "lastrun" file that PyGhidra can look for
to help find the Ghidra installation dir
2025-05-27 09:09:53 -04:00
Ryan Kurtz
6f0cb9a77c GP-5415: Python scripts that do not declare a @runtime metadata comment
now default to PyGhidra instead of Jython. (Closes #7856)
2025-05-22 10:13:19 -04:00
Ryan Kurtz
151fea46f5 GP-5627: PyGhidra can now open projects created with the Ghidra GUI by
setting the "nested_project_location" optional parameter to False
2025-04-30 09:54:57 -04:00
Ryan Kurtz
0ee0537e45 GP-5598: Rename InstallationGuide to GettingStarted; put in installation
root dir
2025-04-21 11:58:26 -04:00
Ryan Kurtz
907e5c563f GP-5521: pyghidra.open_program() now accepts a program_name parameter,
which can be used to override the program name derived from the
binary_path parameter
2025-03-25 13:44:04 -04:00
Ryan Kurtz
abb65d1b8c GP-5444: PyGhidra open_program() now handles locked projects better 2025-03-06 11:58:12 -05:00