Skip to main content

Tools we use at Somenergia and can be useful

Project description


This module includes different Python modules and scripts ubiquiously used on scripts in SomEnergia cooperative but with no entity by themselves to have their own repository.

  • venv: run a command under a Python virtual enviroment
  • script to run parametrized sql queries and get the result as (tab separated) csv.
  • module with db related functions
    • fetchNs: a generator that wraps db cursors to fetch objects with attributes instead of psycopg arrays
    • nsList: uses the former to build a list of such object (slower but maybe convinient)
    • csvTable: turns the results of a query into a tab separated table with proper header names
  • convenience class to retrieve data from gdrive spreadshets
  • trace: quickly enable and disable tracing function calling by decorating them with @trace
  • testutils: module with common test utilities
    • testutils.assertNsEqual: structure equality assertion using sorted key yaml dumps
    • testutils.destructiveTest: decorator to avoid running destructive tests in production

venv script

This script is useful to run Python scripts under a given virtual environment. It is specially useful to run Python scripts from crontab lines.


Runs an SQL file and outputs the result of the query as tabulator separated csv.a

You can provide query parameters either as yamlfile or as commandline options. <sqlfile> [<yamlfile>] [--<var1> <value1> [--<var2> <value2> ..] ]

dbutils Python module

Convenient cursor wrappers to make the database access code more readable.


import psycopg2, dbutils
db = psycopg2.connect(**dbconfiguration)
with db.cursor() as cursor :
	cursor.execute("SELECT name, age FROM people")
	for person as dbutils.fetchNs(cursor):
		if person.age < 21: continue
		print("{name} is {age} years old".format(person))

sheetfetcher Python module

Convenient wraper for gdrive.

from sheetfetcher import SheetFetcher

fetcher = SheetFetcher(
	documentName='My Document',
table = fetcher.get_range("My Sheet", "A2:F12")
fulltable = fetcher.get_fullsheet("My Sheet")


This decorator is a fast helper to trace calls to functions and methods. It will show the name of the functions the values of the parameters and the returned values.

from trace import trace

def factorial(n):
    if n<1: return 1
    return n*factorial(n-1)


('> factorial', (6,))
('> factorial', (5,))
('> factorial', (4,))
('> factorial', (3,))
('> factorial', (2,))
('> factorial', (1,))
('> factorial', (0,))
('< factorial', (0,), '->', 1)
('< factorial', (1,), '->', 1)
('< factorial', (2,), '->', 2)
('< factorial', (3,), '->', 6)
('< factorial', (4,), '->', 24)
('< factorial', (5,), '->', 120)
('< factorial', (6,), '->', 720)


Allows to assert equality on json/yaml like structures combining dicts, lists, numbers, strings, dates... The comparision is done on the YAML output so that differences are spoted as text diffs. Also keys in dicts are alphabetically sorted.


An utility to avoid running destrutive tests in production. It is a decorator that checks wheter the erp configured in dbconfig has the testing flag and skips the test if it doesn't.

The script is also provided to set/unset that testing flag which is not defined by default.


Module for simplified isodate parsing and timezone handling.


Interprets strings like the ones the standard Print Dialog uses to specify pages to be printed. ie. "2,4,6-9,13" means "2, 4, from 6 to 9 and 13"

Project details

Download files

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

Files for somutils, version 1.6.1
Filename, size File type Python version Upload date Hashes
Filename, size somutils-1.6.1.tar.gz (12.1 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page