You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			100 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			100 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
# Copyright (c) Jupyter Development Team.
 | 
						|
# Distributed under the terms of the Modified BSD License.
 | 
						|
 | 
						|
"""A license reporting CLI
 | 
						|
 | 
						|
Mostly ready-to-use, the downstream must provide the location of the application's
 | 
						|
static resources. Licenses from an app's federated_extensions will also be discovered
 | 
						|
as configured in `labextensions_path` and `extra_labextensions_path`.
 | 
						|
 | 
						|
    from traitlets import default
 | 
						|
    from jupyterlab_server import LicensesApp
 | 
						|
 | 
						|
    class MyLicensesApp(LicensesApp):
 | 
						|
        version = "0.1.0"
 | 
						|
 | 
						|
        @default("static_dir")
 | 
						|
        def _default_static_dir(self):
 | 
						|
            return "my-static/"
 | 
						|
 | 
						|
    class MyApp(JupyterApp, LabConfig):
 | 
						|
        ...
 | 
						|
        subcommands = dict(
 | 
						|
            licenses=(MyLicensesApp, MyLicensesApp.description.splitlines()[0])
 | 
						|
        )
 | 
						|
 | 
						|
"""
 | 
						|
from typing import Any
 | 
						|
 | 
						|
from jupyter_core.application import JupyterApp, base_aliases, base_flags
 | 
						|
from traitlets import Bool, Enum, Instance, Unicode
 | 
						|
 | 
						|
from ._version import __version__
 | 
						|
from .config import LabConfig
 | 
						|
from .licenses_handler import LicensesManager
 | 
						|
 | 
						|
 | 
						|
class LicensesApp(JupyterApp, LabConfig):
 | 
						|
    """A license management app."""
 | 
						|
 | 
						|
    version = __version__
 | 
						|
 | 
						|
    description = """
 | 
						|
    Report frontend licenses
 | 
						|
    """
 | 
						|
 | 
						|
    static_dir = Unicode("", config=True, help="The static directory from which to show licenses")
 | 
						|
 | 
						|
    full_text = Bool(False, config=True, help="Also print out full license text (if available)")
 | 
						|
 | 
						|
    report_format = Enum(
 | 
						|
        ["markdown", "json", "csv"], "markdown", config=True, help="Reporter format"
 | 
						|
    )
 | 
						|
 | 
						|
    bundles_pattern = Unicode(".*", config=True, help="A regular expression of bundles to print")
 | 
						|
 | 
						|
    licenses_manager = Instance(LicensesManager)
 | 
						|
 | 
						|
    aliases = {
 | 
						|
        **base_aliases,
 | 
						|
        "bundles": "LicensesApp.bundles_pattern",
 | 
						|
        "report-format": "LicensesApp.report_format",
 | 
						|
    }
 | 
						|
 | 
						|
    flags = {
 | 
						|
        **base_flags,
 | 
						|
        "full-text": (
 | 
						|
            {"LicensesApp": {"full_text": True}},
 | 
						|
            "Print out full license text (if available)",
 | 
						|
        ),
 | 
						|
        "json": (
 | 
						|
            {"LicensesApp": {"report_format": "json"}},
 | 
						|
            "Print out report as JSON (implies --full-text)",
 | 
						|
        ),
 | 
						|
        "csv": (
 | 
						|
            {"LicensesApp": {"report_format": "csv"}},
 | 
						|
            "Print out report as CSV (implies --full-text)",
 | 
						|
        ),
 | 
						|
    }
 | 
						|
 | 
						|
    def initialize(self, *args: Any, **kwargs: Any) -> None:
 | 
						|
        """Initialize the app."""
 | 
						|
        super().initialize(*args, **kwargs)
 | 
						|
        self.init_licenses_manager()
 | 
						|
 | 
						|
    def init_licenses_manager(self) -> None:
 | 
						|
        """Initialize the license manager."""
 | 
						|
        self.licenses_manager = LicensesManager(
 | 
						|
            parent=self,
 | 
						|
        )
 | 
						|
 | 
						|
    def start(self) -> None:
 | 
						|
        """Start the app."""
 | 
						|
        report = self.licenses_manager.report(
 | 
						|
            report_format=self.report_format,
 | 
						|
            full_text=self.full_text,
 | 
						|
            bundles_pattern=self.bundles_pattern,
 | 
						|
        )[0]
 | 
						|
        print(report)
 | 
						|
        self.exit(0)
 |