| The Gaudi Framework v27r1

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Member Functions | Protected Member Functions | Private Attributes | List of all members
PythonScriptingSvc Class Reference

This service handles scripting implemented using Python. More...

`#include <GaudiPython/PythonScriptingSvc.h>`

Inheritance diagram for PythonScriptingSvc:
[legend]
Collaboration diagram for PythonScriptingSvc:
[legend]

## Public Member Functions
| PythonScriptingSvc (const std::string &name, ISvcLocator *svc)
| Standard Constructor. More...
virtual StatusCode | initialize ()
| Initialize the service. [IService::initialize()]. More...
virtual StatusCode | finalize ()
| Finalize the service. [IService::finalize()]. More...
virtual StatusCode | run ()
| Run the service by taking full control. [IRunable::run()]. More...
Public Member Functions inherited from extends< Service, IRunable >
void * | i_cast (const InterfaceID &tid) const override
| Implementation of IInterface::i_cast. More...
StatusCode | queryInterface (const InterfaceID &ti, void **pp) override
| Implementation of IInterface::queryInterface. More...
std::vector< std::string > | getInterfaceNames () const override
| Implementation of IInterface::getInterfaceNames. More...
| ~extends () override=default
| Virtual destructor. More...
Public Member Functions inherited from Service
const std::string & | name () const override
| Retrieve name of the service. More...
StatusCode | configure () override
StatusCode | initialize () override
StatusCode | start () override
StatusCode | stop () override
StatusCode | finalize () override
StatusCode | terminate () override
Gaudi::StateMachine::State | FSMState () const override
Gaudi::StateMachine::State | targetFSMState () const override
StatusCode | reinitialize () override
StatusCode | restart () override
StatusCode | sysInitialize () override
| Initialize Service. More...
StatusCode | sysStart () override
| Initialize Service. More...
StatusCode | sysStop () override
| Initialize Service. More...
StatusCode | sysFinalize () override
| Finalize Service. More...
StatusCode | sysReinitialize () override
| Re-initialize the Service. More...
StatusCode | sysRestart () override
| Re-initialize the Service. More...
StatusCode | setProperty (const Property &p) override
StatusCode | setProperty (const std::string &s) override
StatusCode | setProperty (const std::string &n, const std::string &v) override
StatusCode | getProperty (Property *p) const override
const Property & | getProperty (const std::string &name) const override
StatusCode | getProperty (const std::string &n, std::string &v) const override
const std::vector< Property * > & | getProperties () const override
bool | hasProperty (const std::string &name) const override
template<class TYPE >
StatusCode | setProperty (const std::string &name, const TYPE &value)
| set the property form the value More...
| Service (std::string name, ISvcLocator *svcloc)
| Standard Constructor. More...
SmartIF< ISvcLocator > & | serviceLocator () const override
| Retrieve pointer to service locator. More...
StatusCode | setProperties ()
| Method for setting declared properties to the values specified for the job. More...
template<class T >
StatusCode | service (const std::string &name, const T *&psvc, bool createIf=true) const
| Access a service by name, creating it if it doesn't already exist. More...
template<class T >
StatusCode | service (const std::string &name, T *&psvc, bool createIf=true) const
template<typename IFace = IService>
SmartIF< IFace > | service (const std::string &name, bool createIf=true) const
template<class T >
StatusCode | service (const std::string &svcType, const std::string &svcName, T *&psvc) const
| Access a service by name and type, creating it if it doesn't already exist. More...
template<class T >
Property * | declareProperty (const std::string &name, T &property, const std::string &doc="none") const
| Declare the named property. More...
Property * | declareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="") const
| Declare remote named properties. More...
template<class T >
StatusCode | declarePrivateTool (ToolHandle< T > &handle, std::string toolTypeAndName="", bool createIf=true)
| Declare used Private tool. More...
template<class T >
StatusCode | declarePublicTool (ToolHandle< T > &handle, std::string toolTypeAndName="", bool createIf=true)
| Declare used Public tool. More...
SmartIF< IAuditorSvc > & | auditorSvc () const
| The standard auditor service.May not be invoked before sysInitialize() has been invoked. More...
Public Member Functions inherited from CommonMessagingBase
virtual | ~CommonMessagingBase ()=default
| Virtual destructor. More...
SmartIF< IMessageSvc > & | msgSvc () const
| The standard message service. More...
MsgStream & | msgStream () const
| Return an uninitialized MsgStream. More...
MsgStream & | msgStream (const MSG::Level level) const
| Predefined configurable message stream for the efficient printouts. More...
MsgStream & | always () const
| shortcut for the method msgStream(MSG::ALWAYS) More...
MsgStream & | fatal () const
| shortcut for the method msgStream(MSG::FATAL) More...
MsgStream & | err () const
| shortcut for the method msgStream(MSG::ERROR) More...
MsgStream & | error () const
| shortcut for the method msgStream(MSG::ERROR) More...
MsgStream & | warning () const
| shortcut for the method msgStream(MSG::WARNING) More...
MsgStream & | info () const
| shortcut for the method msgStream(MSG::INFO) More...
MsgStream & | debug () const
| shortcut for the method msgStream(MSG::DEBUG) More...
MsgStream & | verbose () const
| shortcut for the method msgStream(MSG::VERBOSE) More...
MsgStream & | msg () const
| shortcut for the method msgStream(MSG::INFO) More...
MSG::Level | msgLevel () const
| get the output level from the embedded MsgStream More...
MSG::Level | outputLevel () const __attribute__((deprecated))
| Backward compatibility function for getting the output level. More...
bool | msgLevel (MSG::Level lvl) const
| get the output level from the embedded MsgStream More...
Public Member Functions inherited from extend_interfaces< Interfaces...>
| ~extend_interfaces () override=default
| Virtual destructor. More...

## Protected Member Functions
virtual | ~PythonScriptingSvc ()
| Destructor. More...
Protected Member Functions inherited from Service
| ~Service () override
| Standard Destructor. More...
int | outputLevel () const
| get the `Service's` output level More...
Protected Member Functions inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
void | updateMsgStreamOutputLevel (int level)
| Update the output level of the cached MsgStream. More...

## Private Attributes
std::string | m_startupScript
| Startup script. More...

## Additional Inherited Members
Public Types inherited from extends< Service, IRunable >
using | base_class = extends
| Typedef to this class. More...
using | extend_interfaces_base = extend_interfaces< Interfaces...>
| Typedef to the base of this class. More...
Public Types inherited from Service
typedef Gaudi::PluginService::Factory< IService *, const std::string &, ISvcLocator * > | Factory
Public Types inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
using | base_class = CommonMessaging
Public Types inherited from extend_interfaces< Interfaces...>
using | ext_iids = typename Gaudi::interface_list_cat< typename Interfaces::ext_iids...>::type
| take union of the ext_iids of all Interfaces... More...
Protected Attributes inherited from Service
IntegerProperty | m_outputLevel = MSG::NIL
| Service output level. More...
Gaudi::StateMachine::State | m_state = Gaudi::StateMachine::OFFLINE
| Service state. More...
Gaudi::StateMachine::State | m_targetState = Gaudi::StateMachine::OFFLINE
| Service state. More...

## Detailed Description

This service handles scripting implemented using Python.

Author
  Pere Mato
  David Quarrie

Date
  2001

Definition at line 15 of file PythonScriptingSvc.h.

## Constructor & Destructor Documentation

PythonScriptingSvc::PythonScriptingSvc | ( | const std::string & | name,
|  | ISvcLocator * | svc
| ) |  |

Standard Constructor.

Definition at line 23 of file PythonScriptingSvc.cpp.

25 : base_class(name, svc) {
26 // Declare the startup script Property
27 declareProperty( "StartupScript", m_startupScript = "" );
28 }
extends< Service, IRunable >::base_class
extends base_class
Typedef to this class.
Definition: extends.h:14
PythonScriptingSvc::m_startupScript
std::string m_startupScript
Startup script.
Definition: PythonScriptingSvc.h:36
Service::declareProperty
Property * declareProperty(const std::string &name, T &property, const std::string &doc="none") const
Declare the named property.
Definition: Service.h:215

PythonScriptingSvc::~PythonScriptingSvc | ( |  | ) |
| protected virtual

Destructor.

Definition at line 31 of file PythonScriptingSvc.cpp.

31 { }

## Member Function Documentation

StatusCode PythonScriptingSvc::finalize | ( |  | ) |
| virtual

Finalize the service. [IService::finalize()].

Definition at line 96 of file PythonScriptingSvc.cpp.

98 {
99 // Finalize this specific service
100 StatusCode sc = Service::finalize();
101 if ( sc.isFailure() ) return sc;
102
103 // Shutdown the Python interpreter
104 Py_Finalize();
105 return StatusCode::SUCCESS;
106 }
Service::finalize
StatusCode finalize() override
Definition: Service.cpp:193
merge_files.sc
int sc
Definition: merge_files.py:167
StatusCode::isFailure
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:86
StatusCode::SUCCESS
Definition: StatusCode.h:30
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26

StatusCode PythonScriptingSvc::initialize | ( |  | ) |
| virtual

Initialize the service. [IService::initialize()].

Definition at line 35 of file PythonScriptingSvc.cpp.

37 {
38 // initialize the Service Base class
39 StatusCode sc = Service::initialize();
40 if ( sc.isFailure() ) return sc;
41
42
43 // Setup startup script. If none is explicitly specified, then
44 // use the ApplicationMgr JobOptionsPath property as long as
45 // the JobOptionsType property is set to "NONE".
46 if( m_startupScript.empty() ) {
47 auto prpMgr = serviceLocator()->as<IProperty>();
48 if ( prpMgr ) {
49 StringProperty tmp;
50 tmp.assign(prpMgr->getProperty("JobOptionsType"));
51 if ( tmp.value( ) == "NONE" ) {
52 tmp.assign(prpMgr->getProperty("JobOptionsPath"));
53 m_startupScript = tmp;
54 }
55 }
56 }
57
58 char* progName[] = { const_cast<char*>("GaudiPython") };
59
60 // Initialize the Python interpreter. Required.
61 Py_Initialize();
62 // Set argv for Tkinter (needs program name)
63 PySys_SetArgv( 1, progName );
64 // Get the Python version
65 std::string fullversion = Py_GetVersion();
66 std::string version( fullversion, 0, fullversion.find_first_of(' '));
67 std::string vers(version, 0, version.find_first_of('.',version.find_first_of('.')+1));
68 info() << "Python version: [" << vers << "]" << endmsg;
69
70 #if defined(__linux)
71 // This is hack to make global the python symbols
72 // which are needed by the other python modules
73 // (eg. readline, math, etc,) libraries.
74 std::string libname = "libpython" + vers + ".so";
75 dlopen(libname.c_str(), RTLD_GLOBAL | RTLD_LAZY);
76 #endif
77
78
79 // Startup commands
80 PyRun_SimpleString( "from gaudimodule import *" );
81 PyRun_SimpleString( "g = AppMgr()" );
82 // backward compatibility with SIPython
83 PyRun_SimpleString( "theApp = g" );
84 PyRun_SimpleString( "def Service(n): return g.service(n)" );
85 PyRun_SimpleString( "def Algorithm(n): return g.algorithm(n)" );
86 PyRun_SimpleString( "def Property(n): return g.service(n)" );
87 // For command-line completion (unix only)
88 #if !defined( _WIN32 )
89 PyRun_SimpleString( "import rlcompleter");
90 PyRun_SimpleString( "rlcompleter.readline.parse_and_bind('tab: complete')");
91 #endif
92 return StatusCode::SUCCESS;
93 }
Service::initialize
StatusCode initialize() override
Definition: Service.cpp:68
Service::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator.
Definition: Service.cpp:324
std::string::empty
T empty(T...args)
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:124
ISvcLocator::as
SmartIF< IFace > as()
Definition: ISvcLocator.h:106
merge_files.sc
int sc
Definition: merge_files.py:167
StatusCode::isFailure
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:86
std::string
STL class.
SimpleProperty< std::string >
StatusCode::SUCCESS
Definition: StatusCode.h:30
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
PythonScriptingSvc::m_startupScript
std::string m_startupScript
Startup script.
Definition: PythonScriptingSvc.h:36
std::string::find_first_of
T find_first_of(T...args)
PropertyWithValue::value
const TYPE & value() const
explicit conversion
Definition: Property.h:341
PropertyWithValue::assign
bool assign(const Property &source) override
get the value from another property
Definition: Property.h:269
std::string::c_str
T c_str(T...args)
IProperty
The IProperty is the basic interface for all components which have properties that can be set or get...
Definition: IProperty.h:21
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244

StatusCode PythonScriptingSvc::run | ( |  | ) |
| virtual

Run the service by taking full control. [IRunable::run()].

Definition at line 109 of file PythonScriptingSvc.cpp.

111 {
112 if ( !m_startupScript.empty() ) {
113 std::ifstream file{m_startupScript};
114 std::stringstream stream;
115 if( file ) {
116 std::string buffer;
117 file.seekg(0, std::ios::end);
118 buffer.reserve(file.tellg());
119 file.seekg(0, std::ios::beg);
120 buffer.assign((std::istreambuf_iterator<char>{file}),
121 std::istreambuf_iterator<char>{});
122 file.close();
123 PyRun_SimpleString( buffer.c_str() );
124 } else {
125 warning() << "Python startup file " << m_startupScript << " not found" << endmsg;
126 }
127 }
128 PyRun_InteractiveLoop(stdin, "\0");
129 return StatusCode::SUCCESS;
130 }
std::string::empty
T empty(T...args)
std::istreambuf_iterator
std::stringstream
STL class.
std::string
STL class.
CommonMessagingBase::warning
MsgStream & warning() const
shortcut for the method msgStream(MSG::WARNING)
Definition: CommonMessaging.h:121
StatusCode::SUCCESS
Definition: StatusCode.h:30
PythonScriptingSvc::m_startupScript
std::string m_startupScript
Startup script.
Definition: PythonScriptingSvc.h:36
end
auto end(reverse_wrapper< T > &w)
Definition: reverse.h:47
ana.file
list file
Definition: ana.py:160
std::string::assign
T assign(T...args)
std::string::c_str
T c_str(T...args)
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
std::ifstream
STL class.
std::string::reserve
T reserve(T...args)

## Member Data Documentation

std::string PythonScriptingSvc::m_startupScript
| private

Startup script.

Definition at line 36 of file PythonScriptingSvc.h.

The documentation for this class was generated from the following files:

- GaudiPython/src/Services/PythonScriptingSvc.h
- GaudiPython/src/Services/PythonScriptingSvc.cpp