pycall 0.1.0.alpha.20170502 → 0.1.0.alpha.20170711

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,149 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 1,
6
+ "metadata": {},
7
+ "outputs": [
8
+ {
9
+ "data": {
10
+ "text/plain": [
11
+ "Matplotlib::Pyplot"
12
+ ]
13
+ },
14
+ "execution_count": 1,
15
+ "metadata": {},
16
+ "output_type": "execute_result"
17
+ }
18
+ ],
19
+ "source": [
20
+ "require 'matplotlib/iruby'\n",
21
+ "Matplotlib::IRuby.activate\n",
22
+ "\n",
23
+ "require 'pycall/import'\n",
24
+ "include PyCall::Import\n",
25
+ "\n",
26
+ "pyimport 'numpy', as: 'np'\n",
27
+ "plt = Matplotlib::Pyplot"
28
+ ]
29
+ },
30
+ {
31
+ "cell_type": "markdown",
32
+ "metadata": {},
33
+ "source": [
34
+ "Original Python code is here:\n",
35
+ "- https://matplotlib.org/examples/showcase/xkcd.html"
36
+ ]
37
+ },
38
+ {
39
+ "cell_type": "code",
40
+ "execution_count": 2,
41
+ "metadata": {},
42
+ "outputs": [
43
+ {
44
+ "data": {
45
+ "image/png": "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",
46
+ "text/plain": [
47
+ "<matplotlib.figure.Figure object at 0x1077189b0>"
48
+ ]
49
+ },
50
+ "execution_count": 2,
51
+ "metadata": {},
52
+ "output_type": "execute_result"
53
+ },
54
+ {
55
+ "data": {
56
+ "image/png": "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IBYtWtRnuVOplLjtttv6/eH/8MMPi94n8XhcDlDS38iRI8X+++8vdt99d2GxWLLue+qpp3ptw263yyeCF198UXz22Wdiw4YNoqmpSaxatUp89NFHYtasWeKUU04RK1asKKp8iURCXHXVVcJoNOZ930ajUaxcuTLreYMGDRIAxIsvvtjvayxYsEDelt/vl2+X3vuaNWuEEN2f7Ysvvih23XVX+eSZ+WNwyy23CABi6NCh4qOPPhKhUCjn+1m2bJn44IMP5BPdwoUL5df/zW9+Iw4//HAxdOjQrPd42mmniUQi0Wt7Bx98sPyYhoYG0dLS0u/7veCCC+STbqEn28cff1x+nZkzZ+Z8TCKREBdccIEYO3asfGIv9M/pdIrOzk4xefJkAUDcd999/Zbpyy+/lJ//ww8/yLdL++5nP/uZOO6448TkyZOzvm8jR44sKKj2lBk4Fy5cmPMxmzdvlh9T7LGey8svvywAiClTpgghun/YN2zYIG666SbhcrnkYyaXUCgkfvWrX2Xt5zFjxogDDjhATJo0KeszMhqNYv78+VnPf/fdd+X733nnnZyvsX79enk7DodDRKPRnI/79ttv5W394x//kN+L9DtwySWXiDVr1uQ8Htva2sSCBQvE5s2b5dukUL3LLruIE044QfzsZz/LOj9WV1fn/Ywyvfjii6K6urrPY/Puu+/udztaobtA8ve//z3rBPrKK6+IQCAgfvjhB/nAuPnmm4UQQsycOTPry6hEMpkUP/vZz+TXtlgseWsmIpGI6OrqEtFoVL5CMRgMYvXq1eLtt98WjzzyiJg9e7b4+uuvez0384oGgHjggQd6Peadd97p9zGZLrzwQvmxRxxxhJg7d65YsWKFWL16tZg/f76YOXOmuP7664u+8kun0+K3v/2tvO1x48b1OvEEg0Exf/58MXr0aPmHo+fruN1uAUC88sorRb1+IeU7/vjj5f3/61//Wrz++uvi22+/Fd9995149dVXxc033yz+/Oc/9/osbTabACCef/75fl8n8zPLvNKWguWPP/6Y9fhQKCQmTJggAIhrrrlGvv3BBx8UAMSIESOKep+ZP6zSSTeVSomFCxeKqVOnyvedc845vU7YJ5xwQtaxNH369H5DhvQjB0CsX7++3/J99913cugEtl3h9iWdTotwOCza2trEU089JT83EomIUCgkWlpaxOrVq8WSJUvEe++9J9atWyeEEPIVcb4azEyZ+2316tXy7RMnThQAxF/+8hf5tvXr14urrrpKDpnDhw8XmzZt6vc1JC+88ELWfs5XO9rY2Cg/Jl9NUjFeeuklAUDst99+ve779NNP5aD+1VdfZd2XTCbFtGnT5LJMnjxZfPzxx1mP6erqEi+99JIc4BoaGrJCbzwel8/J5557bs7ySbUo0t+XX36Z83F33323ACDsdrvo6uqSb99hhx0EAPHQQw8VvE+EEOKkk04SAMQZZ5wh39ba2ipmzZolKioqBADhdrtzXhBKHnnkkaz98/jjj4ulS5eKtWvXioULF4rZs2eLyy67TGzYsKGosg1kugokH374oXylcuCBB4rW1tas+1988UUxceJE8cUXXwghtl1x7rvvvopf+6677uqVfJctW9bv855//nn5argQ119/fdZr5Poi33zzzVmPueyyy/Ju7/3335cfN2fOnILKUKgnnngiq5x9NR2tWbNGPvm98MILWfdJzRmvvvqqquV78cUX5fIVu23peYUEkjfffLNXIEmlUvJtTU1NvZ7z2muvCQBiwoQJ8m3333+/ALqbH4qxceNG+bV6VvOn02m5ShyAmDVrVtb9UljNrNV78skn+3y95cuXy4/teVXcUyqVEvvvv3/W8Vrs+8usAeovNEs1W4UEkqVLl+YMJNLVc67v1dKlS0VDQ4MAICZOnFhQc2lra6uoq6vL2gennXZazseuX79efsz333/f77b78+yzzwoA4pBDDsl5/4knnpjzuLjjjjvkclx11VUimUzmfY0vvvhCfmzPpt+zzz5bABCDBw/Oas4UovvYlAKF9Pfyyy/nfA2pieXYY4/Nul0KQ48++mje8uUyY8YMAUAceeSRve5rbGwUu+22mxyytmzZ0usxGzdulC+kLrjggl7vTa90M+y3s7MTZ555JoQQ2HnnnTF//nzU1tZmPeakk07C8uXLseeeewLo7ggHoM/Oi4XYsGEDbrzxRgDAGWecAY/HAwD46quv+n1uR0cHAKCioqKg11q2bFnW/3/55Ze9HvP2229n/f+qVavybu+2224DAOy5554477zzCipDIfx+v9wJ8sADD8SDDz7YZ0eu0aNH44ADDgAAvPDCC1n3SZ3R1O71P3PmTADAkUceienTpxf8PFFkP/FEIiH/W+ogGI1G5dtydWDM1TFXek6+UTj5ZO73zNcFuvfptddei5NOOgkAcNddd8kdmgHIx/LYsWNx7bXXAgAuvvhirFmzJu/rZXZiDAaDfZbt0UcfxeLFiwEAM2bMAACsXbsWfr+/3/clqaqqkv/d1dXV52Ol73whcn1uwLb92XNfAsAee+whd4z8+uuv8e677/b7OldddRVaW1vhcDjwu9/9DkD+c0dm+ZWetwAgFAoByH0MAtuOw8xjfuvWrbj55psBAMcccwxmzZrVZ1n23HNP7LbbbgB6f7dPOOEEAMCWLVt6veevvvpK7sQulWPt2rW9th8IBPDee+8BQK/Oykq/M7k+4+HDh2Pu3LmwWCxobm7GM8880+sx9957L4LBIDweD2bPng2jUTc/xX3SzV6YPXs2GhsbYbFY8MILL6CysrLf56gVSP74xz8iHA6juroad911F/baay8AwNKlS/t9bmdnJ4BtJ/7+LF++HMC2k/7KlSsRj8fl+1tbW/HZZ58BACZMmACg70DS1tYGoHtUTTgcLqgMhfjnP/8Jn88Hk8mEOXPmFNRT/5e//CWA7t7ymXoGklgshsbGRmzcuBE+n6/f3vP5SO89Eolk7cP+FBuMMkfESKMiAoEAAMBoNOYMH08//TQAYPLkyfJt0o90vh+PfDJDQb7h0VIwbWlpyQq90igri8WCmTNnYv/990cgEMCJJ56ISCSSc1s1NTXyv/M9Bug+Vq+77joAwPTp03HrrbfK9+UK2vlkXnhIAT+fYn4YMj83h8Mh/1van/n25ZFHHon99tsPQO+Lg54+/vhjeaTVLbfcIgfDVatW5QxzagcS6TjMdf7p7OzE66+/DiD7OHzppZcQCoXgcDjwwAMPFLRPpe/2ypUrs24/9NBD5eP5/fffz7pv3rx5ALrf52mnnQYA+P7773tt++WXX0YkEoHb7ZYDDtAdopR+Z/J9xuPGjcMZZ5wBIPdnLJ1bDAaDfI4nnQSSeDyOxx57DABw6aWXYvfddy/oedIVkJKhrW+++ab8xZk9ezZqa2ux9957AwD+85//9Pt86YRdyDCwtrY2bN68GQBw7rnnAuh+75k/4O+88448b8Sf/vQnAMCPP/6Y94dBOgEuX74ckyZNwtVXX41HH30U//znP7FixYqsq+VizJ07FwAwdepU7LLLLgU9R7rS7XmVK5XhnnvuwYQJE+BwODBixAjssMMOqK2thcViwfjx47Fly5aiyii99w8//BB77LEHbrjhBjz22GN488038e233/YZdIr5MZDej81mk0/e0knK6/X2CjivvPIKnn/+eQDIGmorbcfpdGLDhg1YsmQJ5s2bh4ceegg333wzzj//fBx33HH41a9+hRUrVsjPa2lpkf+dbwhm5pVgZs1AZiAxm8144YUXUFNTg2XLluHSSy/NuS2LxSLX+PUVcq+55hp0dHTA7XbjvvvuQ3V1NUaPHg2gsO+OJDMAtbe39/nY7fncgOxAIu3PfPsynU7LYSZzX/aUTCZx0UUXAei+eLjsssvkc0c6nc55QZPrs1Ei8zjMFI/HMWPGDHR2dmLixIk4/PDD5fuk7/axxx7ba2h6Pvm+21arVZ6W4MMPP8y675VXXgHQXcMq7Zcffvih17alQHf66adnBatoNCrvLyEEvvnmG/zrX//CM888gzvuuANXXHEFTjvtNBx++OG45pprsmqB+vuMpe0DuT9j6dzi9/sxefJkzJgxAw8++CBeffVVfPHFF6pe/A0oZWwuKhmpL4DRaOzVQbAvUjthX8PJ+hKLxeTOmAceeKDc2W/u3LkC6O7YGolE+tzG1VdfLYDCOtZK/QqA7pEZUg/yzPbRU045RQAQBx10kPD5fP32Z4lGo+K4447r1f9F+hs6dKi46aabREdHR8H7JRAIyJ0UH3zwwYKf97e//U0A3aMUMvU1Aibz79///nfBryVEd6e7zE6dPf9GjRol/vrXv+YczSL1uC+kD4nU7yfzfS1ZskQAEFVVVeLtt98WixcvFnPmzBFHHHGE/PqnnHJK1namT59e0H4AIK699lr5edJxY7Vac3ZIXbt2rRg7dqwAIHbcccesfg9Sx++f//zn8m0LFiyQ+2o99thjOd+z1Cfi/vvvz3m/9P7Roz+HdPxOnz69752aIZ1Oy52M+xrCLIQQw4cPL7gPyb333isACJfLldUHQOrU+Oyzz/Z6TiwWExdddJH83t59992827/vvvsE0N2h+pNPPpFvHzlypAAg/va3v/V6zueffy5vu5jvZD4XX3yx3Pfi3//+t/jXv/4lbrrppqzh76+//rr8+C1btsiffSEjzCTSeW7vvffudZ/U18zj8ch9Ub777jv5fd55553i448/FkD36JbMY/iHH37I2z9q9erVBX9feu5PaYDCn/70p17lTafT4s47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DB8+vN+F6jK1tLTIVcn9/T3zzDPy81auXCmcTme/EwAGAgFx9tlnixkzZshXdaeddpoAIGbOnFlwOefNmycqKyvFyJEjhd/vF0J07+8jjzxSHHzwwQX13fn+++9FTU1Nzompcnn77bfFtGnT+qwm7+mbb74RV1xxRdbCdjabTVx55ZV9lvHggw8WXq+33xrDxx9/XBx22GFyDdzmzZvFhAkTCgpNQgjx6quvCq/XKw9zFWJbkM33V1lZKaZNmyaee+65PmuhJLfccosYM2ZMUUOsJeFwWNx3331in3326VWOuro6MWfOnIKG2Eo+//xzObTed999OR+TuWBnIU2XmYsA9vXXc4j1BRdcICwWi/jwww/73P67774rpk6d2mtSxsWLF4vp06dn9dOS/nbccUdx4YUXFnWsaoVBCIVdgTVs+fLluPPOO9HW1gaPx4P6+nrsvPPOGDt2LPbcc8+sKam3Vzqd7jVETlo3xuPxFLwuykcffQSn0ylPoZxJCIG2tjbU1dXlff7/+3//D01NTbjqqqtyDtlrb2/HunXr0NzcDIfDgXHjxslDh9WyceNGrFixAsFgEEOHDsVuu+3W75pD6XQaJ510EiKRCF577bWCptgvVktLC3788Ue0tLTIwy772pd9lbWrqwvJZBK1tbWqLwYIdA+TnT9/Pj7//HN8//33CIfDMBgMMJvNsFgsqK2txZgxY3DzzTdnjTyIx+OwWCxFl6mxsRH/+Mc/MGPGjJyTWuUTi8UghChqFFFPub47PwXx3zVPotEo6urq+n1NIQSSyWTRIze2R899EI1Gccstt2DlypWwWq2oqqrCqFGjsNNOO2Hy5MnYaaedfpLjrj/r1q3Dd999h3A4jGHDhmH8+PEFr8+VadWqVfD5fNhvv/1yvo9QKISLL74YQgjcf//9cLvd/W5z0aJF+Oijj7B06VK0tbUhFovJSyE4nU4MGjQIp556qrzeDtD9GScSCcXnm1AohDVr1mDLli0wGo0YOXIkxowZU5bP6H8BAwkRERGVnebnISEiIqL/fQwkREREVHYMJERERFR2DCRERERUdooCCfvDEhERkRoUBZLMheuIiIiIthebbIiIiKjsFAUSvU7eQkREROpSXEOycOFCLFq0CIlEQo3yEBERkQ4pnqlVqiXZsmULBg0apEqhiIiISF8U15CYzWYAYA0JERER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",
57
+ "text/plain": [
58
+ "<matplotlib.figure.Figure object at 0x1079abef0>"
59
+ ]
60
+ },
61
+ "execution_count": 2,
62
+ "metadata": {},
63
+ "output_type": "execute_result"
64
+ }
65
+ ],
66
+ "source": [
67
+ "plt.xkcd do\n",
68
+ " # Based on \"Stove Ownership\" from XKCD by Randall Monroe\n",
69
+ " # http://xkcd.com/418/\n",
70
+ "\n",
71
+ " fig = plt.figure()\n",
72
+ " ax = fig.add_axes(PyCall.tuple(0.1, 0.2, 0.8, 0.7))\n",
73
+ " ax.spines['right'].set_color('none')\n",
74
+ " ax.spines['top'].set_color('none')\n",
75
+ " plt.xticks([])\n",
76
+ " plt.yticks([])\n",
77
+ " ax.set_ylim([-30, 10])\n",
78
+ "\n",
79
+ " data = np.ones.(100)\n",
80
+ " data[PyCall.slice(70, nil)] -= np.arange.(30)\n",
81
+ "\n",
82
+ " plt.annotate(\n",
83
+ " \"THE DAY I REALIZED\\nI COULD COOK BACON\\nWHENEVER I WANTED\",\n",
84
+ " xy: PyCall.tuple(70, 1),\n",
85
+ " arrowprops: { arrowstyle: '->' },\n",
86
+ " xytext: PyCall.tuple(15, -10)\n",
87
+ " )\n",
88
+ "\n",
89
+ " plt.plot(data)\n",
90
+ "\n",
91
+ " plt.xlabel('time')\n",
92
+ " plt.ylabel('my overall health')\n",
93
+ " fig.text(\n",
94
+ " 0.5, 0.05,\n",
95
+ " '\"Stove Ownership\" from xkcd by Randall Monroe',\n",
96
+ " ha: 'center'\n",
97
+ " )\n",
98
+ "\n",
99
+ " # Based on \"The Data So Far\" from XKCD by Randall Monroe\n",
100
+ " # http://xkcd.com/373/\n",
101
+ "\n",
102
+ " fig = plt.figure()\n",
103
+ " ax = fig.add_axes(PyCall.tuple(0.1, 0.2, 0.8, 0.7))\n",
104
+ " ax.bar([0, 1], [0, 100], 0.25)\n",
105
+ " ax.spines['right'].set_color('none')\n",
106
+ " ax.spines['top'].set_color('none')\n",
107
+ " ax.xaxis.set_ticks_position('bottom')\n",
108
+ " ax.set_xticks([0, 1])\n",
109
+ " ax.set_xlim([-0.5, 1.5])\n",
110
+ " ax.set_ylim([0, 110])\n",
111
+ " ax.set_xticklabels([\"CONFIRMED BY\\nEXPERIMENT\", \"REFUTED BY\\nEXPERIMENT\"])\n",
112
+ " plt.yticks([])\n",
113
+ "\n",
114
+ " plt.title(\"CLAIMS OF SUPERNATURAL POWERS\")\n",
115
+ "\n",
116
+ " fig.text(\n",
117
+ " 0.5, 0.05,\n",
118
+ " '\"The Data So Far\" from xkcd by Randall Monroe',\n",
119
+ " ha: 'center'\n",
120
+ " )\n",
121
+ "end"
122
+ ]
123
+ },
124
+ {
125
+ "cell_type": "code",
126
+ "execution_count": null,
127
+ "metadata": {
128
+ "collapsed": true
129
+ },
130
+ "outputs": [],
131
+ "source": []
132
+ }
133
+ ],
134
+ "metadata": {
135
+ "kernelspec": {
136
+ "display_name": "Ruby 2.4.0",
137
+ "language": "ruby",
138
+ "name": "ruby"
139
+ },
140
+ "language_info": {
141
+ "file_extension": ".rb",
142
+ "mimetype": "application/x-ruby",
143
+ "name": "ruby",
144
+ "version": "2.4.1"
145
+ }
146
+ },
147
+ "nbformat": 4,
148
+ "nbformat_minor": 2
149
+ }
@@ -113,6 +113,8 @@ module PyCall
113
113
  PyCall::List.new(obj).__pyobj__
114
114
  when Hash
115
115
  PyCall::Dict.new(obj).__pyobj__
116
+ when Proc
117
+ PyCall.wrap_ruby_callable(obj)
116
118
  else
117
119
  PyCall.None
118
120
  end
data/lib/pycall/dict.rb CHANGED
@@ -66,6 +66,8 @@ module PyCall
66
66
  LibPython.PyDict_Size(__pyobj__)
67
67
  end
68
68
 
69
+ alias length size
70
+
69
71
  def keys
70
72
  LibPython.PyDict_Keys(__pyobj__).to_ruby
71
73
  end
@@ -0,0 +1,13 @@
1
+ require 'pycall'
2
+
3
+ module PyCall
4
+ @exceptions = {
5
+ Exception => LibPython.PyExc_RuntimeError,
6
+ TypeError => LibPython.PyExc_TypeError,
7
+ }.freeze
8
+
9
+ def self.raise_python_exception(exception)
10
+ pyexc = @exceptions[exception.class] || @exceptions[Exception]
11
+ LibPython.PyErr_SetString(pyexc, "Ruby exception: #{exception.class}: #{exception.message}")
12
+ end
13
+ end
@@ -0,0 +1,84 @@
1
+ require 'pycall'
2
+
3
+ module PyCall
4
+ module GCGuard
5
+ @gc_guard = {}
6
+
7
+ class Key < Struct.new(:pyptr)
8
+ def initialize(pyptr)
9
+ self.pyptr = check_pyptr(pyptr)
10
+ # LibPython.Py_IncRef(pyptr)
11
+ end
12
+
13
+ def release
14
+ # LibPython.Py_DecRef(pyptr)
15
+ self.pyptr = nil
16
+ end
17
+
18
+ def ==(other)
19
+ case other
20
+ when Key
21
+ pyptr.pointer == other.pyptr.pointer
22
+ else
23
+ super
24
+ end
25
+ end
26
+
27
+ alias :eql? :==
28
+
29
+ def hash
30
+ pyptr.pointer.address
31
+ end
32
+
33
+ private
34
+
35
+ def check_pyptr(pyptr)
36
+ pyptr = pyptr.__pyobj__ if pyptr.respond_to? :__pyobj__
37
+ return pyptr if pyptr.kind_of? LibPython::PyObjectStruct
38
+ raise TypeError, "The argument must be a Python object"
39
+ end
40
+ end
41
+
42
+ def self.register(pyobj, obj)
43
+ key = Key.new(pyobj)
44
+ @gc_guard[key] ||= []
45
+ @gc_guard[key] << obj
46
+ end
47
+
48
+ def self.unregister(pyobj)
49
+ key = Key.new(pyobj)
50
+ @gc_guard.delete(key).tap { key.release }
51
+ end
52
+
53
+ def self.guarded_object_count
54
+ @gc_guard.length
55
+ end
56
+
57
+ def self.embed(pyobj, obj)
58
+ pyptr = pyobj.respond_to?(:__pyobj__) ? pyobj.__pyobj__ : pyobj
59
+ raise TypeError, "The argument must be a Python object" unless pyptr.kind_of? LibPython::PyObjectStruct
60
+ wo = LibPython.PyWeakref_NewRef(pyptr, weakref_callback)
61
+ register(wo, obj)
62
+ pyobj
63
+ end
64
+
65
+ private_class_method def self.weakref_callback
66
+ unless @weakref_callback
67
+ @weakref_callback_func = FFI::Function.new(
68
+ LibPython::PyObjectStruct.ptr,
69
+ [LibPython::PyObjectStruct.ptr, LibPython::PyObjectStruct.ptr]
70
+ ) do |callback, pyptr|
71
+ GCGuard.unregister(pyptr)
72
+ # LibPython.Py_DecRef(pyptr)
73
+ # LibPython.Py_IncRef(PyCall.None)
74
+ next PyCall.None
75
+ end
76
+ method_def = LibPython::PyMethodDef.new("weakref_callback", @weakref_callback_func, LibPython::METH_O, nil)
77
+ @weakref_callback = LibPython.PyCFunction_NewEx(method_def, nil, nil).tap {|po| LibPython.Py_IncRef(po) }
78
+ end
79
+ @weakref_callback
80
+ end
81
+ end
82
+
83
+ private_constant :GCGuard
84
+ end
data/lib/pycall/import.rb CHANGED
@@ -27,26 +27,59 @@ module PyCall
27
27
  define_singleton_method(as) { mod }
28
28
  end
29
29
 
30
+ # This function is implemented as a mimic of `import_from` function defined in `Python/ceval.c`.
30
31
  def pyfrom(mod_name, import: nil)
31
32
  raise ArgumentError, "missing identifiers to be imported" unless import
32
33
 
33
- mod = PyCall.import_module(mod_name)
34
- raise PyError.fetch unless mod
34
+ mod_name = mod_name.to_str if mod_name.respond_to? :to_str
35
+ mod_name = mod_name.to_s if mod_name.is_a? Symbol
36
+
37
+ import = Array(import)
38
+ fromlist = LibPython.PyTuple_New(import.length)
39
+ import.each_with_index do |import_name, i|
40
+ name = case import_name
41
+ when assoc_array_matcher
42
+ import_name[0]
43
+ when Symbol, String
44
+ import_name
45
+ end
46
+ LibPython.PyTuple_SetItem(fromlist, i, Conversions.from_ruby(name))
47
+ end
48
+
49
+ main_dict = PyCall::Eval.__send__ :main_dict
50
+ globals = main_dict.__pyobj__ # FIXME: this should mimic to `import_name` function defined in `Python/ceval.c`.
51
+ locals = main_dict.__pyobj__ # FIXME: this should mimic to `import_name` function defined in `Python/ceval.c`.
52
+ level = 0 # TODO: support prefixed dots (#25)
53
+ mod = LibPython.PyImport_ImportModuleLevel(mod_name, globals, locals, fromlist, level)
54
+ raise PyError.fetch if mod.null?
55
+ mod = mod.to_ruby
56
+
57
+ import.each do |import_name|
58
+ case import_name
59
+ when assoc_array_matcher
60
+ name, asname = *import_name
61
+ when Symbol, String
62
+ name, asname = import_name, import_name
63
+ end
35
64
 
36
- case import
37
- when Hash
38
- import.each do |attr, as|
39
- val = PyCall.getattr(mod, attr)
40
- define_name(as, val)
65
+ if PyCall.hasattr?(mod, name)
66
+ pyobj = PyCall.getattr(mod, name)
67
+ define_name(asname, pyobj)
68
+ next
41
69
  end
42
- when Array
43
- import.each do |attr|
44
- val = PyCall.getattr(mod, attr)
45
- define_name(attr, val)
70
+
71
+ if PyCall.hasattr?(mod, :__name__)
72
+ pkgname = PyCall.getattr(mod, :__name__)
73
+ fullname = "#{pkgname}.#{name}"
74
+ module_dict = LibPython.PyImport_GetModuleDict()
75
+ if PyCall.getattr(module_dict, fullname)
76
+ pyobj = PyCall.getattr(module_dict, fullname)
77
+ define_name(asname, pyobj)
78
+ next
79
+ end
46
80
  end
47
- when Symbol, String
48
- val = PyCall.getattr(mod, import)
49
- define_name(import, val)
81
+
82
+ raise ArgumentError, "cannot import name #{fullname}" unless pyobj
50
83
  end
51
84
  end
52
85
 
@@ -72,5 +105,11 @@ module PyCall
72
105
  raise ArgumentError, "#{var_name} is not a valid module variable name, use pyimport #{mod_name}, as: <name>"
73
106
  end
74
107
  end
108
+
109
+ def assoc_array_matcher
110
+ @assoc_array_matcher ||= ->(ary) do
111
+ ary.is_a?(Array) && ary.length == 2
112
+ end
113
+ end
75
114
  end
76
115
  end