mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-10-30 18:13:23 +08:00
da6480e89b0306482a68bdca1ea3fcd9bbe64be6
Introduces the seam the conceptual-simplification plan (``.claude/plans/witty-drifting-clock.md``) hangs the LazyToolBox refactor on: * ``LazyTool`` — strict-by-default proxy over ``ToolIndexEntry`` that forwards the narrow attribute surface the eager pipeline actually reads (audited at plan time: ~28 attrs + 3 methods, zero ``isinstance(_, Tool)`` checks anywhere). Mutations (``tool.hidden = True``, shed metadata, ``tool.labels = ...``) land in ``_overrides`` and survive any later materialise. ``to_dict(link_details=False)`` stays on the entry — only ``link_details=True`` (and the ``_MATERIALIZE_OK`` allow-list) parse XML. Unknown attributes raise ``NotImplementedError`` with a clear message; ``LAZY_TOOL_PERMISSIVE=1`` downgrades to warn + materialise for debugging. * ``LazyToolBox.create_tool`` — returns a ``LazyTool`` when the index already has the source; otherwise falls through to the eager ``ToolBox.create_tool`` and persists the freshly-parsed tool via ``_persist_tool_source`` so the next boot is a hit. Paired with ``load_tool_from_cache``/``add_tool_to_cache`` no-ops so the disk ``ToolCache`` doesn't shadow the seam. * ``_resolve_index_entry`` — guid → ``store.get_by_source_path`` → short-id fallback. ``_materialize_for_lazy_tool`` routes the stub→Tool promotion through the existing ``_create_tool_from_stored_source`` + ``_register_loaded_tool`` so ``_tools_by_id`` / ``_tool_versions_by_id`` / ``_tools_by_old_id`` / lineage all agree with the eager bookkeeping. The seam is **dormant** in this commit: ``LazyToolBox.__init__`` still runs its hand-written ``_init_lazy_toolbox`` mirror, so ``create_tool`` is never invoked on the boot path. A follow-up commit will flip ``__init__`` to ``super().__init__()`` and delete the duplicate panel-parsing complex (~1500 lines per Phase 2 of the plan); this commit is purely additive so the activation can be reviewed in isolation. 21 unit tests cover the forwarded surface, mutator overrides round-tripping through materialise, the ``to_dict`` fast/slow paths, strict / permissive ``__getattr__`` behavior, and the ``create_tool`` index-hit paths (guid + source_path).
…
…
…
…
…
…
…
…
…
…
…
.. figure:: https://galaxyproject.org/images/galaxy-logos/galaxy_project_logo.jpg
:alt: Galaxy Logo
The latest information about Galaxy can be found on the `Galaxy Community Hub <https://galaxyproject.org/>`__.
Community support is available at `Galaxy Help <https://help.galaxyproject.org/>`__.
.. image:: https://img.shields.io/badge/chat-gitter-blue.svg
:target: https://gitter.im/galaxyproject/Lobby
:alt: Chat on gitter
.. image:: https://img.shields.io/badge/chat-irc.freenode.net%23galaxyproject-blue.svg
:target: https://webchat.freenode.net/?channels=galaxyproject
:alt: Chat on irc
.. image:: https://img.shields.io/badge/release-documentation-blue.svg
:target: https://docs.galaxyproject.org/en/master/
:alt: Release Documentation
.. image:: https://travis-ci.org/galaxyproject/galaxy.svg?branch=dev
:target: https://travis-ci.org/galaxyproject/galaxy
:alt: Inspect the test results
Galaxy Quickstart
=================
Galaxy requires Python 3.10 or higher. To check your Python version, run:
.. code:: console
$ python -V
Python 3.10.12
Start Galaxy:
.. code:: console
$ sh run.sh
Once Galaxy completes startup, you should be able to view Galaxy in your
browser at: http://localhost:8080
For more installation details please see: https://getgalaxy.org/
Documentation is available at: https://docs.galaxyproject.org/
Tutorials on how to use Galaxy, perform scientific analyses with it, develop Galaxy and its tools, and admin a Galaxy server are at: https://training.galaxyproject.org/
Tools
=====
Tools can be either installed from the Tool Shed or added manually.
For details please see the `tutorial <https://galaxyproject.org/admin/tools/add-tool-from-toolshed-tutorial/>`__.
Note that not all dependencies for the tools provided in the
``tool_conf.xml.sample`` are included. To install them please visit
"Manage dependencies" in the admin interface.
Issues and Galaxy Development
=============================
Please see `CONTRIBUTING.md <CONTRIBUTING.md>`_ .
Languages
Python
64.2%
TypeScript
14.6%
Vue
12.4%
JavaScript
3.7%
Jupyter Notebook
2.4%
Other
2.5%