A Python package of common EDI functions.
To install this package use:
pip install MedatechUK.APY
A class to create log files.
from MedatechUK.mLog import mLog
log = mLog()
log.start( os.getcwd(), "DEBUG" )
log.logger.debug("Starting {}".format(__file__))
A class for managing oData settings.
from MedatechUK.oDataConfig import Config
c = Config( # Using this configuration
env="wlnd" , # the Priority environment
path=os.getcwd() # the location of the config file
)
A package of command line tools, including parsing the sys.argv function in Python.
progname.exe -arg value -arg2 "value two"
arg.byName(['arg','a']) = "value"
arg.byName(['arg2','a2']) = "value two"
arg.byName(['arg3','a3']) = None
A package for working with serial data.
See also: Serial object methods
from MedatechUK.Serial import SerialBase , SerialT , SerialF
# Load an Order from json file
with open('test.json', 'r') as the_file:
q = order(json=the_file)
# Save to xml
q.toFile('test2.xml', q.toXML, root="root")
A class for handling HTTP Request/Response.
See Also: the http transport example
from MedatechUK.apy import Request , Response
def ProcessRequest(request) :
log = mLog()
try:
q = order(**request.data)
q.toPri(
Config(
env=request.environment ,
path=os.getcwd()
) ,
q.toFlatOdata,
request=request
)
except Exception as e:
log.logger.critical(str(e))
exc_type, exc_obj, exc_tb = sys.exc_info()
fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
request.response.Status = 500
request.response.Message = "Internal Server Error"
request.response.data ={ "error" :
{
"type": exc_type,
"message": str(e),
"script": fname,
"line": exc_tb.tb_lineno
}
}
This package contains a debug-able inheritable Windows Service.
class MySVC(AppSvc):
_svc_name_ = "testSVC"
_svc_display_name_ = "Test Service"
def __init__(self , args):
self.Main = MySVC.main
self.Init = MySVC.init
self.Folder = Path(__file__).parent
AppSvc.__init__(self , args)
def init(self):
if self.debuginit: debugpy.breakpoint() # -debug init
# Do servce setup
def main(self):
if self.debug: debugpy.breakpoint # -debug
# Main service
self.log.logger.debug(self.clArg.byName(['env','e']))
if __name__ == '__main__':
win32serviceutil.HandleCommandLine(MySVC)
A package for working with EPDM (Solid Works) serial data.
See Also: Making the EPDM example executable.
See Also: Running the EPDM executable from a service
from MedatechUK.epdm import xmlTransactions
# Load an EPDM file.
try:
with open('example.xml', 'r') as the_file:
q = xmlTransactions(_xml=the_file)
for t in q.transactions:
recurse(t.document)
except Exception as e:
log.logger.critical(str(e))