Giter Club home page Giter Club logo

pypi-command-line's Introduction

pypi-command-line

pypi-command-line is a colorful, powerful, and beautiful command line interface for pypi.org that is actively maintained

Detailed Documentation available at https://wasi-master.github.io/pypi-command-line/

Features

  • ๐Ÿš€ Extremely intuitive and easy to use.
  • ๐ŸŒŸ Beautiful UI with pleasant colors everywhere.
  • ๐Ÿ˜ Emojis in responses and errors.
  • ๐Ÿ“ฐ Great Markdown and reStructuredText support for viewing project descriptions.
  • ๐Ÿ˜Ž Many features (There are optional parameters for extra information too!).
  • ๐Ÿ’ป Cross-platform.
  • ๐Ÿคฏ Open source.
  • ๐Ÿ“š Extensive documentation.

Info

Hide Info

Download Count

I've included both PePy and PyPIStats since PyPIStats by default does not include mirrors in it's count1. Also see psincraian/pepy#351

Period From PePy From PyPiStats
Day Downloads yesterday
Week Downloads Downloads in the last 7 days
Month Downloads Downloads in the last 30 days
Total Downloads

Meta

Title Badge
Version Version
Wheel availability PyPI Wheel availability
Supported python versions Supported python versions
Python Implementation Python Implementation

GitHub

Title Badge
Number of issues open Number of issues open
Number of issues closed Number of issues closed
Number of pull requests Number of pull requests
Number of stars Number of stars on GitHub

Misc

Title Badge
Documentation status Documentation status
Lines of code Lines of code

Screenshots

Click to hide screenshots

Command name and parameter autocompletion Autocomplete Smart error handling Error Handling Auto command aliases Smart Command Aliasing Search feature that gives the same results as on PyPI Search for a package using PyPI See detailed information about a project See project information View the project description right in your terminal with rich Markdown and reStructuredText formatting Get description from PyPI View the project readme from github Get readme content from GitHub Search for packages using regular expressions Search for packages using regex Open the package's URLs gotten from PyPI Browse for URLs See the project information with classifiers See project information with classifiers See the all time largest projects in PyPI See all time largest projects in PyPI Install autocompletion for the current shell Install Completion See the source code for the autocompletion Show Completion See a specific page of the search results Specify a page to search to

Installation

  • Installing from PyPI (recommended).

    pip install pypi-command-line

    If you want to also install speed dependencies

    pip install "pypi-command-line[speedups]"
  • Installing from source.

    pip install git+https://github.com/wasi-master/pypi-command-line.git

    If you want to also install speed dependencies

    pip install "pypi-command-line[speedups] @ git+https://github.com/wasi-master/pypi-command-line.git"

Usage

To see all the available commands use:

pypi --help

For more information on a certain command use pypi <command_name> --help. For example,

pypi search --help

For a full guide see https://wasi-master.github.io/pypi-command-line/usage.

Alternatives

Now this probably was the best option before pypi-command-line came out and it does have some flaws. The information command of pypi-cli is pretty minimal, there's no way of seeing the github information, The download count doesn't work properly, the long descriptions aren't formatted at all with pypi-cli. pypi-cli uses the xml-rpc[?] API that is discontinued So the search feature doesn't work anymore, . The stat command is broken and is badly formatted for screens that are not ultra wide. And the project is unmaintained and archived

TL;DR The stat and search commands don't work anymore, the information command kinda works but the download count doesn't work, can't see github information, descriptions are raw.

So this can just search for packages on pypi and that's it. Now don't you think that this is inherently bad as per se. So I tried it out immediately and it just got stuck loading the packages, pypi-client gets names of all the packages that exist pypiโ€พ which took like 4 mins, then I assume it downloads the github stars data?โ€พ Which takes like another 3 mins and then It just asked me to authorize with githubโ€ฆ like why does pypi-client even need authorization from me since github has a public api. And then it showed this which isn't really unreadable just badly formatted for screens that are not ultra wide. by changing the font size a bit I could make it look like this which still isn't bad just a bit convoluted. And even at the end of the day the results are manually searched through therefore different from pypiโ€พ

TL;DR: Takes too long (โ‰ˆ7 mins), Needs github authorization, badly formatted for non ultra wide monitors, searches manually so results are different compared to pypi

Discontinued 9 years ago, only supports python 2. Uses flags instead of subcommands for everything.

TL;DR: Is this really necessary?

So, this library is most likely the best alternative for pypi-command-line. But the output is in json, uses the xml-rpc api for search which is discontinued, the readme command doesn't work for me, the list command doesn't have a progressbar

TL;DR: Output is only in json, without color. The search command doesn't work anymore. Has no progressbar for long running tasks

pypi-command-line's People

Contributors

dependabot[bot] avatar hemzaz avatar henryiii avatar imgbotapp avatar kianmeng avatar szepeviktor avatar wasi-master avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar

pypi-command-line's Issues

[BUG] ...

Describe the bug

If a package isn't installed the version command errors out instead of notifying the user

To Reproduce

Use the version command with the --show-installed-version flag on a package that you have not yet installed

Expected behavior

It should show an error message to the user

Additional context

To fix, in the line

remove pass and set version_info to None
then add a check for if the version_info is none or it has a value and if it is none then show an error message, simple
version_info = f" [dark_orange](Installed Version: {installed_version})[/]"
output = f"Top {limit} latest versions of [green]{package_name}[/]{version_info if show_installed_version else ''}{' [yellow](excluding pre-releases)[/]' if no_pre_releases else ''}:\n"

or version_info could be set to "Could not find version" and then show it always

[Feature Request] Some way to see all wheels available for a package

Is your feature request related to a problem? Please describe.

I'd like to easily see what platforms are covered by wheels on the latest (or selectable) release.

Describe the solution you'd like

Many a new command (unless it's covered by the ones here) that lists either the wheel names, or perhaps some enhanced view of the tags (some wheels may have multiple tags). It might be really nice to colorize the wheel(s) that match the current platform specially, as well the SDist.

Describe alternatives you've considered
Happy if this is already possible.

Additional context
For example, pipx run --spec pypi-command-line pypi <command> numpy.

PS: Is there a way to escape browse without picking a choice?
PS: What size is listed for releases? numpy's sizes per release don't make sense, unless that's the best matching wheel? Maybe that's what that is.

[BUG] GitHub info pane does not always show correct GitHub info if project README contains links to other GitHub repos

First, just wanted to say thank for the very useful utility! It's especially impressive given your age. Well done!

Describe the bug
The GitHub info pane produced by pypi info does not always show the correct info as the script is grabbing the wrong GitHub link from project README.

To Reproduce
Steps to reproduce the behavior:

  1. Use the command pypi info osxphotos
  2. See
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ GitHub โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Name: pipxproject/pipx   โ”‚
โ”‚ Size: 2,993 KB           โ”‚
โ”‚ Stargazers: 4,191        โ”‚
โ”‚ Issues/Pull Requests: 89 โ”‚
โ”‚ Forks: 199               โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

Which is the GitHub info for pipx not osxphotos.

Also, try pypi info osxmetadata which shows this for the GitHub info:

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ GitHub โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Name: python/black        โ”‚
โ”‚ Size: 5,863 KB            โ”‚
โ”‚ Stargazers: 23,296        โ”‚
โ”‚ Issues/Pull Requests: 347 โ”‚
โ”‚ Forks: 1,477              โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

Expected behavior
Expected to see the GitHub info for the project instead of a different project. This info is correctly shown by pypi.org.

Screenshots
pypi info osxphotos

Screen Shot 2021-10-22 at 6 47 08 AM

Same info from pypi.org

Screen Shot 2021-10-22 at 6 46 36 AM

pypi info osxmetadata

Screen Shot 2021-10-22 at 6 45 43 AM

Same info from pypi.org

Screen Shot 2021-10-22 at 6 46 10 AM

Desktop (please complete the following information):

  • OS: macOS
  • Browser Firefox
  • Version 10.15.7

Additional context
I believe the problem occurs when the project README contains a link to a GitHub repo that is not the repo for the project. This is quite common. For example, in the examples above, the project README contains a badge for code style black:
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/python/black)

And also instructions to use pipx for installation and these GitHub repos are getting grabbed as the source repo for the package in these lines:

repo = re.findall(
r"https://(www\.)?github\.com/([A-Za-z0-9_.-]{0,38}/[A-Za-z0-9_.-]{0,100})(?:\.git)?",
str(info),
)
repo = remove_dot_git(repo[0][1]) if repo else None

pypi.org does correctly parse the GitHub info so perhaps you can grab the data there or parse it the same they do. Both the projects in question, do contain a GitHub link in their project setup.py:

https://github.com/RhetTbull/osxphotos/blob/0e9b9d625190b94c1dd68276e3b0e5367002d87c/setup.py#L60

[BUG] TypeError: Command.__init__() got an unexpected keyword argument 'rich_markup_mode'

Describe the bug

This doesn't work anymore.

To Reproduce

Steps to reproduce the behavior:

  1. Use the command pipx run 'pypi-command-line'.
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Traceback (most recent call last) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ <string>:3 in <module>                                                                           โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚
โ”‚ โ”‚ __annotations__ = {}                                                                         โ”‚ โ”‚
โ”‚ โ”‚    __builtins__ = <module 'builtins' (built-in)>                                             โ”‚ โ”‚
โ”‚ โ”‚         __doc__ = None                                                                       โ”‚ โ”‚
โ”‚ โ”‚      __loader__ = <class '_frozen_importlib.BuiltinImporter'>                                โ”‚ โ”‚
โ”‚ โ”‚        __name__ = '__main__'                                                                 โ”‚ โ”‚
โ”‚ โ”‚     __package__ = None                                                                       โ”‚ โ”‚
โ”‚ โ”‚        __spec__ = None                                                                       โ”‚ โ”‚
โ”‚ โ”‚        pypi_cli = <module 'pypi_cli' from                                                    โ”‚ โ”‚
โ”‚ โ”‚                   '/Users/henryschreiner/.local/pipx/.cache/f20bc60165213c2/lib/python3.10/โ€ฆ โ”‚ โ”‚
โ”‚ โ”‚             sys = <module 'sys' (built-in)>                                                  โ”‚ โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /Users/henryschreiner/.local/pipx/.cache/f20bc60165213c2/lib/python3.10/site-packages/pypi_cli/_ โ”‚
โ”‚ _main__.py:1463 in run                                                                           โ”‚
โ”‚                                                                                                  โ”‚
โ”‚   1460                                                                                           โ”‚
โ”‚   1461 def run():                                                                                โ”‚
โ”‚   1462 โ”‚   """Run the CLI."""                                                                    โ”‚
โ”‚ โฑ 1463 โ”‚   app()                                                                                 โ”‚
โ”‚   1464                                                                                           โ”‚
โ”‚   1465                                                                                           โ”‚
โ”‚   1466 if __name__ == "__main__":                                                                โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /Users/henryschreiner/.local/pipx/.cache/f20bc60165213c2/lib/python3.10/site-packages/typer/main โ”‚
โ”‚ .py:328 in __call__                                                                              โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /Users/henryschreiner/.local/pipx/.cache/f20bc60165213c2/lib/python3.10/site-packages/typer/main โ”‚
โ”‚ .py:311 in __call__                                                                              โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /Users/henryschreiner/.local/pipx/.cache/f20bc60165213c2/lib/python3.10/site-packages/typer/main โ”‚
โ”‚ .py:350 in get_command                                                                           โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /Users/henryschreiner/.local/pipx/.cache/f20bc60165213c2/lib/python3.10/site-packages/typer/main โ”‚
โ”‚ .py:332 in get_group                                                                             โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /Users/henryschreiner/.local/pipx/.cache/f20bc60165213c2/lib/python3.10/site-packages/typer/main โ”‚
โ”‚ .py:483 in get_group_from_info                                                                   โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /Users/henryschreiner/.local/pipx/.cache/f20bc60165213c2/lib/python3.10/site-packages/typer/main โ”‚
โ”‚ .py:579 in get_command_from_info                                                                 โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
TypeError: Command.__init__() got an unexpected keyword argument 'rich_markup_mode'

Information (please try to complete the following information):

  • OS : macOS
  • Terminal : iTerm
  • Shell : fish
  • OS Version : latest
  • Python Version : 3.10
  • Package Versions : latest (via pipx)

Additional context

Possibly a rich or typer update? Typer is 0.6.1 and rich 12.5.1.

[BUG] shell usage assumes the command is on the path

Describe the bug

If you run pipx run pypi-command-line, you get a choice of what to do. If you select Run 'pypi-command-line --help', it fails because the path is not set up to run pypi (and pypi-command-line isn't a script, but that's not the problem). Instead, it should trigger the help directly, rather than running an expensive and fragile subprocess.

To Reproduce
Steps to reproduce the behavior:

  1. pipx run pypi-command-line (or run this any method without putting pypi on the path)
  2. Press enter

Expected behavior
It shouldn't fail.

Additional context

pipx run --spec pypi-command-line pypi fails too, giving Run 'pypi --help' but it's still not on the path.

[Feature Request] Support custom pypi registries

Is your feature request related to a problem/bug/intentional feature? Please describe if it is.

In many environments, users go to a proxy instead of directly to pypi.org. They also may be supplementing internal packages in their private registries. pip supports this by way of .pypirc, pip.conf/pip.ini and $PIP_INDEX_URL, but this project seems to ignore those settings and always uses pypi.org.

Describe the solution you'd like.

Ideally, the project would pay attention to the same configuration as pip and check the expected repositories instead of always using pypi.org.

Describe alternatives you've considered if there are any.

A direct command-line switch to override the repository URL would be marginally useful in lieu of directly using pip config files.

Additional context if applicable

You can see what pip checks by calling pip config list -v:

# pip config list -v
For variant 'global', will try loading '/etc/xdg/pip/pip.conf'
For variant 'global', will try loading '/etc/pip.conf'
For variant 'user', will try loading '/home/user/.pip/pip.conf'
For variant 'user', will try loading '/home/user/.config/pip/pip.conf'
For variant 'site', will try loading '/usr/pip.conf'

[Feature Request] Ability to show python package releases for python interpreter

Is your feature request related to a problem/bug/intentional feature? Please describe if it is.

Ability to view when your project dependencies have updated/changed.

Describe the solution you'd like.

pypi history --python env/bin/python --limit 1

# nested tree entries for version when limit > 1 else inline at the root level for the tree
- X - 1.2.0 3 hours ago (Sat Oct 23 11:00:04 2021)
- A - 1.0.0 5 days ago (Sat Oct 23 11:00:04 2021) 

would display in reverse chronological order the latest release for all packages found in the env/bin/python interpreter. Bonus point for showing the last n releases, where n is a CLI argument.

[BUG] KeyError: 'size' for

Traceback:

โฏ pypi info pypi-command-line
โ„น๏ธ Info: Found shortened name 'info', using 'information'
Traceback (most recent call last):
  File "C:\Program Files\Python 3.8\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Program Files\Python 3.8\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\Wasi Master\AppData\Local\Python38\Scripts\pypi.exe\__main__.py", line 7, in <module>
  File "C:\Users\Wasi Master\AppData\Local\Python38\site-packages\pypi_cli\__main__.py", line 1469, in run
    app()
  File "C:\Users\Wasi Master\AppData\Local\Python38\site-packages\typer\main.py", line 214, in __call__
    return get_command(self)(*args, **kwargs)
  File "C:\Users\Wasi Master\AppData\Local\Python38\site-packages\click\core.py", line 1137, in __call__
    return self.main(*args, **kwargs)
  File "C:\Users\Wasi Master\AppData\Local\Python38\site-packages\click\core.py", line 1062, in main
    rv = self.invoke(ctx)
  File "C:\Users\Wasi Master\AppData\Local\Python38\site-packages\click\core.py", line 1668, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "C:\Users\Wasi Master\AppData\Local\Python38\site-packages\click\core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "C:\Users\Wasi Master\AppData\Local\Python38\site-packages\click\core.py", line 763, in invoke
    return __callback(*args, **kwargs)
  File "C:\Users\Wasi Master\AppData\Local\Python38\site-packages\typer\main.py", line 500, in wrapper
    return callback(**use_params)  # type: ignore
  File "C:\Users\Wasi Master\AppData\Local\Python38\site-packages\pypi_cli\__main__.py", line 989, in information
    size = github_data["size"]
KeyError: 'size'

[BUG] pypi desc doesn't render for images without alt

Describe the bug

It does not work for images without a alt text because it does not have anything to display

To Reproduce

Steps to reproduce the behavior:

  1. Use the command pypi desc wheel_filename
  2. See an error

Expected behavior

Well it should not error

Information (please try to complete the following information):

  • OS : 10
  • Terminal : Windows Terminal
  • Shell : powershell
  • OS Version : 21H2 (OS Build 19044.1320
  • Python Version : 3.8.10
  • Package Versions :-
    bs4==0.0.1
    click==8.0.1
    click-help-colors==0.9.1
    humanize==3.12.0
    lxml==4.6.3
    packaging==21.2
    questionary==1.10.0
    requests==2.24.0
    requests-cache==0.8.1
    rich==10.12.0
    rich-rst==0.2.3
    shellingham==1.4.0
    thefuzz==0.19.0
    typer==0.4.0
    wheel-filename==1.3.0

Additional context

Traceback:

โฏ pypi desc wheel-filename
โ„น๏ธ Info: Found shortened name 'desc', using 'description'
Traceback (most recent call last):
  File "C:\Program Files\Python 3.8\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Program Files\Python 3.8\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\Wasi Master\AppData\Programs\Python38\Scripts\pypi.exe\__main__.py", line 7, in <module>
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\pypi_cli\__main__.py", line 1469, in run
    app()
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\typer\main.py", line 214, in __call__
    return get_command(self)(*args, **kwargs)
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\click\core.py", line 1137, in __call__
    return self.main(*args, **kwargs)
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\click\core.py", line 1062, in main
    rv = self.invoke(ctx)
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\click\core.py", line 1668, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\click\core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\click\core.py", line 763, in invoke
    return __callback(*args, **kwargs)
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\typer\main.py", line 500, in wrapper
    return callback(**use_params)  # type: ignore
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\pypi_cli\__main__.py", line 608, in description
    console.print(Panel(description, title=f"Description for {package_name}", border_style="bold magenta"))
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\rich\console.py", line 1594, in print
    extend(render(renderable, render_options))
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\rich\console.py", line 1225, in render
    for render_output in iter_render:
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\rich\panel.py", line 176, in __rich_console__
    lines = console.render_lines(renderable, child_options, style=style)
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\rich\console.py", line 1260, in render_lines
    lines = list(
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\rich\segment.py", line 269, in split_and_crop_lines
    for segment in segments:
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\rich\console.py", line 1225, in render
    for render_output in iter_render:
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\rich\padding.py", line 92, in __rich_console__
    lines = console.render_lines(
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\rich\console.py", line 1260, in render_lines
    lines = list(
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\rich\segment.py", line 269, in split_and_crop_lines
    for segment in segments:
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\rich\console.py", line 1225, in render
    for render_output in iter_render:
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\rich_rst\__init__.py", line 160, in __rich_console__
    document.walkabout(visitor)
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\docutils\nodes.py", line 214, in walkabout
    if child.walkabout(visitor):
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\docutils\nodes.py", line 214, in walkabout
    if child.walkabout(visitor):
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\docutils\nodes.py", line 206, in walkabout
    visitor.dispatch_visit(self)
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\docutils\nodes.py", line 1995, in dispatch_visit
    return method(node)
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\rich_rst\__init__.py", line 107, in visit_image
    Text("๐ŸŒ† ") + Text(node["alt"], style=Style(link=target or node.get("uri"), color="#6088ff"))
  File "C:\Users\Wasi Master\AppData\Programs\Python38\site-packages\docutils\nodes.py", line 625, in __getitem__
    return self.attributes[key]
KeyError: 'alt'

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.