.. extension-catalog-model documentation master file, created by sphinx-quickstart on Mon Nov 11 11:30:45 2024. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. Extension catalog model documentation ===================================== The extension catalog model is a `pydantic `_ model for creating, validating, reading and writing extension catalogs for use with an `extension manager `_. To create a catalog, you can either use Python or QuPath: * With Python: * Install this package: .. code-block:: bash pip install git+https://github.com/qupath/extension-catalog-model.git * Create and run a Python script that creates a `catalog.json` file with the JSON representation of a :py:meth:`~extension_catalog_model.model.Catalog`. A detailed description of each field of a catalog can be found on the specifications below. .. code-block:: python # create_catalog.py from extension_catalog_model.model import * version_range = VersionRange(min="v0.5.1") release = Release( name="v0.1.0-rc5", main_url="https://github.com/qupath/qupath-extension-omero/releases/download/v0.1.0-rc5/qupath-extension-omero-0.1.0-rc5.jar", optional_dependency_urls=["https://github.com/ome/openmicroscopy/releases/download/v5.6.14/OMERO.java-5.6.14-ice36.zip"], version_range=version_range ) extension = Extension( name="QuPath OMERO extension", description="QuPath extension to work with images through OMERO's APIs", author="QuPath", homepage="https://github.com/qupath/qupath-extension-omero", releases=[release] ) catalog = Catalog( name="QuPath catalog", description="Extensions maintained by the QuPath team", extensions=[extension] ) with open("catalog.json", "w") as file: file.write(catalog.model_dump_json(indent=2)) print(file.name + " written") .. code-block:: bash python3 create_catalog.py * With QuPath v0.6 or later: * Open the script editor in QuPath (Automate -> Script editor). * Create and run a script that creates a `catalog.json` file with the JSON representation of a :py:meth:`~extension_catalog_model.model.Catalog`. A detailed description of each field of a catalog can be found on the specifications below. .. code-block:: java import qupath.ext.extensionmanager.core.catalog.* import com.google.gson.GsonBuilder import com.google.gson.FieldNamingPolicy import java.nio.file.Paths var versionRange = new VersionRange("v0.5.1", null, null) var release = new Release( "v0.1.0-rc5", new URI("https://github.com/qupath/qupath-extension-omero/releases/download/v0.1.0-rc5/qupath-extension-omero-0.1.0-rc5.jar"), null, List.of(new URI("https://github.com/ome/openmicroscopy/releases/download/v5.6.14/OMERO.java-5.6.14-ice36.zip")), null, versionRange ) var extension = new Extension( "QuPath OMERO extension", "QuPath extension to work with images through OMERO's APIs", "QuPath", new URI("https://github.com/qupath/qupath-extension-omero"), false, List.of(release) ) var catalog = new Catalog( "QuPath catalog", "Extensions maintained by the QuPath team", List.of(extension) ) try (FileWriter fileWriter = new FileWriter("catalog.json")) { new GsonBuilder() .setPrettyPrinting() .disableHtmlEscaping() .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES) .create() .toJson(catalog, fileWriter); } println "Catalog saved to " + Paths.get("catalog.json").toAbsolutePath() Once the `catalog.json` file is created, create a GitHub repository and add `catalog.json` to the repository. An example can be found on the `QuPath catalog repository `_. To read and validate a catalog from a file: .. code-block:: python from extension_catalog_model.model import Catalog Catalog.parse_file("catalog.json") Model specifications ==================== .. toctree:: :maxdepth: 2 autodocs