HSPyLib is a Python library that will elevate your experience to another level.

Overview

HomeSetup Python Library - HSPyLib

Your mature python application

Tests License Release PyPi GitHub Gitter Donate

HSPyLib is a Python library that will elevate your experience to another level. It relies on well known principles as SOLID, DRY (Don't Repeat Yourself), KISS (Keep It Simple, Stupid) and YAGNI (You Ain’t Gonna Need It). It provides many frameworks and facilities to help you create mature python3 applications "PYCSNBASS" (Python Code Should Not Be A Simple Script).

HSPyLib is a part of the HomeSetup project.

Highlights

  • Easy installation.
  • Manager application that provides a helper to scaffold you applications.
  • Widgets application that provides running built-in and custom widgets.
  • Enhanced TUI helpers and input methods, to elevate you terminal UI applications.
  • Crud framework to help with databases, repositories and services.
  • HTTP Request helpers.
  • Python3 application framework.
  • HSPyLib widgets framework.
  • Enable Properties and AppConfigs using various syntax's like .properties, .ini and .yaml.
  • Well tested code and often pylint clean.
  • Gradle build system with many extensions.

A menu select example:

from hspylib.modules.cli.tui.extra.mselect import mselect

if __name__ == '__main__':
    it = [f"Item-{n}" for n in range(1, 21)]
    sel = mselect(it, max_rows=10)
    print(str(sel))

MenuSelect

A menu choose example:

from hspylib.modules.cli.tui.extra.mchoose import mchoose

if __name__ == '__main__':
    it = [f"Item-{n}" for n in range(1, 21)]
    sel = mchoose(it, max_rows=10)
    print(str(sel))

MenuChoose

A Dashboard example:

if __name__ == '__main__':
# @formatter:off
dashboard_items = MenuDashBoard.builder() \
    .item() \
        .icon(DashboardIcons.PLUS) \
        .tooltip('Add something') \
        .on_trigger(lambda: print('Add')) \
        .build() \
    .item() \
        .icon(DashboardIcons.MINUS) \
        .tooltip('Remove something') \
        .on_trigger(lambda: print('Del')) \
        .build() \
    .item() \
        .icon(DashboardIcons.EDIT) \
        .tooltip('Edit something') \
        .on_trigger(lambda: print('Edit')) \
        .build() \
    .item() \
        .icon(DashboardIcons.LIST) \
        .tooltip('List everything') \
        .on_trigger(lambda: print('List')) \
        .build() \
    .item() \
        .icon(DashboardIcons.DATABASE) \
        .tooltip('Database console') \
        .on_trigger(lambda: print('Database')) \
        .build() \
    .item() \
        .icon(DashboardIcons.EXIT) \
        .tooltip('Exit application') \
        .on_trigger(lambda: print('Exit')) \
        .build() \
    .build()
# @formatter:on
result = mdashboard(dashboard_items, 4)

MenuDashboard

A form input example

if __name__ == '__main__':
# @formatter:off
form_fields = MenuInput.builder() \
    .field() \
        .label('letters') \
        .validator(InputValidator.letters()) \
        .build() \
    .field() \
        .label('word') \
        .validator(InputValidator.words()) \
        .build() \
    .field() \
        .label('number') \
        .validator(InputValidator.numbers()) \
        .min_max_length(1, 2) \
        .build() \
    .field() \
        .label('masked') \
        .itype('masked') \
        .value('|##::##::## @@') \
        .build() \
    .field() \
        .label('selectable') \
        .itype('select') \
        .value('one|two|three') \
        .build() \
    .field() \
        .label('checkbox') \
        .itype('checkbox') \
    .build() \
    .field() \
        .label('password') \
        .itype('password') \
        .validator(InputValidator.anything()) \
        .min_max_length(4, 8) \
        .build() \
    .field() \
        .label('read-only') \
        .access_type('read-only') \
        .value('READ-ONLY') \
        .build() \
    .build()
# @formatter:on
result = minput(form_fields)
print(result.__dict__)

MenuInput

And many other cool features like repositories, Qt and CRUD helpers, etc...

Table of contents

Installation

Requirements

Operating Systems

  • Darwin
    • High Sierra and higher
  • Linux
    • Ubuntu 16 and higher
    • CentOS 7 and higher
    • Fedora 31 and higher

You may want to install HSPyLib on other OS's and it will probably work, but there are no guarantees that it WILL ACTUALLY WORK.

Required software

The following software are required:

  • Git (To clone the github repository)
  • Gradle (To build the HSPyLib project)
  • instantclient-basiclite-macos (To use oracle database repositories)

There are some python dependencies, but they will be automatically downloaded when the build runs.

PyPi

To install HSPyLib from PyPi issue the command:

# python3 -m pip install hspylib

To upgrade HSPyLib use the command:

# python3 -m pip install hspylib --upgrade

GitHub

To clone HSPyLib into your local machine issue the command:

# git clone https://github.com/yorevs/hspylib.git

Documentation

TBD

Contact

You can contact us using our Gitter community or using our Reddit.

Support HSPyLib

You can support HSPyLib by donating or coding. Fell free to contact me for details. When contributing with code change please take a look at our guidelines and code of conduct.

paypal

Links

Owner
Hugo Saporetti Junior
Changing paradigms is the key for evolution.
Hugo Saporetti Junior
Palestra sobre desenvolvimento seguro de imagens e containers para a DockerCon 2021 sala Brasil

Segurança de imagens e containers direto na pipeline Palestra sobre desenvolvimento seguro de imagens e containers para a DockerCon 2021 sala Brasil.

Fernando Guisso 10 May 19, 2022
Extended functionality for Namebase past their web UI

Namebase Extended Extended functionality for Namebase past their web UI.

RunDavidMC 12 Sep 02, 2022
Artificial intelligence based on 5-dimensional quantum selection

Deep Thought An artificial intelligence based on 5-dimensional quantum selection. Algorithm The payload Make an random bit array (e.g. 1101...) Conver

Larry Holst 3 Dec 14, 2022
Python / C++ based particle reaction-diffusion simulator

ReaDDy (Reaction Diffusion Dynamics) is an open source particle based reaction-diffusion simulator that can be configured and run via Python. Currentl

ReaDDy 46 Dec 09, 2022
The fundamentals of Python!

The fundamentals of Python Author: Mohamed NIANG, Staff ML Scientist Presentation This repository contains notebooks on the fundamentals of Python. Th

Mohamed NIANG 1 Mar 15, 2022
firefox session recovery

firefox session recovery

Ahmad Sadraei 5 Nov 29, 2022
🔩 Like builtins, but boltons. 250+ constructs, recipes, and snippets which extend (and rely on nothing but) the Python standard library. Nothing like Michael Bolton.

Boltons boltons should be builtins. Boltons is a set of over 230 BSD-licensed, pure-Python utilities in the same spirit as — and yet conspicuously mis

Mahmoud Hashemi 6k Jan 06, 2023
Python script to combine the statistical results of a TOPAS simulation that was split up into multiple batches.

topas-merge-simulations Python script to combine the statistical results of a TOPAS simulation that was split up into multiple batches At the top of t

Sebastian Schäfer 1 Aug 16, 2022
A tool for removing PUPs using signatures

Unwanted program removal tool A tool for removing PUPs using signatures What is the unwanted program removal tool? The unwanted program removal tool i

4 Sep 20, 2022
Python Multilingual Ucrel Semantic Analysis System

PymUSAS Python Multilingual Ucrel Semantic Analysis System, it currently is a rule based token level semantic tagger which can be added to any spaCy p

UCREL 13 Nov 18, 2022
CalHacks 8 Repo: Megha Jain, Gaurav Bhatnagar, Howard Meng, Vibha Tantry

CalHacks8 CalHacks 8 Repo: Megha Jain, Gaurav Bhatnagar, Howard Meng, Vibha Tantry Setup FE Install React Native via Expo, run App.js. Backend Create

0 Aug 20, 2022
Automatically skip sponsor segments in YouTube videos playing on Apple TV.

iSponsorBlockTV Skip sponsor segments in YouTube videos playing on an Apple TV. This project is written in asycronous python and should be pretty quic

David 64 Dec 17, 2022
🗽 Like yarn outdated/upgrade, but for pip. Upgrade all your pip packages and automate your Python Dependency Management.

pipupgrade The missing command for pip Table of Contents Features Quick Start Usage Basic Usage Docker Environment Variables FAQ License Features Upda

Achilles Rasquinha 529 Dec 31, 2022
Deis v1, the CoreOS and Docker PaaS: Your PaaS. Your Rules.

This repository (deis/deis) is no longer developed or maintained. The Deis v1 PaaS based on CoreOS Container Linux and Fleet has been replaced by Deis

Deis 6.1k Jan 04, 2023
Beginner Projects A couple of beginner projects here

Beginner Projects A couple of beginner projects here, listed from easiest to hardest :) selector.py: simply a random selector to tell me who to faceti

Kylie 272 Jan 07, 2023
Time python - Códigos para auxiliar e mostrar formas de como fazer um relógio e manipular o seu tempo

Time_python Códigos para auxiliar e mostrar formas de como fazer um relógio e manipular o seu tempo. Bibliotecas Nestes foram usadas bibliotecas nativ

Eduardo Henrique 1 Jan 03, 2022
Student Enrollment Analysis System

SEAS Student Enrollment Analysis System Steps to start working: create a user name "seas", host name: local, password: seas, mark all checkbox - go C

Md. Zakaria Kabir 3 Jul 12, 2022
Python Example Project Structure

Python Example Project Structure Example of statuses that can be in readme: Visit my docs for the full documentation, examples and guides. With this p

1 Oct 31, 2021
Telegram bot to remove the forwarded tag from messages.

Anonymous Sender Bot @AnonySendBot Telegram bot to remove the forwarded tag from messages. Table of Contents Usage Deploy To Heroku Local Deploying En

Stark Bots 26 Nov 24, 2022
A script that convert WiiU BotW mods to Switch

UltimateBoTWConverter A script that convert WiiU BotW mods to Switch. It uses every resource I could find under the sun that allows for conversion, wi

11 Nov 08, 2022