mvdbeek 27b262209d Generate typed attribute stubs for GalaxyAppConfiguration from config_schema.yml
config_schema.yml is the source of truth for all 460 config attributes, but
only ~50 had explicit Python type annotations in GalaxyAppConfiguration.  The
remaining attributes were typed as Any via HasDynamicProperties.__getattr__,
requiring consumers to use # type: ignore or defensive getattr() patterns.

Add a `build_config_types` action to config_manage.py that reads the schema and
emits a *AppConfigurationAttributes mixin class with type annotations for every
schema-defined attribute.  Schema types map to Python types (str/bool/int/float
→ direct, any → Any, seq → list[Any]).  Attributes with a null schema default
get `T | None`.  A per-app override dict encodes cases where post-processing in
_process_config changes the runtime type (listified filters, float cache size,
optional interactivetools_map, etc.).

GalaxyAppConfiguration and ToolShedAppConfiguration now inherit from their
respective generated mixin, making all schema attributes statically typed.
Manual overrides in GalaxyAppConfiguration continue to refine specific
attributes (HashFunctionNameEnum, timedelta, themes dicts).

Wire the new action into the Makefile config-rebuild target so generated files
stay in sync when the schema changes.

Also fix two newly-exposed type errors in the codebase:
- galaxy/dependencies/__init__.py: guard None before passing file_source_templates_config_file to exists()
- galaxy/config/__init__.py: cast use_remote_user or single_user to bool
2026-06-06 20:04:58 +02:00
2026-01-20 10:25:45 +00:00
2025-03-15 17:12:02 +00:00
2016-09-01 13:17:43 -04:00
2026-05-20 15:29:45 +02:00
2020-10-03 02:26:40 -04:00
2023-12-20 17:52:31 +01:00
2025-05-07 10:45:09 +01:00
2026-05-06 05:31:43 +01:00
2022-12-12 16:13:03 +01:00
2026-06-03 11:12:02 +02:00

.. 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 66.6%
Vue 13%
TypeScript 10.8%
JavaScript 3.8%
Jupyter Notebook 2.8%
Other 2.8%