diff --git a/Ghidra/Features/PyGhidra/src/main/py/README.md b/Ghidra/Features/PyGhidra/src/main/py/README.md index 090e8a9fe1..2b6e580250 100644 --- a/Ghidra/Features/PyGhidra/src/main/py/README.md +++ b/Ghidra/Features/PyGhidra/src/main/py/README.md @@ -557,6 +557,10 @@ import pdb # imports Python's pdb import pdb_ # imports Ghidra's pdb ``` ## Change History +__3.0.1__ +* Fixed `AttributeError: module 'pyghidra' has no attribute 'program_conext'` when performing a + `from pyghidra import *`. + __3.0.0:__ * Revised the PyGhidra API. See the [API section](#api) for more details. * PyGhidra 3.0.0 requires Ghidra 12.0 or later to run. diff --git a/Ghidra/Features/PyGhidra/src/main/py/pyproject.toml b/Ghidra/Features/PyGhidra/src/main/py/pyproject.toml index 63fcb9c5a5..c0279e327c 100644 --- a/Ghidra/Features/PyGhidra/src/main/py/pyproject.toml +++ b/Ghidra/Features/PyGhidra/src/main/py/pyproject.toml @@ -13,7 +13,6 @@ authors = [ ] maintainers = [ { name = "Ghidra Development Team" }, - { name = "DC3", email = "dc3.tsd@us.af.mil" }, ] keywords = [ "ghidra", @@ -28,6 +27,7 @@ classifiers = [ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", ] dependencies = [ "Jpype1==1.5.2", diff --git a/Ghidra/Features/PyGhidra/src/main/py/src/pyghidra/__init__.py b/Ghidra/Features/PyGhidra/src/main/py/src/pyghidra/__init__.py index fa1393aa0b..6770a6d0be 100644 --- a/Ghidra/Features/PyGhidra/src/main/py/src/pyghidra/__init__.py +++ b/Ghidra/Features/PyGhidra/src/main/py/src/pyghidra/__init__.py @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. ## -__version__ = "3.0.0" +__version__ = "3.0.1" # stub for documentation and typing # this is mostly to hide the function parameter @@ -32,10 +32,10 @@ def debug_callback(suspend=False, **kwargs): def _debug_callback(fun=None, *, suspend=False, **pydevd_kwargs): import functools import sys - + if not fun: return functools.partial(_debug_callback, suspend=suspend, **pydevd_kwargs) - + @functools.wraps(fun) def wrapper(*args, **kwargs): # NOTE: sys.modules is used directly to prevent errors in settrace @@ -46,7 +46,7 @@ def _debug_callback(fun=None, *, suspend=False, **pydevd_kwargs): pydevd_kwargs["suspend"] = suspend pydevd.settrace(**pydevd_kwargs) return fun(*args, **kwargs) - + return wrapper @@ -65,10 +65,10 @@ from pyghidra.version import ApplicationInfo, ExtensionDetails __all__ = [ - "debug_callback", "get_current_interpreter", "open_program", "run_script", "ApplicationInfo", - "DeferredPyGhidraLauncher", "ExtensionDetails", "GuiPyGhidraLauncher", - "HeadlessPyGhidraLauncher", "start", "started", "open_project", "open_filesystem", - "consume_program", "program_context", "analyze", "ghidra_script", "transaction", - "analysis_properties", "program_info", "program_loader", "task_monitor", "walk_project", + "debug_callback", "get_current_interpreter", "open_program", "run_script", "ApplicationInfo", + "DeferredPyGhidraLauncher", "ExtensionDetails", "GuiPyGhidraLauncher", + "HeadlessPyGhidraLauncher", "start", "started", "open_project", "open_filesystem", + "consume_program", "program_context", "analyze", "ghidra_script", "transaction", + "analysis_properties", "program_info", "program_loader", "task_monitor", "walk_project", "walk_programs" ]