Resource providers

Providers implement API of resources. Most of the API is documented via Resources, so this document will focus on things specific to providers.

As mentioned in Sessions, access to providers is made via session’s registry:

>>> import xal
>>> session = xal.LocalSession()
>>> session.sh  
<xal.sh.local.LocalShProvider object at 0x...>

We will use this sh provider in the examples below...

Providers are resource factories

One provider implements API of one resource type. As an example, ShProvider deals with ShCommand resource. Providers are callables, and when you call them, you create a resource:

>>> session.sh('echo "Hello"')  
ShCommand(echo "Hello")

Providers have system-level methods

Providers have some methods that don’t take a resource as argument. They are usually shortcuts. As an example, ShProvider.run() is a shortcut that creates a ShCommand instance and runs it:

>>> session.sh.run('echo "Hello"')  
<xal.sh.resource.ShResult object at 0x...>

System-level methods are described along with Resources, so that there is a single documentation page for each resource API.

Providers implement resources’ API

Most of the methods of providers are implementation of resources’ API which require interaction with the environment. Such methods take a resource as first positional argument.

But in most situations (i.e. except you are developing a provider) you don’t need to bother about such methods: just create resource instances as explained above, then use the resource instance’s API, as described in Resources.