rubypython 0.2.4 → 0.2.5

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/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ == 0.2.5 2009-3-18
2
+ * Bug Fixes
3
+ * Updated to build and run under Ruby 1.9.
4
+
1
5
  == 0.2.4 2008-10-24
2
6
  * Major Enhancements
3
7
  * Provided setter methods for object attributes. Python object attributes can now be set
@@ -8,13 +12,13 @@
8
12
  * Changed part of extconf.rb file that would not work under windows.
9
13
  == 0.2.3 2008-08-29
10
14
  * 2 Major Enhancements
11
- * Introduced PyMain object to as a singleton wrapper for the Python __main__ and
15
+ * Introduced PyMain object as a singleton wrapper for the Python __main__ and
12
16
  __builtin__ modules.
13
17
  * Introduced block functionality for PyMain object.
14
18
 
15
19
  * Compatibility Updates
16
- * Changed some declarations in the C code make RubyPython more compatible with the style
17
- conventions of the Ruby C API.
20
+ * Changed some declarations in the C code to make RubyPython more compatible with the
21
+ style conventions of the Ruby C API.
18
22
  * Update how RubyPython locates the Python headers and library.
19
23
  * 1 Bug Fix
20
24
  * Fixed an error in ptor.c that might have prevented RubyPython from building correctly
@@ -11,4 +11,4 @@
11
11
  #ifndef _RUBY_H_
12
12
  #define _RUBY_H_
13
13
  #include "ruby.h"
14
- #endif /* _RUBY_H_ */
14
+ #endif /* _RUBY_H_ */
@@ -25,6 +25,11 @@ unless find_library("python2.5",nil)||find("python2.4",nil)
25
25
  exit -1
26
26
  end
27
27
 
28
+ if RUBY_VERSION=~/1\.9/ then
29
+ puts "Building for Ruby 1.9"
30
+ $CPPFLAGS += " -DRUBY_19"
31
+ end
32
+
28
33
  find_header("Python.h",*`python-config --includes`.split.map{|s| s[2..-1]<<"/"})
29
34
 
30
35
  create_makefile("rubypython_bridge")
@@ -7,8 +7,10 @@ RUBY_EXTERN VALUE ePythonError;
7
7
  VALUE cBlankObject;
8
8
 
9
9
  // :nodoc:
10
- VALUE blank_undef_if(VALUE mname,VALUE klass)
10
+ VALUE blank_undef_if(VALUE name,VALUE klass)
11
11
  {
12
+ VALUE mname=rb_funcall(name,rb_intern("to_s"),0);
13
+ printf("OH SHIT\n");
12
14
  if(rb_funcall(mname,rb_intern("match"),1,rb_str_new2("(?:^__)|(?:\\?$)|(?:^send$)|(?:^class$)"))==Qnil)
13
15
  {
14
16
  rb_undef_method(klass,STR2CSTR(mname));
@@ -49,7 +51,7 @@ void rp_obj_free(PObj* self)
49
51
 
50
52
  /*
51
53
  Decreases the reference count on the object wrapped by this instance.
52
- This is used for cleanup in RubyPython.stop. RubyPyObject instance automatically
54
+ This is used for cleanup in RubyPython.stop. RubyPyObject instances automatically
53
55
  decrease the reference count on their associated objects before they are garbage collected.
54
56
  */
55
57
  VALUE rp_obj_free_pobj(VALUE self)
@@ -164,29 +166,30 @@ VALUE rp_inst_attr_set(VALUE self,VALUE args)
164
166
  char *cname;
165
167
  PObj *pClassDict,*pInstDict,*pDict;
166
168
  PyObject *pName;
167
-
168
- if(!rp_has_attr(self,rb_ary_entry(args,0)))
169
+ name=rb_ary_shift(args);
170
+ name_string=rb_funcall(name,rb_intern("to_s"),0);
171
+ rb_funcall(name_string,rb_intern("chop!"),0);
172
+ if(!rp_has_attr(self,name_string))
169
173
  {
170
- int argc;
171
-
174
+ int argc;
172
175
  VALUE *argv;
173
- argc=RARRAY(args)->len;
176
+ argc=RARRAY_LEN(args);
174
177
  argv=ALLOC_N(VALUE,argc);
175
- MEMCPY(argv,RARRAY(args)->ptr,VALUE,argc);
178
+ MEMCPY(argv,RARRAY_PTR(args),VALUE,argc);
176
179
  return rb_call_super(argc,argv);
177
180
  }
178
- name=rb_ary_shift(args);
179
- name_string=rb_funcall(name,rb_intern("to_s"),0);
181
+
180
182
  cname=STR2CSTR(name_string);
181
- rb_funcall(name_string,rb_intern("chop!"),0);
182
183
 
183
- if(NUM2INT(rb_funcall(args,rb_intern("size"),0))==1)
184
+ if((NUM2INT(rb_funcall(args,rb_intern("size"),0))==1))
184
185
  {
185
186
  args=rb_ary_entry(args,0);
186
187
  }
188
+
187
189
 
188
190
  rClassDict=rb_iv_get(self,"@pclassdict");
189
191
  rInstDict=rb_iv_get(self,"@pinstdict");
192
+
190
193
  Data_Get_Struct(rClassDict,PObj,pClassDict);
191
194
  Data_Get_Struct(rInstDict,PObj,pInstDict);
192
195
  pName=PyString_FromString(cname);
@@ -223,9 +226,9 @@ VALUE rp_inst_delegate(VALUE self,VALUE args)
223
226
  int argc;
224
227
 
225
228
  VALUE *argv;
226
- argc=RARRAY(args)->len;
229
+ argc=RARRAY_LEN(args);
227
230
  argv=ALLOC_N(VALUE,argc);
228
- MEMCPY(argv,RARRAY(args)->ptr,VALUE,argc);
231
+ MEMCPY(argv,RARRAY_PTR(args),VALUE,argc);
229
232
  return rb_call_super(argc,argv);
230
233
  }
231
234
  name=rb_ary_shift(args);
@@ -391,9 +394,9 @@ VALUE rp_mod_attr_set(VALUE self,VALUE args)
391
394
  int argc;
392
395
 
393
396
  VALUE *argv;
394
- argc=RARRAY(args)->len;
397
+ argc=RARRAY_LEN(args);
395
398
  argv=ALLOC_N(VALUE,argc);
396
- MEMCPY(argv,RARRAY(args)->ptr,VALUE,argc);
399
+ MEMCPY(argv,RARRAY_PTR(args),VALUE,argc);
397
400
  return rb_call_super(argc,argv);
398
401
  }
399
402
  if(NUM2INT(rb_funcall(args,rb_intern("size"),0))==1)
@@ -426,9 +429,9 @@ VALUE rp_mod_delegate(VALUE self,VALUE args)
426
429
  int argc;
427
430
 
428
431
  VALUE *argv;
429
- argc=RARRAY(args)->len;
432
+ argc=RARRAY_LEN(args);
430
433
  argv=ALLOC_N(VALUE,argc);
431
- MEMCPY(argv,RARRAY(args)->ptr,VALUE,argc);
434
+ MEMCPY(argv,RARRAY_PTR(args),VALUE,argc);
432
435
  return rb_call_super(argc,argv);
433
436
  }
434
437
  name=rb_ary_shift(args);
@@ -523,4 +526,4 @@ void Init_RubyPyInstance()
523
526
  {
524
527
  cRubyPyInstance=rb_define_class_under(mRubyPythonBridge,"RubyPyInstance",cRubyPyObject);
525
528
  rb_define_method(cRubyPyInstance,"method_missing",rp_inst_delegate,-2);
526
- }
529
+ }
@@ -46,6 +46,7 @@ PyObject* rtop_hash(VALUE rHash)
46
46
  int i;
47
47
 
48
48
  pDict=PyDict_New();
49
+
49
50
  for(i=0;i<RARRAY(rKeys)->len;i++)
50
51
  {
51
52
  rKey=rb_ary_entry(rKeys,i);
@@ -92,7 +93,7 @@ PyObject* rtop_true()
92
93
  PyObject* rtop_symbol(VALUE rSymbol)
93
94
  {
94
95
  PyObject* pString;
95
- pString=PyString_FromString(rb_id2name(rSymbol));
96
+ pString=PyString_FromString(STR2CSTR(rb_funcall(rSymbol,rb_intern("to_s"),0)));
96
97
  return pString;
97
98
 
98
99
  }
@@ -1,7 +1,11 @@
1
+ #ifndef RUBY_19
2
+ #define RARRAY_LEN(arr) (RARRAY(arr)->len)
3
+ #define RARRAY_PTR(arr) (RARRAY(arr)->ptr)
4
+ #endif
1
5
  #include "config.h"
2
6
 
3
7
  #include "ptor.h" //PyObject to VALUE conversion
4
8
  #include "rtop.h" //VALUE to PyObject conversion
5
9
  #include "cbridge.h" //General interface functions
6
10
  #include "rp_error.h"
7
- #include "rp_object.h"
11
+ #include "rp_object.h"
@@ -2,7 +2,7 @@ module RubyPython
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 2
5
- TINY = 4
5
+ TINY = 5
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -101,7 +101,10 @@ class TestRubypython < Test::Unit::TestCase
101
101
 
102
102
  def test_setter_instance
103
103
  RubyPython.session do
104
-
104
+ urllib2=RubyPython.import "urllib2"
105
+ req=urllib2.Request("google.com")
106
+ req.headers={:a=>"2","k"=>4}
107
+ assert_equal({"a"=>"2","k"=>4},req.headers)
105
108
  end
106
109
  end
107
110
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubypython
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zach Raines
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-10-24 00:00:00 -04:00
12
+ date: 2009-03-18 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies: []
15
15