AnP.Common.py
Esta librería es la librería donde se encuentran todos los elementos comunes del lado Python de AnP.
Aunque sea la primera librería para la importación, esto no indica que sea la librería principal,
quedando como la principal AnP.py, esta librería simplemente contendrá metodos y variables comunes
para la librería principal, así como estructuras comunes cortas como la creación y gestión de Hashes
entre otras opciones.
Para documentar esta librería nos centraremos en las diferentes funciones o variables de las que se
compone para uso global.
AnP.is_dos
AnP.is_unix
AnP.python2
Método estático que retorna un valor Booleano que verifica si se está ejecutando en Python 2 o no.
AnP.python3
Método estático que retorna un valor Booleano que verifica si se está ejecutando en Python 3 o no.
AnP.is_bool
Método estático que retorna un valor Booleano que verifica si la variable enviada es de tipo
Booleana o no.
-
Language
py
-
Lines
6
-
Characters
204
print("YES" if AnP.is_bool(0) else "NO") # NO
print("YES" if AnP.is_bool(True) else "NO") # YES
print("YES" if AnP.is_bool(False) else "NO") # YES
print("YES" if AnP.is_bool("True") else "NO") # NO
AnP.is_array
Método estático que retorna un valor Booleano que verifica si la variable enviada es un Array o no.
Para validar si es un Array o no en Python, puesto que este lenguaje no posee como tal un tipado
concreto para éste, se verifica si es de tipo lista (list) o tupla (tuple), siendo la diferencia
entre ambas que la tupla es un vector rígido y la lista un vector dinámico.
-
Language
py
-
Lines
6
-
Characters
207
print("YES" if AnP.is_array(0) else "NO") # NO
print("YES" if AnP.is_array([]) else "NO") # YES
print("YES" if AnP.is_array((0,)) else "NO") # YES
print("YES" if AnP.is_array(("jojo")) else "NO") # NO
AnP.is_list
Método estático que retorna un valor Booleano que verifica si la variable enviada es una lista o no.
-
Language
py
-
Lines
6
-
Characters
206
print("YES" if AnP.is_array(0) else "NO") # NO
print("YES" if AnP.is_array([]) else "NO") # YES
print("YES" if AnP.is_array((0,)) else "NO") # NO
print("YES" if AnP.is_array(("jojo")) else "NO") # NO
AnP.is_tuple
Método estático que retorna un valor Booleano que verifica si la variable enviada es una tupla o no.
-
Language
py
-
Lines
6
-
Characters
206
print("YES" if AnP.is_array(0) else "NO") # NO
print("YES" if AnP.is_array([]) else "NO") # NO
print("YES" if AnP.is_array((0,)) else "NO") # YES
print("YES" if AnP.is_array(("jojo")) else "NO") # NO
AnP.is_dictionary
Método estático que retorna un valor Booleano que verifica si la variable enviada es un diccionario
o no.
-
Language
py
-
Lines
6
-
Characters
200
print("YES" if AnP.is_array(0) else "NO") # NO
print("YES" if AnP.is_array([]) else "NO") # NO
print("YES" if AnP.is_array((0,)) else "NO") # NO
print("YES" if AnP.is_array({}) else "NO") # YES
AnP.is_string
Método estático que retorna un valor Booleano que verifica si la variable enviada es un string o no.
-
Language
py
-
Lines
6
-
Characters
198
print("YES" if AnP.is_array(0) else "NO") # NO
print("YES" if AnP.is_array([]) else "NO") # NO
print("YES" if AnP.is_array("") else "NO") # YES
print("YES" if AnP.is_array({}) else "NO") # NO
AnP.is_function
Método estático que retorna un valor Booleano que verifica si la variable enviada es una función o
no.
-
Language
py
-
Lines
9
-
Characters
232
def test():
pass
print("YES" if AnP.is_array(0) else "NO") # NO
print("YES" if AnP.is_array(lambda:0) else "NO") # YES
print("YES" if AnP.is_array(test) else "NO") # YES
print("YES" if AnP.is_array({}) else "NO") # NO
AnP.is_number
Método estático que retorna un valor Booleano que verifica si la variable enviada es un número o no.
-
Language
py
-
Lines
7
-
Characters
253
print("YES" if AnP.is_array(0) else "NO") # YES
print("YES" if AnP.is_array("1") else "NO") # NO
print("YES" if AnP.is_array(.8) else "NO") # YES
print("YES" if AnP.is_array(-6.23) else "NO") # YES
print("YES" if AnP.is_array({}) else "NO") # NO
AnP.is_integer
Método estático que retorna un valor Booleano que verifica si la variable enviada es un número
entero o no.
-
Language
py
-
Lines
7
-
Characters
251
print("YES" if AnP.is_array(0) else "NO") # YES
print("YES" if AnP.is_array("1") else "NO") # NO
print("YES" if AnP.is_array(.8) else "NO") # NO
print("YES" if AnP.is_array(-6.23) else "NO") # NO
print("YES" if AnP.is_array({}) else "NO") # NO
AnP.is_datetime
Método estático que retorna un valor Booleano que verifica si la variable enviada es un objeto de
tipo fecha y/o hora o no.
AnP.if_none
Método estático al cual se le mandan dos valores donde si el primero es nulo (None) éste retornará
el segundo, haciendo referencia al isnull de SQL Server y al ifnull de MySQL. Para evitar un
preprocesamiento inútil se permite que el segundo parámetro sea una función, ya sea Lambda o una
función predefinida y el valor devuelto en caso de que el primero sea nulo, será la respuesta a la
llamada de dicha función.
AnP.string_variables
Método estático que permite procesar variables en un String dado, entiendendo que las variables
dentro del String sean nombradas estableciendo su Key entre llaves, siendo substituídos por el valor
que se le determine en las variables. En caso de no encontrarse un valor en las variables, éste
devolverá el valor por defecto, a no ser que éste sea nulo, que será cuando se devolverá de nuevo su
estado original incluyendo las llaves. La entrada de variables puede ser nula, lo cual no haría
nada; un diccionario donde vuscar el valor a la llave del String; o una lista o tupla de
diccionarios con la misma finalidad.
AnP.get_directory_path
AnP.make_directories
IMPORTANTE: Los permisos del mismo quedarán exclusivizados al usuario ejecutor del
Python, y dará una excepción si no tiene permisos o el Path del mismo está mal sintácticamente o no
pertenece a ninguna unidad.
AnP.paths_get
La lista de Paths resultante será una lista de Paths a partir de como se estructure en la
configuración a partir del siguiente orden de prioridad:
- Path dado.
- Path absoluto de la aplicación.
- Path relativo anterior al de la ejecución.
- Path relativo desde la ejecución.
- Paths roots dados.
- Paths establecidos como "root".
- Paths establecidos como "roots".
AnP.file_load
NOTA: El contenido cargado será de caracter binario en Python 3.
IMPORTANTE: El contenido será None si no se encuentra el fichero.
AnP.json_decode
IMPORTANTE: Si el formato del String no es un JSON retornará None.
AnP.json_encode
IMPORTANTE: Si el objeto dado no es serializable y codificable en JSON retornará
None.
AnP.base64_decode
IMPORTANTE: Si la codificación es errónea retornará None.
AnP.base64_encode
IMPORTANTE: Si No es un String o da problemas su codificación, éste retornará
None.
AnP.shell
IMPORTANTE: Si la ejecución da error éste retornará None.
IMPORTANTE: Solo retorna el nivel de respuesta e ignora el nivel de error e
inserción de texto.
AnP.load_url
NOTA: Para realizar un POST sin variables ha de enviarse un diccionario vacío en el
parámetro "data".
NOTA: Este método no usa ningún método interno nativo de Python como pueden ser las
librerías "urllib", "urllib2", "urllib3", "request" o "socket" puesto que Python, de forma nativa,
espera a la finalización del Timeout, relentizando las conexiones de la aplicación o incluso
arriesgando a que la respuesta venga parcial por culpa de dicho Timeout. Para realizar dicha acción
usará la Terminal o la Consola de COMANDOS, dependiendo de la plataforma en la que se encuentre, a
partir de la librería nativa de Python "subprocess", y ejecutará el programa cURL para efectuar
dicha acción. Es importante destacar que dicho programa viene nativo en Windows 10 en su Consola de
COMANDOS, pero en Linux se requiere de instalar, lo cual puede efectuarse de la siguiente manera:
-
Language
sh
-
Lines
1
-
Characters
16
apt install curl
AnP.are_string
AnP.ternary
AnP.timestamp
AnP.timestamp_milliseconds
AnP.now
AnP.datetime
AnP.exception
AVISO: Si la base de datos no está montada, ya sea que no hay configuración para la
misma o falla cualquier punto para el montaje de la base de datos SQLite, éste no hará nada más que
almacenar en memoria las excepciones mientras el programa siga activo y en cuanto detecte que existe
la base de datos, éste insertará todas las excepciones en la misma, sino, dichas excepciones se
perderán.
AVISO: Si el Path apunta a una unidad, ésta se formateará en los casos de UNIX no
sobre el directorio raíz, sino desde el directorio de montaje "/mnt" continuando con un
subdirectorio con la letra de la unidad en minúscula siguiendo la estructura de los Subsistemas
Linux.
NOTA: Si el Path ya está formateado en el sistema requerido éste no cambiará.
AnP.procedure_exists
AnP.procedure_get
NOTA: Si no existe retornará None.
AnP._print
Hablar de la configuración, formato, tipados, filtro de impresión por tipados, uso de la I18N,
variables, etc.
NOTA: Es un método oculto para diferenciarlo del "print" nativo de Python. Parece ser
que aunque esté internamente dentro de una clase, la palabra reservada "print" da errores
inesperados.
NOTA: Este método también se encarga del almacenamiento de los LOGs, entendiéndose como
los elementos de impresión aquellos elementos importantes a mostrar o monitorizar por parte del
usuario cliente.