Package: napari-hub-cli
napari-hub-cliThis package is not being updated or maintained with the latest napari hub metadata. To view a preview of your plugin listing for the napari hub, we recommend using thenapari hub preview page service.Command line utilities for inspecting and validating plugins for the napari hub.InstallationFrom your console, you can install the napari hub CLI through pip$ pip install napari-hub-cliUsage (Not Maintained)MetadataThis package provides two utilities for previewing and validating the metadata we
will inspect from your plugin and display on the napari hub.Previewing Metadata$ napari-hub-cli preview-metadata /tmp/example-pluginor# display one field at a time and wait for input
$ napari-hub-cli preview-metadata /tmp/example-plugin -iThis utility will inspect the plugin at the given path for metadata and display it for preview.Each field of metadata is accompanied by the file and attribute where it was found.
When fields are missing, they are accompanied instead by a suggested source.
When a field is sourced fromsetup.py, it is always an argument to thesetupmethod.Version- Depending on how you manage versioning for your package, we may not be able to
parse its latest version. The version of your package displayed on
the napari hub will always be the latest version released on PyPI.Project Site- If yoururlorProject Sitemetadata is a GitHub url,
it will be displayed as the Source Code field instead.Example output:--------------------------------------------------------------------------------
Authors
--------------------------------------------------------------------------------
Draga Doncila Pop
        ------
        Source
        ------
        /setup.cfg: metadata, author

--------------------------------------------------------------------------------
Description
--------------------------------------------------------------------------------
This is my napari-hub specific description. It is detailed, and comprehensive.
        ------
        Source
        ------
        /.napari/DESCRIPTION.md

--------------------------------------------------------------------------------
Source Code
--------------------------------------------------------------------------------
https://github.com/DragaDoncila/example-plugin
        ------
        Source
        ------
        /.napari/config.yml: project_urls, Source Code

--------------------------------------------------------------------------------
Summary
--------------------------------------------------------------------------------
~~Not Found~~
        ------
        Suggested Source
        ------
        /setup.cfg: metadata, summary

--------------------------------------------------------------------------------
User Support
--------------------------------------------------------------------------------
https://github.com/DragaDoncila/example-plugin/issues
        ------
        Source
        ------
        /.napari/config.yml: project_urls, User SupportYou can then usecheck-missingto get a display of just the missing metadata.
SeeCustomizing Your Plugin Listingfor a detailed guide on how you can add this metadata
to your project.Checking Missing Metadata$ napari-hub-cli check-missing /tmp/example-pluginor# display one field at a time and wait for input
$ napari-hub-cli check-missing /tmp/example-plugin -iThis utility will only display the metadata missing from your plugin, and will also suggest where you can add it.
All metadata listed here will be displayed on your plugin's napari hub page. When this metadata might also be used
for sorting, filtering or searching for plugins, this information is also displayed.Example output:--------------------------------------------------------------------------------
MISSING: Twitter
--------------------------------------------------------------------------------
        SUGGESTED SOURCE:       /.napari/config.yml: project_urls, Twitter

--------------------------------------------------------------------------------
MISSING: Summary
--------------------------------------------------------------------------------
        SUGGESTED SOURCE:       /setup.cfg: metadata, summary
        ------
        Used For
        ------
        SearchingFor more information on how you can add metadata to your package, and how we use it on the napari hub, check outCustomizing Your Plugin Listing.Development InformationThe main logic of metadata loading proceeds from theload_metafunction, and each filetype has its own parsing
function. In addition, we use aparse_complex_metadatafunctionto handle edge case parsing of certain fields that
may be found insetup.pyandsetup.cfg.Where do we look for metadata?The source of truth for both reading metadata and suggesting its source locations is found inmetadata_sources.csv.Metadata can be found in the following files, with paths given from the root directory,
and these files are preferentially searched in order:.napari/config.yml- Author information, project URLs.napari/DESCRIPTION.md- Long descriptionsetup.cfg- All packaging metadata and potentially long description (could also be a pointer to README.md)setup.py- All packaging metadata and potentially long description. Only used ifsetup.cfgis not present, or not complete.In addition to these files, we may also search module__init__.pyfiles and any_version.pyfiles we find for the version number.Why so complex?The main source of complexity for loading this metadata arises from the requirements:metadata needs to be parsed before the package is released, so we cannot rely on PyPIwe prefer not to install the package into the active environment to read the metadatawe would like to show users where their metadata is being read from, and where they can go to change itThese requirements mean we cannot just build a wheel/inspect package metadata from its distribution,
because its source file will then be irretrievable. As a result, we rely on inspecting
the contents of files individually, and parseconfig.yml,setup.pyandsetup.cfgindependently.Code of ConductThis project adheres to the Contributor Covenantcode of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior toopensource@chanzuckerberg.com.