pyreports modules#

io#

The io module contains all the classes and functions needed to interface with inputs and outputs.

Contains all input management.

class pyreports.io.Connection(*args, **kwargs)#

Bases: ABC

Connection base class

__init__(*args, **kwargs)#

Connection base object.

__repr__()#

Return repr(self).

__weakref__#

list of weak references to the object

class pyreports.io.CsvFile(filename)#

Bases: File

CSV file class

__init__(filename)#

CSV file base object.

read(**kwargs)#

Read csv format

Returns:

Dataset object

write(data)#

Write data on csv file

Parameters:

data – data to write on csv file

Returns:

None

class pyreports.io.DatabaseManager(connection: Connection)#

Bases: Manager

Database manager class for SQL connection

__init__(connection: Connection)#

Database manager object for SQL connection

Parameters:

connection – Connection based object

__repr__()#

Representation of DatabaseManager object

Returns:

string

callproc(proc_name, params=None) Dataset#

Calls the stored procedure named

Parameters:
  • proc_name – name of store procedure

  • params – sequence of parameters must contain one entry for each argument that the procedure expects

Returns:

Dataset object

commit()#

This method sends a COMMIT statement to the server

Returns:

None

execute(query, params=None)#

Execute query on database cursor

Parameters:
  • query – SQL query language

  • params – parameters of the query

Returns:

None

executemany(query, params)#

Execute query on database cursor with many parameters

Parameters:
  • query – SQL query language

  • params – list of parameters of the query

Returns:

None

fetchall() Dataset#

Fetches all (or all remaining) rows of a query result set

Returns:

Dataset object

fetchmany(size=1) Dataset#

Fetches the next set of rows of a query result

Parameters:

size – the number of rows returned

Returns:

Dataset object

fetchone() Dataset#

Retrieves the next row of a query result set

Returns:

Dataset object

reconnect()#

Close and start connection

Returns:

None

class pyreports.io.ExcelFile(filename)#

Bases: File

Excel file class

__init__(filename)#

Excel file base object.

read(**kwargs)#

Read xlsx format

Returns:

Dataset object

write(data)#

Write data on xlsx file

Parameters:

data – data to write on yaml file

Returns:

None

class pyreports.io.File(filename)#

Bases: ABC

File base class

__init__(filename)#

File base object

Parameters:

filename – file path

__repr__()#

Return repr(self).

__weakref__#

list of weak references to the object

abstractmethod read(**kwargs)#

Read with format

Returns:

Dataset object

abstractmethod write(data)#

Write data on file

Parameters:

data – data to write on file

Returns:

None

class pyreports.io.FileManager(file: File)#

Bases: Manager

File manager class for various readable file format

__init__(file: File)#

File manager object for various readable file format

Parameters:

file – file object

__repr__()#

Representation of FileManager object

Returns:

string

read(pattern=None, **kwargs) Dataset#

Read file

Returns:

Dataset object

write(data)#

Write data on file

Parameters:

data – data to write on file

Returns:

None

class pyreports.io.JsonFile(filename)#

Bases: File

JSON file class

__init__(filename)#

JSON file base object.

read(**kwargs)#

Read json format

Returns:

Dataset object

write(data)#

Write data on json file

Parameters:

data – data to write on json file

Returns:

None

class pyreports.io.LdapManager(server, username, password, ssl=False, tls=True)#

Bases: Manager

LDAP manager class

__init__(server, username, password, ssl=False, tls=True)#

LDAP manager object

Parameters:
  • server – fqdn server name or ip address

  • username – username for bind operation

  • password – password of the username used for bind operation

  • ssl – disable or enable SSL. Default is False.

  • tls – disable or enable TLS. Default is True.

__repr__()#

Representation of LdapManager object

Returns:

string

query(base_search, search_filter, attributes) Dataset#

Search LDAP element on subtree base search directory

Parameters:
  • base_search – distinguishedName of LDAP base search

  • search_filter – LDAP query language

  • attributes – list of returning LDAP attributes

Returns:

Dataset object

rebind(username, password)#

Re-bind with specified username and password

Parameters:
  • username – username for bind operation

  • password – password of the username used for bind operation

Returns:

None

unbind()#

Unbind LDAP connection

Returns:

None

class pyreports.io.LogFile(filename)#

Bases: File

Log file class

__init__(filename)#

Log file base object.

read(pattern='(.*\\n|.*$)', **kwargs)#

Read with format

Parameters:

pattern – regular expression pattern

Returns:

Dataset object

write(data)#

Write data on file

Parameters:

data – data to write on file

Returns:

None

class pyreports.io.Manager#

Bases: ABC

Manager base class

__weakref__#

list of weak references to the object

class pyreports.io.MySQLConnection(*args, **kwargs)#

Bases: Connection

Connection mysql class

class pyreports.io.NoSQLManager(connection: Connection, *args, **kwargs)#

Bases: Manager, Manager

Database manager class for NOSQL connection

__init__(connection: Connection, *args, **kwargs)#
find(*args, **kwargs) Dataset#

Find data from database session

get(*args, **kwargs) Dataset#

Get data from database session

class pyreports.io.PostgreSQLConnection(*args, **kwargs)#

Bases: Connection

Connection postgresql class

class pyreports.io.SQLiteConnection(*args, **kwargs)#

Bases: Connection

Connection sqlite class

class pyreports.io.TextFile(filename)#

Bases: File

Text file class

__init__(filename)#

Text file base object.

read(**kwargs)#

Read with format

Returns:

Dataset object

write(data)#

Write data on file

Parameters:

data – data to write on file

Returns:

None

class pyreports.io.YamlFile(filename)#

Bases: File

YAML file class

__init__(filename)#

YAML file base object.

read(**kwargs)#

Read yaml format

Returns:

Dataset object

write(data)#

Write data on yaml file

Parameters:

data – data to write on yaml file

Returns:

None

pyreports.io.create_database_manager(dbtype, *args, **kwargs)#

Creates a DatabaseManager object

Parameters:

dbtype – type of database connection

Returns:

DatabaseManager

pyreports.io.create_file_manager(filetype, filename)#

Creates a FileManager object

Parameters:
  • filetype – type of file

  • filename – path of file

Returns:

FileManager

pyreports.io.create_ldap_manager(server, username, password, ssl=False, tls=True)#

Creates a LdapManager object

Parameters:
  • server – fqdn server name or ip address

  • username – username for bind operation

  • password – password of the username used for bind operation

  • ssl – disable or enable SSL. Default is False.

  • tls – disable or enable TLS. Default is True.

pyreports.io.create_nosql_manager(connection, *args, **kwargs)#

Creates a NoSQLManager object

Parameters:

connection – Connection object

Returns:

NoSQLManager

pyreports.io.manager(datatype, *args, **kwargs)#

Creates manager object based on datatype

Parameters:
  • datatype – type of manager

  • args – various positional arguments

  • kwargs – various keyword arguments

Returns:

Manager object

core#

The core module contains all the classes that refer to the creation and manipulation of data.

Contains all business logic and data processing.

class pyreports.core.Executor(data, header=None)#

Bases: object

Executor receives, processes, transforms, and writes data

__add__(other)#

Add row or extend Dataset

Parameters:

other – list, tuple or Dataset object

Returns:

None

__contains__(item)#

Check if an item is in a Dataset Executor object

Parameters:

item – Any item

Returns:

bool

__delitem__(key)#

Delete row into a Dataset object

Parameters:

key – row (int)

Returns:

None

__getitem__(item)#

Get row into a Dataset object

Parameters:

item – row (int)

Returns:

row

__init__(data, header=None)#

Create an Executor object

Parameters:
  • data – everything type of data

  • header – list header of data

__iter__()#

Iterate over dataset

Returns:

next value

__len__()#

Count data

Returns:

integer

__repr__()#

Representation of an Executor object

Returns:

string

__str__()#

Pretty representation of an Executor object

Returns:

string

__weakref__#

list of weak references to the object

add_column(column, value)#

Add column to data

Parameters:
  • column – column name

  • value – list value for column, or function with no arguments that returns a value

Returns:

None

clone()#

Clone Executor object

Returns:

executor

count_columns()#

Count all column

Returns:

integer

count_rows()#

Count all rows

Returns:

integer

del_column(column)#

Delete column

Parameters:

column – column name

Returns:

None

filter(flist=None, key=None, column=None, negation=False)#

Filter data through a list of strings (equal operator) and/or function key

Parameters:
  • flist – list of strings

  • key – function that takes a single argument and returns data

  • column – select column name or index number

  • negation – enable negation for flist or key

Returns:

None

get_data()#

Get dataset

Returns:

dataset

property headers#

Get header

Returns:

None

map(key, column=None)#

Apply function to data

Parameters:
  • key – function that takes a single argument

  • column – selects a column name or index number

Returns:

None

reset()#

Reset data to original data

Returns:

None

select_column(column)#

Filter dataset by column

Parameters:

column – name or index of a column

Returns:

Dataset object

class pyreports.core.Report(input_data: Dataset, title=None, filters=None, map_func=None, negation=False, column=None, count=False, output: Manager = None)#

Bases: DataAdapters, DataPrinters

Report represents the workflow for generating a report

__bool__()#

Boolean value

Returns:

bool

__delitem__(key)#

Delete row of report

Parameters:

key – int row index

Returns:

None

__getitem__(item)#

Get row of report

Parameters:

item – int row index

Returns:

row tuple

__init__(input_data: Dataset, title=None, filters=None, map_func=None, negation=False, column=None, count=False, output: Manager = None)#

Create a Report object

Parameters:
  • input_data – Dataset object

  • title – title of a Report object

  • filters – list or function for filter data

  • map_func – function for modifying data

  • negation – enable negation for filters or map_func

  • column – select column name or index

  • count – count rows

  • output – Manager object

__iter__()#

Return report iterator

Returns:

iterable object

__repr__()#

Representation of a Report object

Returns:

string

__str__()#

Pretty representation of the Report object

Returns:

string

clone()#

Clone this report instance

Returns:

Report

exec(column=None)#

Create an Executor object to apply filters and map function to input data :param: column: apply filter only a column (name or index)

Returns:

None

export()#

Process and save data on output

Returns:

if count is True, return row count

reset()#

Reset to original data

Returns:

None

send(server, _from, to, cc=None, bcc=None, subject=None, body='', auth=None, _ssl=True, headers=None)#

Send a saved report to email

Parameters:
  • server – server SMTP

  • _from – email address ‘from:’

  • to – email address ‘to:’

  • cc – email address ‘cc:’

  • bcc – email address ‘bcc:’

  • subject – email subject. Default is report title

  • body – email body

  • auth – authorization tuple “(user, password)”

  • _ssl – boolean, if True port is 465 else 25

  • headers – more header value “(header_name, key, value)”

Returns:

None

class pyreports.core.ReportBook(reports=None, title=None)#

Bases: object

ReportBook represent a collection of Report’s object

__add__(other)#

Add a report object

Parameters:

other – Report object

Returns:

ReportBook

__bool__()#

Boolean value

Returns:

bool

__delitem__(key)#

Delete a Report object

Parameters:

key – Report int index

Returns:

None

__getitem__(item)#

Get Report objects

Parameters:

item – Report int index

Returns:

Report

__init__(reports=None, title=None)#

Create a ReportBook object

Parameters:
  • reports – Report’s object list

  • title – title of a report book

__iter__()#

Return report iterator

Returns:

iterable object

__len__()#

Number of Report objects

Returns:

int

__repr__()#

Representation of a ReportBook object

Returns:

string

__str__()#

Pretty representation of a ReportBook object

Returns:

string

__weakref__#

list of weak references to the object

add(report: Report)#

Add a report object

Parameters:

report – Report object

Returns:

None

export(output=None)#

Save data on report output or an Excel workbook

Parameters:

output – output path for report export

Returns:

None

remove(index: int = None)#

Remove Report object, last added or index specified

Parameters:

index – report number to remove

Returns:

None

send(server, _from, to, cc=None, bcc=None, subject=None, body='', auth=None, _ssl=True, headers=None)#

Send a saved report to email

Parameters:
  • server – Server SMTP

  • _from – email address ‘from:’

  • to – email address ‘to:’

  • cc – email address ‘cc:’

  • bcc – email address ‘bcc:’

  • subject – email subject. Default is report title

  • body – email body

  • auth – authorization tuple “(user, password)”

  • _ssl – boolean, if True port is 465 else 25

  • headers – more header value “(header_name, key, value)”

Returns:

None

datatools#

The datatools module contains all utility functions for data processing.

Contains all functions for data processing.

class pyreports.datatools.DataAdapters(input_data: Dataset)#

Bases: DataObject

Data adapters class

aggregate(*columns, fill_value=None)#

Aggregate in the current Dataset other columns

Parameters:
  • columns – columns added

  • fill_value – fill value for empty field

Returns:

None

chunks(length)#

Yield successive n-sized chunks from Dataset

Parameters:

length – n-sized chunks

Returns:

generator

counter()#

Count value into the rows

Returns:

Counter

deduplicate()#

Remove duplicated rows

Returns:

None

merge(*datasets)#

Merge in the current Dataset other Dataset objects

Parameters:

datasets – datasets that will merge

Returns:

None

sort(column, reverse=False)#

Sort a Dataset by a specific column

Parameters:
  • column – column to sort

  • reverse – reversed order

Returns:

Dataset

subset(*columns)#

New dataset with only columns added

Parameters:

columns – select columns of new Dataset

Returns:

Dataset

class pyreports.datatools.DataObject(input_data: Dataset)#

Bases: object

Data object class

__init__(input_data: Dataset)#
__weakref__#

list of weak references to the object

clone()#

Clone itself

Returns:

Dataset

class pyreports.datatools.DataPrinters(input_data: Dataset)#

Bases: DataObject

Data printers class

__len__()#

Measure length of DataSet

Returns:

int

__repr__()#

Representation of DataObject

Returns:

string

__str__()#

Pretty representation of DataObject

Returns:

string

average(column)#

Average of list of integers or floats

Parameters:

column – column name or index

Returns:

float

most_common(column)#

The most common element in a column

Parameters:

column – column name or index

Returns:

Any

percentage(filter_)#

Calculating the percentage according to filter

Parameters:

filter – equality filter

Returns:

float

print()#

Print data

Returns:

None

pyreports.datatools.aggregate(*columns, fill_empty: bool = False, fill_value=None)#

Aggregate in a new Dataset the columns

Parameters:
  • columns – columns added

  • fill_empty – fill the empty field of data with “fill_value” argument

  • fill_value – fills value for empty field if “fill_empty” argument is specified

Returns:

Dataset

pyreports.datatools.average(data: Dataset, column)#

Average of list of integers or floats

Parameters:
  • data – Dataset object

  • column – column name or index

Returns:

float

pyreports.datatools.chunks(data: Dataset, length)#

Yield successive n-sized chunks from data

Parameters:
  • data – Dataset object

  • length – n-sized chunks

Returns:

generator

pyreports.datatools.counter(data: Dataset, column)#

Count all row value

Parameters:
  • data – Dataset object

  • column – column name or index

Returns:

Counter

pyreports.datatools.deduplicate(data: Dataset)#

Remove duplicated rows

Parameters:

data – Dataset object

Returns:

Dataset

pyreports.datatools.merge(*datasets)#

Merge two or more dataset in only one

Parameters:

datasets – Dataset object collection

Returns:

Dataset

pyreports.datatools.most_common(data: Dataset, column)#

The most common element in a column

Parameters:
  • data – Dataset object

  • column – column name or index

Returns:

Any

pyreports.datatools.percentage(data: Dataset, filter_)#

Calculating the percentage according to filter

Parameters:
  • data – Dataset object

  • filter – equality filter

Returns:

float

pyreports.datatools.sort(data, column, reverse=False)#

Sort a Dataset by a specific column

Parameters:
  • data – Dataset object

  • column – column to sort

  • reverse – reversed order

Returns:

Dataset

pyreports.datatools.subset(data: Dataset, *columns)#

Create a new Dataset with only the given columns

Parameters:
  • data – Dataset object

  • columns – selected columns

Returns:

Dataset

exception#

The exception module contains all the classes that represent explicit package exceptions.

Contains all custom exception.

exception pyreports.exception.DataObjectError#

Bases: Exception

__weakref__#

list of weak references to the object

exception pyreports.exception.ExecutorDataError#

Bases: ExecutorError

exception pyreports.exception.ExecutorError#

Bases: Exception

__weakref__#

list of weak references to the object

exception pyreports.exception.ReportDataError#

Bases: ReportException

exception pyreports.exception.ReportException#

Bases: DataObjectError

exception pyreports.exception.ReportManagerError#

Bases: ReportException