numru 0.1.4 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9a715fb989185e9d112bf586b1ac0475ea773982
4
- data.tar.gz: 2b570def06cc8697a4c066835dc6c637367f4133
3
+ metadata.gz: 8aa49fdc1a2913c89900e9490e95f91d4a019fdb
4
+ data.tar.gz: 7dea6e54ac80ec81c637157b43dbf7d0d87204d7
5
5
  SHA512:
6
- metadata.gz: 8c84e8f6663e79ace46ab6bd866c3fdfeb0b232c793041656d73a68a0f17f36832d0c8fa9cfc64ca25c069c878179c643a0af2529ad1b222e9e1dfc0a959c2eb
7
- data.tar.gz: f2357e77771aafc6574e0d1818533223c5ffea97491d337f40342e599736bcc6d86fbb052fbd3597b01f4007381e756072c19e91a65e433b4563b91b33d7fa5c
6
+ metadata.gz: b5f9b2e5d9c0ef85a8d748e3c53daecc0913ff84a9569cf4b874e33e058e3c7619ee2cb139cacff028f7041bd3768d3359ba9f161d644421f9b7a1e06c36876a
7
+ data.tar.gz: 9511612994ef71a501cf2728f818c0f8689e8c9d09d18ee4f6ae4c54e9a8dfe06a6eda795d0141a247d6538ba3dac382e82d4e4c81f2b29e252e54f716a3fbfb
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- numru (0.1.3)
4
+ numru (0.1.4)
5
5
  rubypython
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -24,7 +24,34 @@ Or install it yourself as:
24
24
 
25
25
  ## Usage
26
26
 
27
- TODO: Write usage instructions here
27
+ 1. Whatever works in NumPy works here. If there's something that doesn't work let me know in the issues.
28
+ ```rb
29
+ require 'numru'
30
+ nr = NumRu
31
+
32
+ > x = nr.array 0..10
33
+ => array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
34
+
35
+ > x = nr.arange(27).reshape 3, 3, 3
36
+ => array([[[ 0, 1, 2],
37
+ [ 3, 4, 5],
38
+ [ 6, 7, 8]],
39
+
40
+ [[ 9, 10, 11],
41
+ [12, 13, 14],
42
+ [15, 16, 17]],
43
+
44
+ [[18, 19, 20],
45
+ [21, 22, 23],
46
+ [24, 25, 26]]])
47
+
48
+ ```
49
+ Keyword arguments are not supported. For that use hash.
50
+ ```rb
51
+ > x = nr.array [1, 2, 3], dtype: :complex
52
+ => array([1.+0.j, 2.+0.j, 3.+0.j])
53
+
54
+ ```
28
55
 
29
56
  ## Development
30
57
 
data/lib/numru/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Numru
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
data/lib/numru.rb CHANGED
@@ -7,13 +7,13 @@ RubyPython.start
7
7
  class NumRu
8
8
  @@np = RubyPython.import 'numpy'
9
9
  @@blt = RubyPython::PyMainClass.send(:new)
10
-
10
+
11
11
  attr_accessor :np_obj
12
-
12
+
13
13
  def initialize np_obj
14
14
  @np_obj = np_obj
15
15
  end
16
-
16
+
17
17
  def self.return_or_wrap obj
18
18
  obj.rubify
19
19
  rescue
@@ -38,7 +38,7 @@ class NumRu
38
38
  obj = @np_obj.__send__('__getitem__', args)
39
39
  NumRu.return_or_wrap obj
40
40
  end
41
-
41
+
42
42
  def []=(*args)
43
43
  args.map! do |i|
44
44
  case i
@@ -57,23 +57,30 @@ class NumRu
57
57
  obj = @np_obj.__send__('__setitem__', args[0..-2], args[-1])
58
58
  NumRu.return_or_wrap obj
59
59
  end
60
-
61
- def self.extract_np_obj obj
62
- obj.respond_to?(:class) && obj.class == NumRu ? obj.np_obj : obj
60
+
61
+ def self.preprocess_arg obj
62
+ case obj
63
+ when NumRu
64
+ obj.np_obj
65
+ when Range
66
+ @@blt.range(obj.begin, obj.end+1)
67
+ else
68
+ obj
69
+ end
63
70
  end
64
-
71
+
65
72
  def ==(arg)
66
73
  @np_obj.__send__('__eq__', NumRu.extract_np_obj(arg))
67
74
  end
68
-
75
+
69
76
  def < arg
70
77
  @np_obj.__send__('__lt__', NumRu.extract_np_obj(arg))
71
78
  end
72
-
79
+
73
80
  def > arg
74
81
  @np_obj.__send__('__gt__', NumRu.extract_np_obj(arg))
75
82
  end
76
-
83
+
77
84
  def self.arg_to_s arg
78
85
  case arg
79
86
  when Hash
@@ -83,24 +90,24 @@ class NumRu
83
90
  end
84
91
  arg.to_s
85
92
  end
86
-
93
+
87
94
  def method_missing(m, *args)
88
- args.map! { |i| NumRu.extract_np_obj i }
95
+ args.map! { |i| NumRu.preprocess_arg i }
89
96
  obj = @np_obj.__send__ "#{m}!", *args
90
97
  NumRu.return_or_wrap obj
91
- end
92
-
98
+ end
99
+
93
100
  def self.method_missing(m, *args)
94
- args.map! { |i| NumRu.extract_np_obj i }
101
+ args.map! { |i| NumRu.preprocess_arg i }
95
102
  obj = @@np.__send__ "#{m}!", *args
96
103
  return_or_wrap obj
97
104
  end
98
-
105
+
99
106
  def to_s
100
107
  @np_obj.__str__
101
108
  end
102
-
109
+
103
110
  def inspect
104
111
  @np_obj.__repr__
105
112
  end
106
- end
113
+ end
data/numru.gemspec CHANGED
@@ -27,6 +27,6 @@ Gem::Specification.new do |spec|
27
27
  spec.add_development_dependency "rake", "~> 10.0"
28
28
  spec.add_development_dependency "rspec", "~> 3.0"
29
29
  spec.add_development_dependency 'pry', '~> 0.11'
30
-
31
- spec.add_dependency 'rubypython'
30
+
31
+ spec.add_dependency 'lokeshh_rubypython'
32
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: numru
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - lokeshh
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.11'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rubypython
70
+ name: lokeshh_rubypython
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="