__init__.py
Go to the documentation of this file.
1 import datetime
2 import os
3 import rospy
4 import platform
5 from rosnode import ID
6 from rosservice import get_service_headers
7 import roslib.scriptutil
8 from .workspace import workspace
9 
10 master = roslib.scriptutil.get_master()
11 state = None
12 
13 specific_platform_methods = {
14  'Linux': platform.libc_ver,
15  'Windows': platform.win32_ver,
16  'Darwin': platform.mac_ver,
17 }
18 
19 
20 def _succeed(args):
21  code, msg, val = args
22  if code != 1:
23  return None
24  else:
25  return val
26 
27 
28 def get_state():
29  global state
30  if not state:
31  state = _succeed(master.getSystemState(ID))
32  return state
33 
34 
35 def system():
36  d = {}
37  d['architecture'] = '/'.join(platform.architecture())
38  for key in ['machine', 'node', 'platform', 'processor', 'python_version', 'release', 'system', 'version']:
39  d[key] = getattr(platform, key)()
40 
41  if d['system'] in specific_platform_methods:
42  d['info'] = '/'.join(specific_platform_methods[d['system']]())
43 
44  if d['system'] == 'Linux':
45  try:
46  linux = {}
47  for line in open('/etc/os-release').readlines():
48  a, _, b = line.strip().partition('=')
49  linux[a] = b
50  d['linux_codename'] = linux['PRETTY_NAME']
51  except OSError:
52  pass
53 
54  now = datetime.datetime.now()
55  d['timestamp'] = now.timestamp()
56  d['time'] = now
57 
58  return d
59 
60 
62  d = {}
63  for k, v in os.environ.items():
64  for prefix in ['ROS_']:
65  if k.startswith(prefix):
66  d[k] = v
67  return d
68 
69 
70 def parameters():
71  return rospy.get_param('/')
72 
73 
74 def nodes():
75  d = {}
76  state = get_state()
77  if not state:
78  return d
79  for name, info in zip(['pubs', 'subs', 'srvs'], state):
80  for topic, nodes in sorted(info):
81  for node in nodes:
82  if node not in d:
83  d[node] = {}
84  if name not in d[node]:
85  d[node][name] = []
86  if topic not in d[node][name]:
87  d[node][name].append(topic)
88  return d
89 
90 
91 def topics():
92  d = {}
93  pub_topics = _succeed(master.getPublishedTopics(ID, '/'))
94  if not pub_topics:
95  return d
96 
97  return {a: b for (a, b) in pub_topics}
98 
99 
100 def services():
101  d = {}
102  state = get_state()
103  if not state:
104  return d
105  for service_name, nodes in state[2]:
106  _, _, service_uri = master.lookupService('/rosservice', service_name)
107  headers = get_service_headers(service_name, service_uri)
108  d[service_name] = headers['type']
109  return d
110 
111 
112 modules = [system, environmental_variables, parameters, nodes, topics, services, workspace]
system_fingerprint.environmental_variables
def environmental_variables()
Definition: __init__.py:61
system_fingerprint._succeed
def _succeed(args)
Definition: __init__.py:20
system_fingerprint.get_state
def get_state()
Definition: __init__.py:28
system_fingerprint.parameters
def parameters()
Definition: __init__.py:70
system_fingerprint.services
def services()
Definition: __init__.py:100
system_fingerprint.nodes
def nodes()
Definition: __init__.py:74
system_fingerprint.system
def system()
Definition: __init__.py:35
system_fingerprint.topics
def topics()
Definition: __init__.py:91


system_fingerprint
Author(s):
autogenerated on Wed May 14 2025 02:20:56