Use Tiled in Python without an HTTP server¶
Tiled is designed “service-first”, and all clients including the Python one typically operate using HTTP over TCP. But in some situations it can be convenient to access a Tree’s data more directly in Python. Such as:
You only care about accessing the data from Python, you don’t care about enforcing any access controls (the user is trusted), and you don’t want to pay for transporting the data through the network from service to client.
You are developing or debugging, and you’d like exceptions from the service to be raised directly in the client process.
In these situations, you may run the service and the client in the same process.
From a (service-side) Tree instance¶
from tiled.examples.generated_minimal import tree as service_side_tree
from tiled.client import from_tree
client = from_tree(service_side_tree)
This service_side_tree
is not generally meant to be used directly,
so we “connect” to it with a client. But, unlike with tiled serve ...
the communication is all in-process and does not incur network overhead
or the debugging complexity of working with inter-process communication.
From configuration¶
The configuration may be given as:
a dictionary of configuration
a filepath to a configuration file
a filepath to a directory of one or more configuration files
From a dict of configuration:
from tiled.client import from_config
config = {
"trees": [
{
"path": "/",
"tree": "tiled.examples.generated_minimal:tree",
}
}
client = from_config(config)
From a configuration file:
client = from_config("path/to/config.yml")
From a directory of configuration files:
client = from_config("path/to/directory/")
Direct access to the service-side object¶
For advanced debugging, it is sometimes useful to set aside the client entirely and working directly with the “service-side” Tree object. To construct one from configuration:
from tiled.config import direct_access
service_side_tree = direct_access(config)
where, as in the section above, config
may be a dictionary of configuration
or filepath.
To construct one from a profile name:
from tiled.config import direct_access_from_profile
service_side_tree = direct_access_from_profile("profile_name")