Skip to main content

Python MVC Shell Framework Package is a tiny framework for shell projects in Python.

Project description

Python MVC Shell Framework Package

About the package

Python MVC Shell Framework Package (PMVCS) is a tiny framework for shell projects making in Python 3.10+.

PMVCS

Install with pip3

pip install pmvcs

or

pip3 install pmvcs

Settings from console in english

>>> python -m pmvcs.cli setup -l en
or
>>> python -m pmvcs.cli setup -language en
or
>>> pmvcs-cli setup -l en
or
>>> pmvcs-cli setup -language en

Settings from console in spanish

>>> python -m pmvcs.cli setup -l es
or
>>> python -m pmvcs.cli setup -language es
or
>>> pmvcs-cli setup -l es
or
>>> pmvcs-cli setup -language es

Setup, step by step:

Insert APP name (default: "MyApp", leaves blank):
>>> My Test App

Insert APP folder name (default: "app", leaves blank):
>>> app

Enable debug? (default: "No")
(Y) Yes - (N) No:
>>> Y

View project information on exit? (default: "Yes")
(Y) Yes - (N) No:
>>> Y

Enable Multi-Language support? (default: "Yes")
(Y) Yes - (N) No:
>>> Y

Define default Language (default: "(1)")
(1) English - (2) Español:
>>> 2

Installs example data, use menu for multiple modules or unique module?
(E) Example data
(M) Multiple modules
(S) Unique module

Option:
>>> E   -> Installs data examples, one module in menu with controller, model and view files.
>>> M   -> Installs multiple modules in menu with controller, model and view files each one.
>>> S   -> Installs a unique module in menu with controller file.

-------------------------------------------------
 >>> Configuration has finished
 >>> Thanks for choose PMVCS!
-------------------------------------------------

Press any key to continue . . .

Add a new Multiple modules

Installs new multiple modules in menu with controller, model and view files each one. For adding new modules in menu, run the following:

>>> python -m pmvcs.cli menu -l en
o
>>> python -m pmvcs.cli menu -language en
Current APP folder name:
>>> app01

Insert module name:
>>> example_two

Insert another module
(Y) Yes - (N) No:
>>> N

-------------------------------------------------
 >>> Configuration has finished
 >>> Thanks for choose PMVCS!
-------------------------------------------------

Press any key to continue . . .

PMVCS Helpers

You can load PMVCS Helpers, for example:

old_value = str('5')
print(type(old_value))
>>> <class 'str'>

filters = self.pmvcs_helper.load_helper('filters', True)
new_value = filters.data_type(old_value)

print(type(new_value))
>>> <class 'int'>

The helper "filters" returns an integer value from a string number.

Custom Helpers

You can load custom helpers, for example:

example = self.pmvcs_helper.load_helper('example')
example.my_func()

Path to save your helper: (app_folder)/helpers/

Format in helper's file:

from pmvcs.core.helpers.base_helper import BaseHelper


class ExampleHelper(BaseHelper):
    """ Class for Example Helper """

    def __init__(self, **kwargs) -> None:
        """
        Init PMVCS Example Helper requirements
        """
        super().__init__(**kwargs)

    def my_func(self):
        """
        Returns a float or int value
        """
        pass

Custom Helpers: Pass variables:

In init it should have:

def __init__(self, **kwargs) -> None:
	self.pmvcs_helper = kwargs['pmvcs_helper']
	self.kwargs = { 'pmvcs_cfg': kwargs['pmvcs_cfg'],
					'pmvcs_lang': kwargs['pmvcs_lang'],
					'pmvcs_helper': kwargs['pmvcs_helper']}
						

And in the function that calls the helper:

def to_string_table(self, data: dict) -> str:
	kwargs2 = { 'data': data,
				'file_name': 'temp_file'}
	kwargs2.update(self.kwargs)
	table_helper = self.pmvcs_helper.load_helper('table', **kwargs2)
	table_helper.record_file()

Finally in the helper we retrieve the values as:

def __init__(self, **kwargs) -> None:
	super().__init__(**kwargs)
	
	self._data = kwargs['data']
	self._file_name = f"{kwargs['file_name']}.{self._file_extension}"

Get configuration constants from config.ini:

Get a configuration constant in string type from "OPTIONS":

Code: >>> self.cfg.get("EXAMPLE_CONSTANT", "OPTIONS")
Returns: This is an example value from config file
Value Type: <class 'str'>

Get a configuration constant in string type from "DEFAULT":

Code: >>> self.cfg.get("DEFAULT_TITLE", "DEFAULT")
Returns: Example App
Value Type: <class 'str'>

Get a configuration constant in integer type:

Code: >>> self.cfg.get("EXAMPLE_INT", "OPTIONS", "int")
Returns: 8
Value Type: <class 'int'>

Get a configuration constant in float type:

Code: >>> self.cfg.get("EXAMPLE_FLOAT", "OPTIONS", "float")
Returns: 1.57
Value Type: <class 'float'>

Get a configuration constant in boolean type:

Code: >>> self.cfg.get("EXAMPLE_BOOLEAN", "OPTIONS", "boolean")
Returns: True
Value Type: <class 'bool'>

Get a configuration constant in a list:

Code: >>> self.cfg.get("EXAMPLE_LIST", "OPTIONS", "list")
Returns: ['1', '2']
Value Type: <class 'list'>

Get a configuration constant in a dictionary:

Code: >>> self.cfg.get("EXAMPLE_DICT", "OPTIONS", "dict")
Returns: {'value_one': '1', 'value_two': '2'}
Value Type: <class 'dict'>

Get language constants from languages/en.ini:

Get current language tag:

Code: >>> self.lang.tag
Returns: en
Value Type: <class 'str'>

Get a language constant:

Code: >>> self.lang.get("LANG_EXAMPLE_STRING")
Returns: This is an example string
Value Type: <class 'str'>

Get a language constant by passing a value in String-Print-Format. In the language file you will see for example: "The value here: "{}"

Code: >>> self.lang.sprintf("LANG_EXAMPLE_SPRINTF", "3")
Returns: String-Print-Format value here: "3"
Value Type: <class 'str'>

Get a language constant by passing many values in String-Print-Format. In the language file you will see: "One: "{}". Two: "{}". Three: "{}".

Code: >>> self.lang.sprintf("LANG_EXAMPLE_SPRINTF2", "1", "2", "3")
Returns: One: "1". Two: "2". Three: "3".
Value Type: <class 'str'>

Translating a string:

Code: >>> value = 'dictionary'
	  >>> self.lang.translate(value)
Returns: Dictionary
Value Type: <class 'str'>

Using PMVCS View functions

This shows the banner with the App's name:

Code: >>> self.pmvcs_view.get_intro()

This shows the exit message:

Code: >>> self.pmvcs_view.get_exit()

This inserts a line break without print():

Code: >>> self.pmvcs_view.line_brake()

This inserts a line break with print():

Code: >>> self.pmvcs_view.line_brake(True)

This inserts a pause to press ENTER to start:

Code: >>> self.pmvcs_view.input_start()

This inserts a pause to press ENTER to continue:

Code: >>> self.pmvcs_view.input_pause()

This inserts a select an option input():

Code: >>> self.pmvcs_view.input_options()

This inserts a select an input():

Code: >>> self.pmvcs_view.input_generic(text)

PMVCS captures

PMVCS intro language selection

PMVCS menus for multiple modules

PMVCS runing module

PMVCS implementation examples

Repository

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pmvcs-1.0.4.tar.gz (70.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pmvcs-1.0.4-py3-none-any.whl (132.5 kB view details)

Uploaded Python 3

File details

Details for the file pmvcs-1.0.4.tar.gz.

File metadata

  • Download URL: pmvcs-1.0.4.tar.gz
  • Upload date:
  • Size: 70.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for pmvcs-1.0.4.tar.gz
Algorithm Hash digest
SHA256 76798f44f51c45366b1e34c0dca49223030d679d458d1a587b048d50070ac974
MD5 e8a06298918ca93ffea3b96ba866c1a0
BLAKE2b-256 31457f9f972e958336780cdc291300969e0dc9b4c2f5a4f971cf177fd68a9798

See more details on using hashes here.

File details

Details for the file pmvcs-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: pmvcs-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 132.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for pmvcs-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 5bba313e0ebce5baf9cfbe3255a0154b4ef06cfa2f5b61a5e8694f6f5bbf74d8
MD5 c2e72170da9a2ab616060d572fa1a80f
BLAKE2b-256 2070db30b1dccbe827f1ef6a7eb1531d142d1ffa0234004f141a24adfe3e4e81

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page