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
A TODO-list tool written in Python

PyTD A TODO-list tool written in Python. Its goal is to provide a stable posibility to get a good view over all your TODOs motivate you to actually fi

1 Feb 12, 2022
Analyze FnO trends by using NSE Bhav copy

BhavFnO Analyze FnO trends by using NSE Bhav copy Download entire BhavFnO folder and unzip it In that folder open command window

33 Jan 04, 2023
A wrapper script to make working with ADB (Android Debug Bridge) easier

Python-ADB-Wrapper A wrapper script to make working with ADB (Android Debug Bridge) easier This project was just a simple test to see if I could wrap

18iteration 1 Nov 25, 2021
200 LeetCode problems

LeetCode I classify 200 leetcode problems into some categories and upload my code to who concern WEEK 1 # Title Difficulty Array 15 3Sum Medium 1324 P

Hoang Cao Bao 108 Dec 08, 2022
IPython: Productive Interactive Computing

IPython: Productive Interactive Computing Overview Welcome to IPython. Our full documentation is available on ipython.readthedocs.io and contains info

IPython 15.6k Dec 31, 2022
2021华为软件精英挑战赛 程序输出分析器

AutoGrader 0.2.0更新:加入资源分配溢出检测,如果发生资源溢出会输出溢出发生的位置。 如果通过检测,会显示通过符号 如果没有通过检测,会显示警告,并输出溢出发生的位置和操作

54 Aug 14, 2022
Tool for running a high throughput data ingestion/transformation workload with MongoDB

Mongo Mangler The mongo-mangler tool is a lightweight Python utility, which you can run from a low-powered machine to execute a high throughput data i

Paul Done 9 Jan 02, 2023
An almost fully customizable language made in python!

Whython is a project language, the idea of it is that anyone can download and edit the language to make it suitable to what they want.

Julian 47 Nov 05, 2022
A reference implementation for processing the content.log files found at opendata.dwd.de/weather

A reference implementation for processing the content.log files found at opendata.dwd.de/weather.

Deutscher Wetterdienst (DWD) 6 Nov 26, 2022
Unzip Japanese Shift-JIS zip archives on non-Japanese systems.

Unzip JP GUI Unzip Japanese Shift-JIS zip archives on non-Japanese systems. This script unzips the file while converting the file names from Shift-JIS

Emile Bangma 9 Dec 07, 2022
RFDesign - Protein hallucination and inpainting with RoseTTAFold

RFDesign: Protein hallucination and inpainting with RoseTTAFold Jue Wang (juewan

139 Jan 06, 2023
These are After Effects and Python files that were made in the process of creating the video for the contest.

spirograph These are After Effects and Python files that were made in the process of creating the video for the contest. In the python file you can qu

91 Dec 07, 2022
Un script en python qui permet d'automatique bumpée (disboard.org) tout les 2h

auto-bumper Un script en python qui permet d'automatique bumpée (disboard.org) tout les 2h Pour la première utilisation, 1.Lancer Install.bat 2.(faire

!! 1 Jan 09, 2022
Scitizen - Help scientific research for the benefit of mankind and humanity 🔬

Scitizen - Help scientific research for the benefit of mankind and humanity 🔬 Scitizen has been built from the ground up to give everyone the possibi

Pierre CORBEL 21 Mar 08, 2022
Fithub is a website application for athletes and fitness enthusiasts of all ages and experience levels.

Fithub is a website application for athletes and fitness enthusiasts of all ages and experience levels. Our website allows users to easily search, filter, and sort our comprehensive database of over

Andrew Wu 1 Dec 13, 2021
Python wrapper to different clients to determine how a particular term is used.

Python wrapper to different clients to determine how a particular term is used.

Chris Mungall 3 Oct 24, 2022
This repository requires you to solve a problem by writing some basic python code.

Can You Solve a Problem? A beginner friendly repository that requires you to solve familiar problems with python. This could be as simple as implement

Precious Kolawole 11 Nov 30, 2022
VHDL to Discrete Logic on PCB Flow

PCBFlow Highly experimental set of scripts to transform a digital circuit described in a hardware description language (VHDL or Verilog) into a discre

Tim 77 Nov 04, 2022
python for windows extensions

This is the readme for the Python for Win32 (pywin32) extensions source code. See CHANGES.txt for recent changes. 'setup.py' is a standard distutils

27 Dec 08, 2022
fast_bss_eval is a fast implementation of the bss_eval metrics for the evaluation of blind source separation.

fast_bss_eval Do you have a zillion BSS audio files to process and it is taking days ? Is your simulation never ending ? Fear no more! fast_bss_eval i

Robin Scheibler 99 Dec 13, 2022