-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathsetup.py
More file actions
130 lines (107 loc) · 4.91 KB
/
setup.py
File metadata and controls
130 lines (107 loc) · 4.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/usr/bin/python
#
# This is the Robotics Language compiler
#
# Created on: June 22, 2017
# Author: Gabriel A. D. Lopes
# Licence: Apache 2.0
# Copyright: 2014-2017 Robot Care Systems BV, The Hague, The Netherlands. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
from setuptools import setup, find_packages
long_description = """
The Robotics Language (RoL) is an open extensible domain-specific (or model-based) language for robotics. RoL is an abstraction on top of ROS to efficiently and quickly develop ROS applications using a mathematics-centred language. RoL generates ROS c++ nodes, HTML interfaces, or any other elements.
The base RoL language has a structure similar to standard high-level programming languages
```coffeescript
# A simple topic echo node
node(
name:'example echo',
definitions: block(
# the input signal
echo_in in Signals(Strings, rosTopic:'/echo/in', onNew: echo_out = echo_in ),
# the echo signal
echo_out in Signals(Strings, rosTopic:'/echo/out')
)
)
```
The power of the RoL is in its ability to integrate mini-abstraction languages:
```coffeescript
# A finite state machine
node(
name:'example state machine',
definitions: block(
# a mini-language: code is defined within `<{ }>`
FiniteStateMachine<{
name:machine
initial:idle
(idle)-start->(running)-stop->(idle)
(running)-error->(fault)-reset->(idle)
(idle)-calibration->(calibrate)-reset->(idle)
}>,
# the start signal
start in Signals(Empty, rosTopic:'/start', onNew: machine.fire('start')),
# the stop signal
stop in Signals(Empty, rosTopic:'/stop', onNew: machine.fire('stop'))
)
)
```
The RoL is in practice an open compiler where users can develop their own languages by means of plug-ins. The RoL is programmed in python and uses XML as the internal abstract syntax tree.
"""
long_description = """
The Robotics Language (RoL) is an open extensible domain-specific (or model-based) language for robotics. RoL is an abstraction on top of ROS to efficiently and quickly develop ROS applications using a mathematics-centred language. RoL generates ROS c++ nodes, HTML interfaces, or any other elements.
For more information see [the Robotics Language github repository](https://github.com/robotcaresystems/RoboticsLanguage)
"""
path = os.path.abspath(os.path.dirname(__file__))+'/RoboticsLanguage'
result = [os.path.join(dp, f) for dp, dn, filenames in os.walk(path) for f in filenames]
setup(name='RoboticsLanguage',
version='0.3.26',
description='The Robotics Language',
long_description=long_description,
long_description_content_type='text/markdown',
url='http://github.com/robotcaresystems/roboticslanguage',
author='Gabriel A. D. Lopes',
author_email='g.a.d.lopes@gmail.com',
license='Apache 2.0',
packages=find_packages(),
include_package_data=True,
package_data={
'RoboticsLanguage': result
},
scripts=['RoboticsLanguage/Scripts/rol',
'RoboticsLanguage/Scripts/make/rol_make_documentation',
'RoboticsLanguage/Scripts/docker/ros1/rol_docker',
'RoboticsLanguage/Scripts/docker/ros1/rol_docker_development',
'RoboticsLanguage/Scripts/docker/ros2/rol2_docker',
'RoboticsLanguage/Scripts/docker/ros2/rol2_docker_development',
'RoboticsLanguage/Scripts/docker/AWSRobomaker/rol_aws_docker',
'RoboticsLanguage/Scripts/docker/AWSRobomaker/rol_aws_docker_development',
],
install_requires=[
'parsley', 'argparse', 'argcomplete', 'jinja2', 'dpath', 'coloredlogs', 'lxml', 'iso-639', 'funcy', 'dill', 'pygments', 'fso', 'pyyaml', 'autopep8', 'cloudpickle', 'coverage'
],
classifiers=[
'Development Status :: 3 - Alpha',
'Environment :: Console',
'Environment :: Web Environment',
'Intended Audience :: Developers',
'Intended Audience :: Education',
'Intended Audience :: Science/Research',
'License :: OSI Approved :: Apache Software License',
'Operating System :: OS Independent',
'Programming Language :: Python :: 2.7',
'Topic :: Scientific/Engineering',
'Topic :: Software Development :: Code Generators',
'Topic :: Software Development :: Compilers'
],
zip_safe=False)