rubypython-raspi 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.autotest ADDED
@@ -0,0 +1,3 @@
1
+ require 'rubygems'
2
+
3
+ # vim: syntax=ruby
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.bundle
2
+ *.log
3
+ *.o
4
+ *.pyc
5
+ *.so
6
+ *.swp
7
+ *~
8
+ .DS_Store
9
+ .rake_tasks~
10
+ .rvmrc
11
+ .yardoc/
12
+ coverage.info
13
+ coverage/
14
+ doc/
15
+ html/
16
+ pkg/
17
+ publish/
18
+ website/index.html
data/.hgignore ADDED
@@ -0,0 +1,20 @@
1
+ syntax:glob
2
+ *.bundle
3
+ *.log
4
+ *.o
5
+ *.pyc
6
+ *.so
7
+ *.swp
8
+ *~
9
+ .DS_Store
10
+ .rake_tasks~
11
+ .rvmrc
12
+ .yardoc/*
13
+ coverage.info
14
+ coverage/*
15
+ doc/*
16
+ ext/*/Makefile
17
+ html/*
18
+ pkg/*
19
+ publish/*
20
+ website/index.html
data/.hgtags ADDED
@@ -0,0 +1,10 @@
1
+ 910a6e5ac94959fd6d9b04caea995afd354531f6 v0.2.3
2
+ 7361975ce7bbbdd284e1d9f84344d4f8df6e9eab v0.2.8
3
+ 09e65f05148ae3e1ba5f54156cd7bcf159cfe14f v0.2.9
4
+ 7ebd15a009f37aefab52e8e669080eed165320a0 v0.2.10
5
+ fe1fe7136461a92e4012cd7c8f23c8c446d4fbc1 v0.2.11
6
+ 746fffb7ee3db61278d592c303939daeb6a17a03 v0.3.1
7
+ e61cfeb18e14c8d0d86e68459bf7957535c4452b v0.3.2
8
+ 0e18cecdd4b7d6261a708a9b60b80a4794efac89 r0.5.0
9
+ cd45222e2319bf006798c50f5c18669ae6160246 r0.5.2
10
+ b82963530f976af0cc0f4e62488b5112028fdfc9 r0.5.3
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --colour
2
+ --format documentation
data/Contributors.rdoc ADDED
@@ -0,0 +1,10 @@
1
+ == Contributors
2
+
3
+ RubyPython has a growing list of contributors.
4
+
5
+ * Zach Raines (raineszm)
6
+ * The creator of RubyPython.
7
+ * Steeve Morin (steeve)
8
+ * Austin Ziegler (halostatue)
9
+ * Aman Gupta (tmm1)
10
+ * Ben Doerr (bendoerr)
data/History.rdoc ADDED
@@ -0,0 +1,192 @@
1
+ === 0.6 / 2011-MM-DD
2
+ * Major Enhancements:
3
+ * Previous versions of RubyPython theoretically allowed the loading of
4
+ different Python interpreters during a single Ruby session. Because of the
5
+ likelihood of crashes, this functionality has been removed. Now, if you
6
+ attempt to start RubyPython more than once while specifying different
7
+ Python interpreters, RubyPython will print a warning and continue working
8
+ with the already loaded interpreter.
9
+ * The Python interpreter DLL will only be loaded once. It is configured with
10
+ a self-removing method, Interpreter#infect! instead of require/load reload
11
+ hacks.
12
+ * Removed RubyPython.configure; since the interpreter can only be configured
13
+ once, independent configuration no longer makes sense.
14
+ * Minor Enhancements:
15
+ * RubyPython interpreter initialization is done with a Mutex synchronization
16
+ to ensure that only one Python interpreter DLL is loaded.
17
+ * Added RubyPython::Tuple, a simple subclass of ::Array that will correctly
18
+ be converted to a Python tuple object such that isinstance(x, tuple)
19
+ returns True.
20
+ * Renamed RubyPython::PythonExec to RubyPython::Interpreter. Added some
21
+ helper methods to assist with comparison. Construction is with an options
22
+ hash.
23
+ * The #update methods on Python interpreter observers are now private. This
24
+ is an implementation detail, not a public interface. (The methods have also
25
+ been renamed to #python_interpreter_update.)
26
+ * Deprecation:
27
+ * RubyPython's legacy mode (automatic unboxing of Python proxy objects where
28
+ possible) has been deprecated and will be removed in the next non-bugfix
29
+ release after this version. Introduced a new private method
30
+ (RubyPython.legacy_mode?) to check if legacy mode is turned on so that the
31
+ deprecation warning is not printed in all uses of RubyPython.
32
+
33
+ === 0.5.3 / 2011-10-22
34
+ * Bug Fixes:
35
+ * Improved 64-bit Python detection on Unixes with Linux-like semantics (e.g.,
36
+ .../lib64). Resolves issue #7 on bitbucket.
37
+
38
+ === 0.5.2 / 2011-10-21
39
+ * Minor Enhancements:
40
+ * The traceback for Python exceptions is now returned usefully. [raineszm]
41
+ * Bug Fixes:
42
+ * Improved the robustness of Windows DLL detection. Based on work by
43
+ bendoerr, raineszm, and halostatue.
44
+
45
+ === 0.5.1 / 2011-03-17
46
+ * Major Enhancements:
47
+ * Procs and methods can be passed to Python. [raineszm]
48
+ * Python to Ruby inheritance: A Ruby class can inherit from a Python class
49
+ (EXPERIMENTAL). [steeve]
50
+ * The Python library can now be reloaded (EXPERIMENTAL). There is a good
51
+ chance of a segfault if this is used with a native extension. [raineszm]
52
+ * Python functions and methods can be called with a terminal exclamation
53
+ point to enable keyword argument processing in Python (EXPERIMENTAL). [tmm1]
54
+ * Minor Enhancements:
55
+ * Improved Python generator support. [steeve]
56
+ * PythonError now inherits from RuntimeError. [halostatue]
57
+ * Added a Py_REFCNT macro for debugging reference counting. [tmm1]
58
+ * Changes:
59
+ * Moved to RSpec2. [halostatue]
60
+ * Moved Rakefile to hoe; added autotest. [halostatue]
61
+ * Bug Fixes:
62
+ * Fixed a reference counting bug that could crash the Python VM. [steeve]
63
+ * Fixed a memory leak/reference counting bug related to method invocation
64
+ (when turning the argument list into a tuple, PyList_SetItem steals
65
+ references). Depends on FFI 1.0.7 (or higher) with modifications to
66
+ aggressively free temporary Python objects created. [tmm1]
67
+ * Restored Ruby 1.8.7 compatibility where possible. [halostatue]
68
+ * Fixed FFI loader to be more robust and do more through FFI. [halostatue]
69
+ * Fixed documentation errors. [halostatue]
70
+ * Project Management:
71
+ * Rupy has been merged back into RubyPython.
72
+ * Made the project website on RubyForge generatable from the readme and a
73
+ template. Adopted the 960 grid system and modern CSS techniques.
74
+ * Added a contributors document.
75
+
76
+ === 0.4.1 / / 2011-01-10
77
+ * Rupy was created as an active fork of Zach Raines's RubyPython and released
78
+ indepdently.
79
+ * Major Enhancements:
80
+ * Python/Ruby callbacks [steeve]
81
+ * Virtualenv support [steeve]
82
+ * Python-style generators with Ruby (generators only work on Ruby 1.9).
83
+ [steeve]
84
+
85
+ === 0.3.2 / 2011-02-02
86
+ * Major Enhancements
87
+ * Allow procs and methods to be passed to Ruby.
88
+ * Allow configuration of the loaded Python library.
89
+
90
+ === 0.3.1 / 2011-01-19
91
+ * Compatability Updates
92
+ * Cleanup of code which finds Python library thanks to Austin Ziegler.
93
+
94
+ === 0.3.0 / 2010-09-06
95
+ * Major Enhancements
96
+ * Version 0.3.0 represents an almost complete rewrite of the RubyPython
97
+ codebase.
98
+ * A native C extension is no longer required. RubyPython uses the 'ffi' gem.
99
+ * RubyPython by default now returns proxy instances for all Ruby objects. See
100
+ the documentation for more information.
101
+ * Compatibility Updates
102
+ * Version 0.3.0 was created with the goal of being compatible with as many
103
+ Ruby versions as possible. It should at the very least run on MRI 1.8.6 -
104
+ 1.9.1.
105
+ * A legacy mode option has been added to provide partial compatibility with
106
+ version 0.2.x.
107
+
108
+ === 0.2.11 / 2010-07-12
109
+ * Bug Fixes
110
+ * Fixed some issues with building the extension under ruby 1.9. Should now be
111
+ truly 1.9 compatible.
112
+
113
+ === 0.2.10 / 2010-07-08
114
+ * Bug Fixes
115
+ * Made some changes to how the native extension is configured and build.
116
+
117
+ === 0.2.9 / 2009-10-19
118
+ * Minor Enhancements
119
+ * Updated the C code to make it cleaner, more readable, and more
120
+ maintainable.
121
+
122
+ === 0.2.8 / 2009-10-05
123
+ * Bug Fixes
124
+ * Some test files were improperly formatted (minor bug fix).
125
+
126
+ === 0.2.7 / 2009-3-30
127
+ * Bug Fixes
128
+ * Fixed some bugs which caused rubypython to be unable to determine python
129
+ version correctly.
130
+
131
+ === 0.2.6 / 2009-3-19
132
+ * Bug Fixes
133
+ * Further updates to increase compatibility with 1.9.
134
+
135
+ === 0.2.5 / 2009-3-18
136
+ * Bug Fixes
137
+ * Updated to build and run under Ruby 1.9.
138
+
139
+ === 0.2.4 / 2008-10-24
140
+ * Major Enhancements
141
+ * Provided setter methods for object attributes. Python object attributes can
142
+ now be set from within ruby.
143
+ * Made wrapper classes a subclass of custom made blank object class to try to
144
+ avoid name collisions.
145
+ * Bug Fix
146
+ * Changed part of extconf.rb file that would not work under windows.
147
+
148
+ === 0.2.3 / 2008-08-29
149
+ * 2 Major Enhancements
150
+ * Introduced PyMain object as a singleton wrapper for the Python __main__ and
151
+ __builtin__ modules.
152
+ * Introduced block functionality for PyMain object.
153
+ * Compatibility Updates
154
+ * Changed some declarations in the C code to make RubyPython more compatible
155
+ with the style conventions of the Ruby C API.
156
+ * Update how RubyPython locates the Python headers and library.
157
+ * 1 Bug Fix
158
+ * Fixed an error in ptor.c that might have prevented RubyPython from building
159
+ correctly on certain systems.
160
+
161
+ === 0.2.2 / 2008-08-07
162
+ * Major Enhancements
163
+ * Wrapped classes and instances should now behave as expected.
164
+ * Gave RubyPyClasses a "new" method for creating instances.
165
+ * Callable class can now be called provided that at least one argument is
166
+ given.
167
+ * A wrapped object's respond_to? method now has some relation to its actual
168
+ methods.
169
+ * Bug fixes
170
+ * Fixed bug with inspect method of RubyPyObject that caused a bus error when
171
+ inspecting certain objects
172
+
173
+ === 0.2.1 / 2008-08-02
174
+ * 1 Bug Fix
175
+ * Incorrect require fixed
176
+
177
+ === 0.2.0 / 2008-08-02
178
+ * 3 major enhancements
179
+ * RubyPython can now effectively convert or wrap most types from Python.
180
+ * Errors in the Python interpreter are relayed to Ruby errors.
181
+ * Less seg faults by mass.
182
+ * Bug Fixes
183
+ * RubyPython.run did not work correctly. This is fixed now.
184
+ * Cleanup in RubyPython.stop fixes some issues in RubyPythonBridge.stop
185
+
186
+ === 0.1.0 / 2008-08-01
187
+ * A lot of major enhancements
188
+ * Too many to name. Hey I'm still developing
189
+
190
+ === 0.0.1 / 2008-07-30
191
+ * 1 major enhancement:
192
+ * Initial release
data/License.rdoc ADDED
@@ -0,0 +1,26 @@
1
+ == License
2
+
3
+ This software is available under the terms of the MIT license.
4
+
5
+ * Copyright 2011 Zach Raines, Steeve Morin, Austin Ziegler, and other
6
+ contributors.
7
+ * Copyright 2008–2010 Zach Raines.
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining
10
+ a copy of this software and associated documentation files (the
11
+ "Software"), to deal in the Software without restriction, including
12
+ without limitation the rights to use, copy, modify, merge, publish,
13
+ distribute, sublicense, and/or sell copies of the Software, and to
14
+ permit persons to whom the Software is furnished to do so, subject to
15
+ the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be
18
+ included in all copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Manifest.txt ADDED
@@ -0,0 +1,43 @@
1
+ .autotest
2
+ .gitignore
3
+ .hgignore
4
+ .hgtags
5
+ .rspec
6
+ Contributors.rdoc
7
+ History.rdoc
8
+ License.rdoc
9
+ Manifest.txt
10
+ PostInstall.txt
11
+ README.rdoc
12
+ Rakefile
13
+ autotest/discover.rb
14
+ lib/rubypython.rb
15
+ lib/rubypython/blankobject.rb
16
+ lib/rubypython/conversion.rb
17
+ lib/rubypython/legacy.rb
18
+ lib/rubypython/macros.rb
19
+ lib/rubypython/operators.rb
20
+ lib/rubypython/options.rb
21
+ lib/rubypython/pygenerator.rb
22
+ lib/rubypython/pymainclass.rb
23
+ lib/rubypython/pyobject.rb
24
+ lib/rubypython/python.rb
25
+ lib/rubypython/pythonerror.rb
26
+ lib/rubypython/pythonexec.rb
27
+ lib/rubypython/rubypyproxy.rb
28
+ lib/rubypython/type.rb
29
+ spec/basic_spec.rb
30
+ spec/callback_spec.rb
31
+ spec/conversion_spec.rb
32
+ spec/legacy_spec.rb
33
+ spec/pymainclass_spec.rb
34
+ spec/pyobject_spec.rb
35
+ spec/python_helpers/basics.py
36
+ spec/python_helpers/errors.py
37
+ spec/python_helpers/objects.py
38
+ spec/pythonerror_spec.rb
39
+ spec/refcnt_spec.rb
40
+ spec/rubypyclass_spec.rb
41
+ spec/rubypyproxy_spec.rb
42
+ spec/rubypython_spec.rb
43
+ spec/spec_helper.rb
data/PostInstall.txt ADDED
@@ -0,0 +1,16 @@
1
+ RubyPython version 0.3 and higher are different than RubyPython through
2
+ version 0.2.x. If you're upgrading from such an earlier version, make sure you
3
+ read the documents for instructions on how your code needs to change to work
4
+ with modern RubyPython.
5
+
6
+ For more information on RubyPython, see: http://rubypython.rubyforge.org/
7
+
8
+ If you find a bug, or have any suggestions, please feel free to enter them on
9
+ the tracker:
10
+
11
+ https://bitbucket.org/raineszm/rubypython/issues?status=new&status=open
12
+
13
+ If you would like to help develop RubyPython, please check out the source on
14
+ Bitbucket:
15
+
16
+ https://bitbucket.org/raineszm/rubypython/
data/README.rdoc ADDED
@@ -0,0 +1,272 @@
1
+ = rubypython
2
+
3
+ == Description
4
+
5
+ RubyPython is a bridge between the Ruby and Python interpreters. It embeds a
6
+ running Python interpreter in the Ruby application's process using FFI and
7
+ provides a means for wrapping, converting, and calling Python objects and
8
+ methods.
9
+
10
+ RubyPython uses FFI to marshal the data between the Ruby and Python VMs and
11
+ make Python calls. You can:
12
+
13
+ * Inherit from Python classes.
14
+ * Configure callbacks from Python.
15
+ * Run Python generators (on Ruby 1.9.2 or later).
16
+
17
+ == Where
18
+
19
+ * {RubyForge}[http://rubypython.rubyforge.org/]
20
+ * {RubyGems}[http://rubygems.org/gems/rubypython]
21
+ * {Bitbucket}[http://raineszm.bitbucket.org/rubypython/]
22
+ * {GitHub}[https://github.com/halostatue/rubypython]
23
+
24
+ The RubyPython homepage, project description, and main downloads can be found
25
+ on {RubyForge}[http://rubypython.rubyforge.org/].
26
+
27
+ Source is kept in sync between
28
+ {Bitbucket}[http://raineszm.bitbucket.org/rubypython/] and
29
+ {GitHub}[https://github.com/halostatue/rubypython], but the Bitbucket
30
+ repository is the canonical repository and where the {issue
31
+ tracker}[https://bitbucket.org/raineszm/rubypython/issues?status=new&status=open]
32
+ resides. We use {Hg-Git}[http://hg-git.github.com/] to keep the two
33
+ repositories in sync.
34
+
35
+ == Synopsis
36
+
37
+ RubyPython is fairly easy to start using; there are three phases to its use:
38
+
39
+ 1. Start the Python interpreter (+RubyPython.start+).
40
+ 2. Import and use Python code (+RubyPython.import+).
41
+ 3. Stop the Python interpreter (+RubyPython.stop+).
42
+
43
+ There are also two methods, +RubyPython.session+ and +RubyPython.run+ that will
44
+ start before running the code provided in the block and stop it afterwards.
45
+
46
+ === Basic Usage
47
+
48
+ require "rubypython"
49
+
50
+ RubyPython.start # start the Python interpreter
51
+
52
+ cPickle = RubyPython.import("cPickle")
53
+ p cPickle.dumps("Testing RubyPython.").rubify
54
+
55
+ RubyPython.stop # stop the Python interpreter
56
+
57
+ === Specific Python Version
58
+
59
+ require "rubypython"
60
+
61
+ RubyPython.start(:python_exe => "python2.7") # Can also be a full path
62
+
63
+ cPickle = RubyPython.import("cPickle")
64
+ p cPickle.dumps("Testing RubyPython.").rubify
65
+
66
+ RubyPython.stop # stop the Python interpreter
67
+
68
+ === VirtualEnv
69
+
70
+ # Easy
71
+ RubyPython.start_from_virtualenv("/path/to/virtualenv")
72
+
73
+ # Or verbose
74
+ RubyPython.start(:python_exe => "/path/to/virtualenv/bin/python")
75
+ RubyPython.activate
76
+
77
+ === Iterator support
78
+
79
+ # Python
80
+ def readfile():
81
+ for line in open("/some/file"):
82
+ yield line
83
+
84
+ # Ruby
85
+ readfile.to_enum.each do |line|
86
+ puts line
87
+ end
88
+
89
+ # Python
90
+ def iterate_list():
91
+ for item in [ 1, 2, 3 ]:
92
+ yield item
93
+
94
+ # Ruby
95
+ items = []
96
+ iterate_list.to_enum.each { |item| items << item }
97
+ puts items == [ 1, 2, 3 ] # => true
98
+
99
+ === Python to Ruby callbacks
100
+
101
+ # Python
102
+ def simple_callback(callback, value):
103
+ return callback(value)
104
+
105
+ # Ruby
106
+ simple_callback(lambda { |v| v * v }, 4) # => 16
107
+
108
+ def triple(v)
109
+ v * 3
110
+ end
111
+
112
+ simple_callback(method(:triple), 4) # => 12
113
+
114
+ === Python-style Generators
115
+
116
+ # Python
117
+ def test_generator(callback):
118
+ for i in callback():
119
+ print "Got %d" % i
120
+
121
+ # Ruby 1.9.2 or later
122
+ test_generator(RubyPython.generator do
123
+ (0..10).each { |i| RubyPython.yield i }
124
+ end)
125
+
126
+ === Python named arguments (Experimental)
127
+
128
+ This format is experimental and may be changed.
129
+
130
+ # Python
131
+ def foo(arg1, arg2):
132
+ pass
133
+
134
+ # Ruby
135
+ foo!(:arg2 => "bar2", :arg1 => "bar1")
136
+
137
+ # with Ruby 1.9
138
+ foo!(arg2: "bar2", arg1: "bar1")
139
+
140
+ == Features / Problems
141
+
142
+ === Features
143
+
144
+ * Simple two-way conversion of built-in types between Ruby and Python.
145
+ * Python module import and arbitrary method execution.
146
+ * Python objects can be treated as Ruby objects.
147
+ * Python's standard library available from within Ruby.
148
+ * Pass Ruby methods and procs as callbacks and call them from within Python
149
+ code.
150
+ * Specify the Python executable to be loaded, including using virtualenv.
151
+
152
+ ==== Experimental Features
153
+
154
+ * Calling Python methods or functions that expect keyword arguments, or call
155
+ any Python method or function with named parameters.
156
+
157
+ # Python
158
+ def func(a, b, c):
159
+ pass
160
+
161
+ # Ruby
162
+ func!(:b => 2, :c => 3, :a => 1) # => [ 1, 2, 3 ]
163
+
164
+ While we are committed to keeping this feature in place, we have not yet
165
+ determined that the form (+method!+) is the best way to achieve this
166
+ functionality.
167
+
168
+ This mechanism is experimental because the use of the bang at the end of the
169
+ method to indicate the use of keyword arguments may not be the best use of
170
+ that feature of Ruby naming.
171
+
172
+ * Changing Python interpreters in a single Ruby program. Under some
173
+ circumstances, this will partially work. If a native Python extension has
174
+ been imported (such as +cPickle+), there is a very high likelihood that there
175
+ will be a segmentation fault because the newly loaded DLL will still refer to
176
+ the other version's loaded extension. This is not a recommended workflow.
177
+
178
+ === Known Problems
179
+
180
+ * Built-in Python methods requiring a top-level frame object (such as eval(),
181
+ dir(), and the like) do not work properly at present.
182
+ * There is no support for passing complicated (non-basic) Ruby types to Python.
183
+
184
+ == What's planned
185
+ There are features that are not currently supported in RubyPython that may be
186
+ considered for future releases, dependent on need, interest, and solutions.
187
+
188
+ === Python 3
189
+ We do plan on working this, but as none of the projects any of us are working
190
+ on require Python 3 as of yet, this is not yet started.
191
+
192
+ === Simpler Imports
193
+ It might be nice to have some nice import helpers provided by RubyPython to
194
+ make the interface more seamless and provide advanced import features:
195
+
196
+ ==== Import Aliasing
197
+
198
+ # Python
199
+ from mod2.mod1 import sym as mysym
200
+
201
+ # Ruby
202
+ py :from => "mod2.mod1", :import => "sym", :as => "mysym"
203
+ py :from => "mod2.mod1", :import => :sym, :as => :mysym
204
+ py :from => [ :mod2, :mod1 ], :import => :sym, :as => :mysym
205
+
206
+ # Python
207
+ import mod1 as mymod
208
+
209
+ # Ruby
210
+ py :import => "mod1", :as => "mymod"
211
+ py :import => :mod1, :as => :mymod
212
+
213
+ # Python
214
+ from mod2.mod1 import *
215
+
216
+ # Ruby
217
+ py :from => "mod2.mod1", :import => :*
218
+ pyrequire "mod2/mod1" # ruby style imports
219
+
220
+ === Catch Exceptions from Ruby
221
+
222
+ # Python
223
+ class MyFirstException(Exception):
224
+ pass
225
+
226
+ class MySecondException(MyFirstException):
227
+ pass
228
+
229
+ def test():
230
+ raise MySecondException
231
+
232
+ # Ruby
233
+ begin
234
+ test
235
+ rescue MyFirstException => e
236
+ # We may need to work out name collisions
237
+ puts e.message
238
+ end
239
+
240
+ == Requirements
241
+
242
+ * Python >= 2.4, < 3.0
243
+ * Ruby >= 1.8.6, or JRuby >= 1.6.0
244
+ * You must either have the ability to build the Ruby
245
+ {FFI}[https://github.com/ffi/ffi] gem, version 1.0.7 or better in your
246
+ environment or have a pre-built one that you can install.
247
+
248
+ === Python Support
249
+ RubyPython has been tested with the C-based Python interpreter (cpython),
250
+ versions 2.4 through 2.7. Work is planned to enable Python 3 support, but has
251
+ not yet been started. If you're interested in helping us enable Python 3
252
+ support, please let us know.
253
+
254
+ === Ruby Support
255
+ * Ruby 1.8.7 and 1.9.2 (MRI)
256
+ * JRuby 1.6.0
257
+
258
+ It should work with other implementations that support the Ruby FFI gem with no
259
+ modification.
260
+
261
+ === OS Support
262
+ RubyPython has been extensively tested on Mac OS 10.5 and 10.6, and Ubuntu
263
+ 10.10 (64-bit Intel). If your platform has a DLL or shared object version of
264
+ Python and supports the FFI gem, it should work. Feedback on other platforms is
265
+ always welcome.
266
+
267
+ == Install
268
+ gem install rubypython
269
+
270
+ :include: Contributors.rdoc
271
+
272
+ :include: License.rdoc