pls is a better ls for developers, pronounced /pliːz/ as in 'please'

Related tags

CLI Tools python cli ls
Overview

pls on PyPI Python versions GPL-3.0

Demo of `pls`

pls is a better ls for developers. The "p" stands for ("pro" as in "professional"/"programmer") or "prettier".

It works in a manner similar to ls, in that it lists directories and files in a given directory, but it adds many more developer-friendly features.

Note that pls is not a replacement for ls. ls is a tried, tested and trusted tool with lots of features. pls, on the other hand, is a simple tool for people who just want to see the contents of their directories.

Features

pls provides many features over ls command. pls can:

  • show Nerd Font icons or emoji next to files and directories making it easier to grep the output
  • colour output to elevate important files or dim unimportant ones
  • use a more nuanced approach to hidden files than plainly hiding files with a leading dot .
  • group directories and shows them all before files
  • ignore leading dots . and normalise case when sorting files
  • align files names by first character
  • cascade formatting rule specs by based on specificity levels
  • read .pls.yml files from the directory to augment its configuration
  • show more details like permissions, owner and size in columns
  • run quite fast, thanks to multiprocessing

The icon, color and most behaviour in the application can be configured using plain-text YAML files for the pros who prefer to tweak their tools.

Upcoming features

In the future pls will be able to

  • generate visibility rules by parsing .gitignore
  • add MIME type as another method for matching files to specs
  • use complete path based matching for files
  • link files and hide derived files behind the main ones
  • generate tree-like output for subdirectories

If you want to help implement any of these features, feel free to submit a PR. pls is free and open-source software.

Comparison with similar tools

There are a lot of ls replacements. Here are some of the most popular ones.

pls aims to stand out because of some very specific choices.

  • Does not intend to replace ls. pls, as a command, is just as easy to type.
  • Targets a more tech-savvy audience in its features.
  • Intelligently maps file type. Just comparing the file extension would be too generic.
  • Meticulously chosen iconography for the appreciating eyes.
  • Highly customisable at a project level using a simple .pls.yml file.
  • Built in a friendly language, Python. This makes it easy to fork and change it yourself.

Installation

To get the best of pls, install a Nerd Font on your computer. Nerd Fonts come patched with many icons from different popular icon sets. If you're a "pro" (the target audience for pls) these fonts are basically a must.

pls is a pure-Python codebase and is deployed to PyPI. So installing it on any system with a supported Python version is quite straightforward.

$ python3 -m pip install --user pls

There are no native packages yet.

Usage

pls has a very simple API with easy to memorise flags. There are no mandatory arguments. Just run pls anywhere on your disk.

$ pls

There are a few optional arguments and flags you can use to tweak the behaviour. You can see the complete list of arguments and their description by passing the --help or -h flags.

$ pls --help

Directory

The only positional argument is a directory. Pass this to see the contents of a different folder rather than the current working directory.

$ pls path/to/somewhere/else

Icons

pls supports many icons for popular languages out of the box and will show icons by default. If you don't have a Nerd Font (why?), you can switch to emoji icons using --icons emoji or -iemoji. Be warned they are quite bad. If you are a sad person, you turn icons off using --icon none or -inone.

Note: The built-in icon configuration is intentionally lean. The whole idea is for pls to be customisable by you.

Filtering

You can choose to hide files or folders from the output using --no-files and --no-dirs respectively. Passing both will lead to a blank output. On the other hand if you want to see files and directories that pls would not show otherwise, pass --all.

Sorting

By default pls will place all directories first, followed by files with both sorted alphabetically from A to Z. You can prevent folders from being first by passing the --no-dirs-first flag. You can change the sort to go from Z to A using --sort desc or -sdesc. Leading dots are ignored during sorting.

Alignment

A lot of code related files start with a leading dot . for no valid reason. pls by default

  • moves their name left by one character to line up the actual alphabets
  • dims their leading dot

If you don't like this, you can set --no-align to turn off all this behaviour in one swoop.

Details

When you need more infomation about your files, pass the --details flag. This expands the list into a table, with

  • permissions
  • owner name
  • size

added to the output. The permissions are presented as rwx triplets. The size is presented in binary compound-units (the ones with the "i" like "*iB"). You can switch to decimal units by passing --units decimal or -udecimal. This flag has no effect unless the --detail flag is passed too.

Comments
  • Git file with space raise exception

    Git file with space raise exception

    Description

    File in git repo with space, shlex.split() make a longer list than accepted by PLS.

    Reproduction

    Create the file

    mkdir test
    cd test
    git init
    touch "file.txt badly formatted with more word than the 3 accepted by the code"
    

    Just run pls and it raise ExecException: Could not parse Git status code.

    The status can be wrong if components == 3

    Expectation

    Do not raise exception, perhaps log warning. And have a better split.

    Resolution

    • [x] 🙋 I would be interested in resolving this bug.
    ✨ goal: improvement help wanted 
    opened by PTank 5
  • Traps on out-of-tree absolute symlinks

    Traps on out-of-tree absolute symlinks

    The following two commands make pls trapped:

    $ mkdir -p /tmp/dir/qq
    $ ln -s /tmp/dir/qq pp
    $ pls
    Traceback (most recent call last):
      File "/home/george/venv/_pls/bin/pls", line 8, in <module>
        sys.exit(main())
      File "/home/george/venv/_pls/lib64/python3/site-packages/pls/main.py", line 16, in main
        node_map, node_list = read_input()
      File "/home/george/venv/_pls/lib64/python3/site-packages/pls/fs/list.py", line 82, in read_input
        node_list.sort(key=sort_key, reverse=args.sort.endswith("-"))
      File "/home/george/venv/_pls/lib64/python3/site-packages/pls/fs/list.py", line 26, in sort_key
        key = node.sort_keys[args.sort.rstrip("-")]
      File "/usr/lib64/python3.10/functools.py", line 981, in __get__
        val = self.func(instance)
      File "/home/george/venv/_pls/lib64/python3/site-packages/pls/models/node.py", line 207, in sort_keys
        "type": self.type_char,
      File "/usr/lib64/python3.10/functools.py", line 981, in __get__
        val = self.func(instance)
      File "/home/george/venv/_pls/lib64/python3/site-packages/pls/models/mixins/type.py", line 50, in type_char
        return type_char_map[self.node_type]
      File "/usr/lib64/python3.10/functools.py", line 981, in __get__
        val = self.func(instance)
      File "/home/george/venv/_pls/lib64/python3/site-packages/pls/models/mixins/type.py", line 41, in node_type
        self.populate_dest()
      File "/home/george/venv/_pls/lib64/python3/site-packages/pls/models/mixins/type.py", line 69, in populate_dest
        self.dest_node = self.__class__(name=link_path, path=link)
      File "/home/george/venv/_pls/lib64/python3/site-packages/pls/models/mixins/git.py", line 28, in __init__
        self.path_wrt_git = self.path.relative_to(state.git_root)
      File "/usr/lib64/python3.10/pathlib.py", line 816, in relative_to
        raise ValueError("{!r} is not in the subpath of {!r}"
    ValueError: '/tmp/dir/qq' is not in the subpath of '/home/george' OR one path is relative and the other is absolute.
    
    
    opened by FrBrGeorge 5
  • Support generic folder/directory color and icon changes

    Support generic folder/directory color and icon changes

    Problem

    Forgive me for opening another issue so quickly! This is an excellent application, and I've been enjoying using it. I can't seem to find documentation about how to change the default directory icon or color.

    I have tried an extension node with an empty string, and a pattern node which looks for \ or / at the end of the name. Neither have worked, and without any examples in the documentation, I'm assuming this idea is not supported at the moment.

    Description

    It would be very nice to be able to specify directories either by pattern or extension, or some other mechanism within .pls.yml. This would allow the user to change the default directory color or icon.

    Alternatives

    What I am trying to do is match the color output of pls to the color output of ls, which uses the LS_COLORS environmental variable. pls could make the default output colors use this variable, but it is not always set for users. On macOS, it is only used if the users use the GNU-based ls, for example. I think a simpler solution would be to make it easier to change directory colors, and allow the user to input any other extensions or patterns they want. That part is already very simple thanks to the excellent config!

    Additional context

    My apologies if this is already supported! I looked long and hard through the documentation but failed to find the solution to this.

    Implementation

    • [ ] 🙋 I would be interested in implementing this feature.
    🟨 priority: medium ✨ goal: improvement 
    opened by acbuie 4
  • pls doesn't work even if I set PYTHONIOENCODING

    pls doesn't work even if I set PYTHONIOENCODING

    Description

    Installed pls via the pip --user install.

    Specifically:

    pip install --user --upgrade pls

    When I run it complains about You may need to add PYTHONIOENCODING=utf-8 to your environment and even if I do that, it doesn't work.

    Reproduction

    using zsh

    1. export PYTHONIOENCODING=utf8
    2. pls (gives error)
    3. export PYTHONIOENCODING=utf-8
    4. pls (gives error)
    5. export PYTHONIOENCODING="utf-8"
    6. pls (gives error)
    7. export PYTHONIOENCODING="utf8"
    8. pls (gives error)

    Expectation

    pls to run without error

    Environment

    • Device: Desktop
    • OS: Fedora 34
    • Browser: N/A
    • Version: pls 1.11.1
    • Other info:

    Additional context

    the actual commands/errors:

    $ export PYTHONIOENCODING=utf-8 $ pls
    Traceback (most recent call last): File "/home/ermesa/.local/bin/pls", line 8, in sys.exit(main()) File "/home/ermesa/.local/lib/python3.9/site-packages/pls/main.py", line 31, in main write_output(node_list) File "/home/ermesa/.local/lib/python3.9/site-packages/pls/table/table.py", line 116, in write_output console.print(table) File "/home/ermesa/.local/lib/python3.9/site-packages/rich/console.py", line 1637, in print self._buffer.extend(new_segments) File "/home/ermesa/.local/lib/python3.9/site-packages/rich/console.py", line 837, in exit self._exit_buffer() File "/home/ermesa/.local/lib/python3.9/site-packages/rich/console.py", line 795, in _exit_buffer self._check_buffer() File "/home/ermesa/.local/lib/python3.9/site-packages/rich/console.py", line 1929, in _check_buffer self.file.write(text) UnicodeEncodeError: 'utf-8' codec can't encode character '\udccf' in position 99: surrogates not allowed *** You may need to add PYTHONIOENCODING=utf-8 to your environment ***

    Resolution

    • [ ] 🙋 I would be interested in resolving this bug.
    opened by djotaku 4
  • Exception on Windows PowerShell7

    Exception on Windows PowerShell7

    I don't know if it has compatibility with pwsh (PowerShell 7.2.1), but it would be nice.

    ❯ pls
    Traceback (most recent call last):
      File "C:\Users\fernando\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
        return _run_code(code, main_globals, None,
      File "C:\Users\fernando\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in _run_code
        exec(code, run_globals)
      File "C:\Users\fernando\AppData\Roaming\Python\Python310\Scripts\pls.exe\__main__.py", line 7, in <module>
      File "C:\Users\fernando\AppData\Roaming\Python\Python310\site-packages\pls\main.py", line 16, in main
        nodes = read_input()
      File "C:\Users\fernando\AppData\Roaming\Python\Python310\site-packages\pls\fs\list.py", line 82, in read_input
        all_nodes.sort(key=sort_key, reverse=args.sort == SortOrder.DESC)
      File "C:\Users\fernando\AppData\Roaming\Python\Python310\site-packages\pls\fs\list.py", line 31, in sort_key
        prefix = "0" if node.node_type == NodeType.DIR else "1"
      File "C:\Users\fernando\AppData\Local\Programs\Python\Python310\lib\functools.py", line 981, in __get__
        val = self.func(instance)
      File "C:\Users\fernando\AppData\Roaming\Python\Python310\site-packages\pls\models\node.py", line 82, in node_type
        node_type = get_node_type(self.path)
      File "C:\Users\fernando\AppData\Roaming\Python\Python310\site-packages\pls\fs\stats.py", line 130, in get_node_type
        raise ExecException("Could not determine type of the node.")
    pls.exceptions.ExecException: Could not determine type of the node.
    
    opened by fcrespo82 4
  • 1.6.0. Crashes with broken symlink

    1.6.0. Crashes with broken symlink

    Steam uses a broken symlink in the home folder for backwards compatibility:

    .steampath -> /home/username/.steam/sdk32/steam
    

    pls crashes while trying to read this

    multiprocessing.pool.RemoteTraceback: 
    """
    Traceback (most recent call last):
      File "/usr/lib/python3.10/multiprocessing/pool.py", line 125, in worker
        result = (True, func(*args, **kwds))
      File "/usr/lib/python3.10/multiprocessing/pool.py", line 48, in mapstar
        return list(map(*args))
      File "/usr/lib/python3.10/site-packages/pls/fs/list.py", line 43, in parse_nodes
        return Node(node_name, path=node_path)
      File "/usr/lib/python3.10/site-packages/pls/models/node.py", line 26, in __init__
        self.stat = path.stat()
      File "/usr/lib/python3.10/pathlib.py", line 1095, in stat
        return self._accessor.stat(self, follow_symlinks=follow_symlinks)
    FileNotFoundError: [Errno 2] No such file or directory: '/home/username/.steampath'
    """
    
    The above exception was the direct cause of the following exception:
    
    Traceback (most recent call last):
      File "/usr/bin/pls", line 33, in <module>
        sys.exit(load_entry_point('pls==1.6.0', 'console_scripts', 'pls')())
      File "/usr/lib/python3.10/site-packages/pls/main.py", line 16, in main
        nodes = read_input()
      File "/usr/lib/python3.10/site-packages/pls/fs/list.py", line 55, in read_input
        comp_nodes = pool.map(parse_nodes, all_nodes)
      File "/usr/lib/python3.10/multiprocessing/pool.py", line 364, in map
        return self._map_async(func, iterable, mapstar, chunksize).get()
      File "/usr/lib/python3.10/multiprocessing/pool.py", line 771, in get
        raise self._value
    FileNotFoundError: [Errno 2] No such file or directory: '/home/username/.steampath'
    
    opened by rautesamtr 4
  • Allow for the use of icons from files

    Allow for the use of icons from files

    Problem

    I couldn't find a nerd font icon for excel spreadsheets (.xlsx or .xls), but I found a nice icon I would have liked to use here.

    Description

    My understanding is that this would require 2 things to be implemented:

    1. a pls_assets folder to contain the icon images in either png or svg format
    2. a way to point to the icon image in the .pls.yml configuration file

    I don't know if this is feasible, but it would be great!

    Alternatives

    I couldn't find an alternative way to solve the above problem.

    Implementation

    • [ ] 🙋 I would be interested in implementing this feature.
    🟩 priority: low 🌟 goal: addition 🕹 aspect: interface 
    opened by odebroqueville 3
  • Folder icons render as ? symbols.

    Folder icons render as ? symbols.

    Description

    All the folders have ? icon (attached screenshot) , is this the default icon? Am I missing something?

    Reproduction

    1. pip install pls
    2. type in pls
    3. See the icons.

    Expectation

    Folders should have a icon based on name (for common folders) or have just a folder icon, but seeing question mark.

    Screenshots

    image

    Environment

    • Device: Macbook Pro m1
    • OS: MacOs Monterey (12.5)
    • Version: 5.3.0

    Resolution

    • [ ] 🙋 I would be interested in resolving this bug.
    ❓ talk: question 
    opened by srihari9n 3
  • List contents of multiple directories in one command

    List contents of multiple directories in one command

    Description

    pls * or pls <dir1> <dir2> currently shows the help and an error. It would be great if pls could show the contents of multiple directories in one command like ls can.

    Implementation

    • [ ] 🙋 I would be interested in implementing this feature.
    🟨 priority: medium 🌟 goal: addition 🕹 aspect: interface 
    opened by arjan-s 3
  • OSError in `is_dir` is not catched

    OSError in `is_dir` is not catched

    Description

    is_dir can throw an OSError, which is not catched.

    Traceback (most recent call last):
      File "/home/grzegorzmilka/.local/bin/pls", line 8, in <module>
        sys.exit(main())
      File "/home/grzegorzmilka/.local/pipx/venvs/pls/lib/python3.9/site-packages/pls/main.py", line 102, in main
        node_map, node_list = read_input()
      File "/home/grzegorzmilka/.local/pipx/venvs/pls/lib/python3.9/site-packages/pls/fs/list.py", line 72, in read_input
        node_map = {
      File "/home/grzegorzmilka/.local/pipx/venvs/pls/lib/python3.9/site-packages/pls/fs/list.py", line 75, in <dictcomp>
        if (parsed_node := parse_node(parent_path, node))
      File "/home/grzegorzmilka/.local/pipx/venvs/pls/lib/python3.9/site-packages/pls/fs/list.py", line 38, in parse_node
        if node_path.is_dir():
      File "/usr/lib/python3.9/pathlib.py", line 1439, in is_dir
        return S_ISDIR(self.stat().st_mode)
      File "/usr/lib/python3.9/pathlib.py", line 1232, in stat
        return self._accessor.stat(self)
    OSError: [Errno 126] Required key not available: '/home/grzegorzmilka/target'
    

    Reproduction

    I don't know how to reproduce this. target is a symbolic link to a directory, which is inaccessible at the time of the call.

    Expectation

    No error is thrown. Maybe the directory doesn't get any special symbol or is marked with red.

    Environment

    • Device: Desktop
    • OS: Debian
    • Version: 4.0.1
    🟧 priority: high 🛠 goal: fix 💻 aspect: code 
    opened by gregorias 3
  • unix `ctime` is

    unix `ctime` is "change time" not "creation time"

    Description

    In documentation as well as output, when pls refers to ctime, it characterizes that time as the file's creation time. This is a common misconception. On most unix and unix-like operating systems, ctime is The inode's "change time." In fact I believe there is no POSIX standard to track file creation time (sometimes called birthtime).

    Some filesystems (e.g., APFS & HFS+ on macOS) do report file creation time, where as others (e.g., ext4 on Linux) do not.

    How does that differ from mtime you may ask. mtime (as well as ctime) is updated when the contents of the inode are changed. If only the file's metadata (e.g., ownership, permissions, etc.) are changed, then only the inode's ctime will be updated.

    Reproduction

    1. create a file: e.g., ls -l > listing.txt
    2. stat it
    3. pls -d ctime -d mtime -d atime the file & see the respective times match
    4. chmod +x the file
    5. stat and pls the file as before
    6. see that only ctime has been updated, which is clearly not the file's creation time

    Expectation

    In documentation as well as output ctime should be referred to as "change time" or simply ctime

    Screenshots

    Environment

    maOS:

    ProductName:	macOS
    ProductVersion:	12.3.1
    BuildVersion:	21E258
    

    Ubuntu:

    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=20.04
    DISTRIB_CODENAME=focal
    DISTRIB_DESCRIPTION="Ubuntu 20.04.4 LTS"
    

    Additional context

    Resolution

    • [ ] 🙋 I would be interested in resolving this bug.
    🟧 priority: high 🛠 goal: fix 📄 aspect: text good first issue 
    opened by zcutlip 3
  • Bump gitpython from 3.1.28 to 3.1.30

    Bump gitpython from 3.1.28 to 3.1.30

    Bumps gitpython from 3.1.28 to 3.1.30.

    Release notes

    Sourced from gitpython's releases.

    v3.1.30 - with important security fixes

    See gitpython-developers/GitPython#1515 for details.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    🐍 tech: python 🤖 author: dependabot 
    opened by dependabot[bot] 0
  • Bump setuptools from 65.4.1 to 65.5.1

    Bump setuptools from 65.4.1 to 65.5.1

    Bumps setuptools from 65.4.1 to 65.5.1.

    Changelog

    Sourced from setuptools's changelog.

    v65.5.1

    Misc ^^^^

    • #3638: Drop a test dependency on the mock package, always use :external+python:py:mod:unittest.mock -- by :user:hroncok
    • #3659: Fixed REDoS vector in package_index.

    v65.5.0

    Changes ^^^^^^^

    • #3624: Fixed editable install for multi-module/no-package src-layout projects.
    • #3626: Minor refactorings to support distutils using stdlib logging module.

    Documentation changes ^^^^^^^^^^^^^^^^^^^^^

    • #3419: Updated the example version numbers to be compliant with PEP-440 on the "Specifying Your Project’s Version" page of the user guide.

    Misc ^^^^

    • #3569: Improved information about conflicting entries in the current working directory and editable install (in documentation and as an informational warning).
    • #3576: Updated version of validate_pyproject.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    🐍 tech: python 🤖 author: dependabot 
    opened by dependabot[bot] 0
  • tidied some code using pep rules

    tidied some code using pep rules

    • cleaned up imports
    • simplified conditionals
    • updated an f-string

    Description

    Clean up of code using isort, pylint and flynt

    Checklist

    • [X ] My pull request has a descriptive title (not a vague title like Update index.md).
    • [X ] My pull request targets the default branch of the repository (main) or a parent feature branch.
    • [ X] My commit messages follow best practices.
    • [ X] My code follows the established code style of the repository.
    • [ X] I added or updated tests for the changes I made (if applicable).
    • [ NA] I added or updated documentation (if applicable).
    • [X ] I tried running the project locally and verified that there are no visible errors.

    Developer Certificate of Origin

    Developer Certificate of Origin
    Developer Certificate of Origin
    Version 1.1
    
    Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
    1 Letterman Drive
    Suite D4700
    San Francisco, CA, 94129
    
    Everyone is permitted to copy and distribute verbatim copies of this
    license document, but changing it is not allowed.
    
    
    Developer's Certificate of Origin 1.1
    
    By making a contribution to this project, I certify that:
    
    (a) The contribution was created in whole or in part by me and I
        have the right to submit it under the open source license
        indicated in the file; or
    
    (b) The contribution is based upon previous work that, to the best
        of my knowledge, is covered under an appropriate open source
        license and I have the right under that license to submit that
        work with modifications, whether created in whole or in part
        by me, under the same open source license (unless I am
        permitted to submit under a different license), as indicated
        in the file; or
    
    (c) The contribution was provided directly to me by some other
        person who certified (a), (b) or (c) and I have not modified
        it.
    
    (d) I understand and agree that this project and the contribution
        are public and that a record of the contribution (including all
        personal information I submit with it, including my sign-off) is
        maintained indefinitely and may be redistributed consistent with
        this project or the open source license(s) involved.
    
    opened by marksmayo 1
  • Bump certifi from 2022.9.24 to 2022.12.7

    Bump certifi from 2022.9.24 to 2022.12.7

    Bumps certifi from 2022.9.24 to 2022.12.7.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    🐍 tech: python 🤖 author: dependabot 
    opened by dependabot[bot] 0
  • Bump jsonschema from 4.16.0 to 4.17.3

    Bump jsonschema from 4.16.0 to 4.17.3

    Bumps jsonschema from 4.16.0 to 4.17.3.

    Release notes

    Sourced from jsonschema's releases.

    v4.17.3

    • Fix instantiating validators with cached refs to boolean schemas rather than objects (#1018).
    • Empty strings are not valid relative JSON Pointers (aren't valid under the RJP format).
    • Durations without (trailing) units are not valid durations (aren't valid under the duration format). This involves changing the dependency used for validating durations (from isoduration to isodate).

    Full Changelog: https://github.com/python-jsonschema/jsonschema/compare/v4.17.2...v4.17.3

    v4.17.1

    • The error message when using unevaluatedProperties with a non-trivial schema value (i.e. something other than false) has been improved (#996).

    Full Changelog: https://github.com/python-jsonschema/jsonschema/compare/v4.17.0...v4.17.1

    v4.17.0

    • The check_schema method on jsonschema.protocols.Validator instances now enables format validation by default when run. This can catch some additional invalid schemas (e.g. containing invalid regular expressions) where the issue is indeed uncovered by validating against the metaschema with format validation enabled as an assertion.
    • The jsonschema CLI (along with jsonschema.cli the module) are now deprecated. Use check-jsonschema instead, which can be installed via pip install check-jsonschema and found here.
    • Make ErrorTree have a more grammatically correct repr.

    Full Changelog: https://github.com/python-jsonschema/jsonschema/compare/v4.16.0...v4.17.0

    Changelog

    Sourced from jsonschema's changelog.

    v4.17.3

    • Fix instantiating validators with cached refs to boolean schemas rather than objects (#1018).

    v4.17.2

    • Empty strings are not valid relative JSON Pointers (aren't valid under the RJP format).
    • Durations without (trailing) units are not valid durations (aren't valid under the duration format). This involves changing the dependency used for validating durations (from isoduration to isodate).

    v4.17.1

    • The error message when using unevaluatedProperties with a non-trivial schema value (i.e. something other than false) has been improved (#996).

    v4.17.0

    • The check_schema method on jsonschema.protocols.Validator instances now enables format validation by default when run. This can catch some additional invalid schemas (e.g. containing invalid regular expressions) where the issue is indeed uncovered by validating against the metaschema with format validation enabled as an assertion.
    • The jsonschema CLI (along with jsonschema.cli the module) are now deprecated. Use check-jsonschema instead, which can be installed via pip install check-jsonschema and found here <https://github.com/python-jsonschema/check-jsonschema>_.

    v4.16.1

    • Make ErrorTree have a more grammatically correct repr.
    Commits
    • dbc3982 Fix instantiating validators with cached refs-to-bool schemas.
    • 7ebe161 Try fixing more Sphinx refs which fail only on Ubuntu...
    • cdf0c71 Update pre-commit hooks.
    • e868bfe Durations without trailing units aren't valid durations.
    • 24d1328 Empty strings are not valid relative JSON pointers.
    • bd12369 Minor fix for test case class names (for format tests).
    • fb203a5 Merge commit '97954adeb0fbb3d4499580d897de507d3ab0d919'
    • 97954ad Squashed 'json/' changes from 9251ebff1..78c888273
    • 46fdb98 v4.17.1 -> CHANGELOG
    • 000dd3d Remove making believe we are ReadTheDocs in CI builds.
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    🐍 tech: python 🤖 author: dependabot 
    opened by dependabot[bot] 0
  • Bump ipython from 8.5.0 to 8.7.0

    Bump ipython from 8.5.0 to 8.7.0

    Bumps ipython from 8.5.0 to 8.7.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    🐍 tech: python 🤖 author: dependabot 
    opened by dependabot[bot] 0
Owner
Dhruv Bhanushali
Software Engineer • IIT-R '19
Dhruv Bhanushali
sangha, pronounced "suhng-guh", is a social networking, booking platform where students and teachers can share their practice.

Flask React Project This is the backend for the Flask React project. Getting started Clone this repository (only this branch) git clone https://github

Courtney Newcomer 17 Sep 29, 2021
Svector (pronounced Swag-tor) provides extension methods to pyrsistent data structures

Svector Svector (pronounced Swag-tor) provides extension methods to pyrsistent data structures. Easily chain your methods confidently with tons of add

James Chua 5 Dec 9, 2022
Discord-Lite - A light weight discord client written in Python, for developers, by developers.

Discord-Lite - A light weight discord client written in Python, for developers, by developers.

Sachit 142 Jan 7, 2023
Pls give vaccine.

Pls Give Vaccine A script to spam yourself with vaccine notifications. Explore the docs » View Demo · Report Bug · Request Feature Table of Contents A

Rohan Mukherjee 3 Oct 27, 2021
Hacktoberfest2021 🥳- Contribute Any Pattern In Any Language😎 Every PR will be accepted Pls contribute

✨ Hacktober Fest 2021 ✨ ?? All Contributors are requested to star this repo and follow me for a successful merge of pull request. ?? ?? Add any patter

Md. Almas Ali 103 Jan 7, 2023
This code is a near-infrared spectrum modeling method based on PCA and pls

Nirs-Pls-Corn This code is a near-infrared spectrum modeling method based on PCA and pls 近红外光谱分析技术属于交叉领域,需要化学、计算机科学、生物科学等多领域的合作。为此,在(北邮邮电大学杨辉华老师团队)指导下

Fu Pengyou 6 Dec 17, 2022
Modern responsive template for the Django admin interface with improved functionality. We are proud to announce completely new Jet. Please check out Live Demo

Django JET Modern template for Django admin interface with improved functionality Attention! NEW JET We are proud to announce completely new Jet. Plea

Geex Arts 3.4k Dec 29, 2022
A faster and highly-compatible implementation of the Python programming language. The code here is out of date, please follow our blog

Pyston is a faster and highly-compatible implementation of the Python programming language. Version 2 is currently closed source, but you can find the

null 4.9k Dec 21, 2022
A calendaring app for Django. It is now stable, Please feel free to use it now. Active development has been taken over by bartekgorny.

Django-schedule A calendaring/scheduling application, featuring: one-time and recurring events calendar exceptions (occurrences changed or cancelled)

Tony Hauber 814 Dec 26, 2022
No longer maintained, please migrate to model_bakery

Model Mommy: Smart fixtures for better tests IMPORTANT: Model Mommy is no longer maintained and was replaced by Model Bakery. Please, consider migrati

Bernardo Fontes 917 Oct 4, 2022
No longer maintained, please migrate to model_bakery

Model Mommy: Smart fixtures for better tests IMPORTANT: Model Mommy is no longer maintained and was replaced by Model Bakery. Please, consider migrati

Bernardo Fontes 917 Oct 4, 2022
A fresh approach to autocomplete implementations, specially for Django. Status: v3 stable, 2.x.x stable, 1.x.x deprecated. Please DO regularely ping us with your link at #yourlabs IRC channel

Features Python 2.7, 3.4, Django 2.0+ support (Django 1.11 (LTS), is supported until django-autocomplete-light-3.2.10), Django (multiple) choice suppo

YourLabs 1.7k Jan 1, 2023
A calendaring app for Django. It is now stable, Please feel free to use it now. Active development has been taken over by bartekgorny.

Django-schedule A calendaring/scheduling application, featuring: one-time and recurring events calendar exceptions (occurrences changed or cancelled)

Tony Hauber 814 Dec 26, 2022
MoinMoin Wiki Development (2.0+), unstable, for production please use 1.9.x.

MoinMoin - a wiki engine in Python MoinMoin is an easy to use, full-featured and extensible wiki software package written in Python. It can fulfill a

MoinMoin Wiki Engine 240 Dec 22, 2022
THIS IS THE **OLD** PYMC PROJECT. PLEASE USE PYMC3 INSTEAD:

Introduction Version: 2.3.8 Authors: Chris Fonnesbeck Anand Patil David Huard John Salvatier Web site: https://github.com/pymc-devs/pymc Documentation

PyMC 7.2k Jan 7, 2023
Participants of Bertelsmann Technology Scholarship created an awesome list of resources and they want to share it with the world, if you find illegal resources please report to us and we will remove.

Participants of Bertelsmann Technology Scholarship created an awesome list of resources and they want to share it with the world, if you find illegal

Wissem Marzouki 29 Nov 28, 2022
A fresh approach to autocomplete implementations, specially for Django. Status: v3 stable, 2.x.x stable, 1.x.x deprecated. Please DO regularely ping us with your link at #yourlabs IRC channel

Features Python 2.7, 3.4, Django 2.0+ support (Django 1.11 (LTS), is supported until django-autocomplete-light-3.2.10), Django (multiple) choice suppo

YourLabs 1.7k Jan 1, 2023
Please use openpyxl where you can...

xlrd xlrd is a library for reading data and formatting information from Excel files in the historical .xls format. Warning This library will no longer

null 2k Dec 29, 2022
This is a cryptocurrency trading bot that analyses Reddit sentiment and places trades on Binance based on reddit post and comment sentiment. If you like this project please consider donating via brave. Thanks.

This is a cryptocurrency trading bot that analyses Reddit sentiment and places trades on Binance based on reddit post and comment sentiment. The bot f

Andrei 157 Dec 15, 2022