Giter VIP home page Giter VIP logo

awesome-panel-cli's Introduction

โœจ Awesome Panel CLI

We want to

  • make it super simple to develop high-quality Panel data apps.

We provide

  • an opinionated command line interface (CLI) pn and
  • a set of best practice templates

Awesome Panel CLI Intro

This project draws inspiration from other CLI tools like Angular CLI, Django management commands, django-simple-deploy and React Create App.

โš ๏ธ THIS PROJECT IS IN AN ALPHA STATE AND WILL CHANGE. USE IT AT YOUR OWN RISK.

๐Ÿ–ฅ๏ธ Monitor

PyPI version Downloads Python Versions Test Results codecov License

Follow on Twitter Follow on LinkedIn

โญ Support

Please support Panel and awesome-panel by giving the projects a star on Github:

Thanks

โค๏ธ Contribute

If you are looking to contribute to this project you can find ideas in the issue tracker. To get started check out the DEVELOPER_GUIDE.

I would love to support and receive your contributions. Thanks.

Hacktober Fest.

๐Ÿ“™ How to

๐Ÿš€ Get started in under a minute

Install the CLI.

pip install awesome-panel-cli[all]

Serve the examples

pn hello

pn hello

๐Ÿ“’ Get started on Binder

Click the button

Binder

โ“ Check out the CLI commands

Try running the commands below

pn --help

pn help

pn create --help

pn create --help

pn create app --help

pn create app --help

๐ŸŽ Create an app

Run

pn create app streaming_indicators

Serve

panel serve streaming_indicators.py

Streaming Indicators

๐Ÿ”ฅ Install the current master branch

If you want to try out or test the newest features you can install the current master branch via

pip install pip -U
pip install git+https://github.com/awesome-panel/awesome-panel-cli.git

awesome-panel-cli's People

Contributors

marcskovmadsen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

awesome-panel-cli's Issues

Support plugins

I would like other packages like awesome-panel, awesome-panel-extensions, panel-chemistry, pn-highcharts etc. to be able to *plug intotheawesome-panel-cli`.

Accept Criteria

  • [] Concept: Other packages can plug in and
    • add their own app, notebook and component templates to pn create app, pn create notebook. and pn create component.
    • add thir own commands. For example pn awesome-panel serve.
  • [] Tested
  • [] Documented
  • [] Showcased

Add `--cwd` flag to create commands

The current implementation of the create command assumes the user cds into the folder where he/ she wants to create the files.

It can be useful to be able to specify the target via a --cwd or --target flag.

Figure out how to use Releases and Packages

Github provides Releases and Packages.

image

So far I have not used these but I would like to learn and starting using as it is super useful.

Accept Criteria

  • [] How to documented or automated
  • [] Used in practice

Add `pn docker` commands

I would like to add a docker reference template and pn docker commands.

Commands

  • [] pn docker build
  • [] pn create docker-file
  • [] pn docker export
  • [] pn docker push
  • [] pn docker run
  • [] pn docker system-prune
  • [] pn docker test

Accept Criteria

  • [] Tested
  • [] Documented

Add custom index page to `pn hello apps`

When you run pn hello apps you should be able to go to https://localhost:5006 and see a nice gallery page.

Currently this does not work due to holoviz/panel#3970. When this gets fixed there will be a simple index page.

I would like though a nice gallery page with more info as found at https://www.awesome-panel.org/gallery.

image

The template can be found here https://github.com/awesome-panel/awesome-panel-extensions/tree/master/awesome_panel_extensions/frameworks/fast/templates/fast_gallery_template

Accept Criteria

Add Conda Package

Make a conda package available on conda-forge.

Inspiration might be found in the panel-chemistry repository which is already on conda-forge.

Tasks

  • [] Create conda-forge recipe
  • [] Publish the package (manually)
  • [] Document conda package in README
  • [] Document conda package in Docs
  • [] Setup automated build and release in via github actions

Add --dryrun to all commands

It would be super powerful to add a --dryrun to all pn commands to just show which shell commands will be run.

Accept Criteria

  • [] All commands
  • [] Tested
  • [] Documented

Develop concept for having both Sphinx docs and webassembly apps deployed

I would like the pn create project concept to create repositories that support both sphinx documentation and pn convert apps deployed via github pages with ease.

The issue I see is that they would both use the docs folder

  • Sphinx uses the docs folder by default
  • Github pages only supports the docs folder for deployment to for example awesome-panel.github.com/awesome-panel-cli.

Accept Criteria

  • [] Technical solution(s) found
  • [] Implemented
  • [] Tested
  • [] Documented.

Add missing documentation to typer apps

When you run pn --help you see something like this

image

I've maked some commands that do not have documentation. I would like that added.

The commands that don't have documentation are coming from the .add_typer commands marked below.

image

So the task is to figure out how to add docs to those and add it.

You can find the .add_typer code here.

Accept Criteria

  • [] Technical solution found
  • [] Docs added. Also, for nested commands.

Test across operating systems, terminals and development environments

The cli tool has been developed on Linux in a bash shell.

The cli tool should be tested and improved for other combinations of os and terminal:

  • os: linux, mac os, windows
  • terminal: bash, cmd.exe, powershell
  • dev environment. vs code, pycharm, jupyter, spyder
os terminal distribution version dev environment last successful test
linux bash python 3.9 VS Code 20221009
max os bash python 3.9
max os bash conda 3.9
windows cmd.exe python 3.9
windows cmd.exe conda 3.9
windows bash python 3.9
windows bash conda 3.9
windows power shell python 3.9
windows power shell conda 3.9

Test procedures

Usage

  1. Install for usage
  2. Try the different commands manually including pn create project.

Development

  1. Install for development
  2. Run pn test all

Please report any issues found as new issues. Thanks.

Support `webassembly`

I would like to make it easy to also support webassembly apps converted via pn convert.

Accept Criteria

  • [] All reference apps can be pn converted to webassembly.
    • Might require some refactoring.
  • [] pn serve --webassembly serves the apps as web assembly apps
  • [] pn create examples includes the pn converted apps and an examples/wapps folder.

Mature docstrings

The module, class and function docstrings should be reviewed and updated where appropriate.

Accept Criteria

  • [] Contains examples where relevant
  • [] Useful for users when used from the terminal via pn.
  • [] Useful for developers when used in IDE like VS Code.

Some meaningful title

Description

This does not work

awesome-panel-bar

Reproduction steps

1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

Code

import panel as pn

Logs

remote: 
remote: Create a pull request for 'feature/template' on GitHub by visiting:
remote:      https://github.com/awesome-panel/awesome-panel-cli/pull/new/feature/template
remote: 
To https://github.com/awesome-panel/awesome-panel-cli.git

Requirements

panel==0.13.1

Add Github actions for building, testing and deploying this project

I would like to have the process for building, testing and deploying the awesome-panel-cli package automated via Github actions to enable more contributors and to professionalize the project.

  • [] github actions added.
    • It should use pn commands for every step such that they can be repeated locally with ease.
  • [] documented
  • [] badges for tests and test coverage etc added to README.

Some commands fails but reports success

Some pn commands will report success even when they fail.

  • [] pn build package
  • [] pn release package

Reproducible Example

Try to upload a package twice to test pypi

$ pn release package 0.1.0 --test
[09:33:31] INFO     running: python -m twine upload dist/*0.1.0* --repository testpypi                                                                                                                  shared.py:33
Uploading distributions to https://test.pypi.org/legacy/
Enter your username: MarcSkovMadsen
WARNING  Error getting password from keyring                                                                                                                                                                        
         Traceback (most recent call last):                                                                                                                                                                         
           File "/home/jovyan/repos/private/awesome-panel/awesome-panel-cli/.venv/lib/python3.9/site-packages/twine/auth.py", line 74, in get_password_from_keyring                                                 
             return cast(str, keyring.get_password(system, username))                                                                                                                                               
           File "/home/jovyan/repos/private/awesome-panel/awesome-panel-cli/.venv/lib/python3.9/site-packages/keyring/core.py", line 55, in get_password                                                            
             return get_keyring().get_password(service_name, username)                                                                                                                                              
           File "/home/jovyan/repos/private/awesome-panel/awesome-panel-cli/.venv/lib/python3.9/site-packages/keyring/backends/fail.py", line 25, in get_password                                                   
             raise NoKeyringError(msg)                                                                                                                                                                              
         keyring.errors.NoKeyringError: No recommended backend was available. Install a recommended 3rd party backend package; or, install the keyrings.alt package if you want to use the non-recommended backends.
         See https://pypi.org/project/keyring for details.                                                                                                                                                          
Enter your password: 
Uploading awesome_panel_cli-0.1.0-py3-none-any.whl
100% โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” 37.8/37.8 kB โ€ข 00:00 โ€ข 50.9 MB/s
WARNING  Error during upload. Retry with the --verbose option for more details.                                                                                                                                     
ERROR    HTTPError: 400 Bad Request from https://test.pypi.org/legacy/                                                                                                                                              
         File already exists. See https://test.pypi.org/help/#file-name-reuse for more information.                                                                                                                 
[09:33:42] ERROR    failed: python -m twine upload dist/*0.1.0* --repository testpypi                                                                                                                   shared.py:37
           INFO     Package build finished with success 

Add awesome-panel-cli docs

I would like to have docs available on read the docs to help users of this package.

Accept Criteria

  • [] Sphinx Docs
  • [] Furo theme
  • [] Basic docs files written
  • [] Docs deployed to read the docs
  • [] The relevant sphinx commands added to the awesome-panel-cli
  • [] docs folder added to project template
  • [] General concept for docs as commands in the awesome-panel-cli, for example pn docs build, pn docs rebuild, pn docs serve.
  • [] General concept for testing docs added as pn test docs or similar.
  • [] Automated testing of docs added to github actions.

Add reference components

I would like to be able easily create the following reference components using pn create component

  • [] view (i.e. just a function taking some arguments)
  • [] viewer_widget
  • [] viewer_pane
  • [] viewer_layout
  • [] reactive_html_widget
  • [] reactive_html_pane
  • [] reactive_html_layout
  • [] bokeh_widget
  • [] bokeh_pane
  • [] bokeh_layout
  • [] template
  • [] data_service (Extract, Validate, Transform, Validate) component.

Ideally, I would like to have some concept for creating great reusable components that separates the concerns of the

  • view
  • logic
  • state

See for example High level view and logic separation in React.

The concept must be useful for beginning, low code data app developers too, i.e. not overly abstracted or complicated.

References

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.