pycall 1.5.2 → 1.5.4
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 +4 -4
- data/.github/dependabot.yml +7 -8
- data/.github/workflows/ci.yml +23 -25
- data/.github/workflows/release.yml +48 -0
- data/.github/workflows/windows.yml +18 -17
- data/CHANGES.md +16 -0
- data/README.md +20 -46
- data/Rakefile +11 -0
- data/docker/Dockerfile +1 -1
- data/ext/pycall/pycall.c +173 -39
- data/ext/pycall/pycall_internal.h +2 -3
- data/ext/pycall/ruby_wrapper.c +5 -69
- data/lib/pycall/libpython/pytypeobject_struct.rb +1 -1
- data/lib/pycall/pyobject_wrapper.rb +2 -3
- data/lib/pycall/version.rb +1 -1
- data/lib/pycall.rb +1 -1
- data/pycall.gemspec +7 -15
- metadata +15 -36
- data/bin/guard +0 -17
- data/ci/travis_before_script.sh +0 -21
- data/ci/travis_install.sh +0 -69
- data/ci/travis_retry.sh +0 -19
- data/config/Guardfile +0 -30
|
@@ -33,8 +33,6 @@ module PyCall
|
|
|
33
33
|
}.freeze
|
|
34
34
|
|
|
35
35
|
def method_missing(name, *args)
|
|
36
|
-
name_str = name.to_s if name.kind_of?(Symbol)
|
|
37
|
-
name_str.chop! if name_str.end_with?('=')
|
|
38
36
|
case name
|
|
39
37
|
when *OPERATOR_METHOD_NAMES.keys
|
|
40
38
|
op_name = OPERATOR_METHOD_NAMES[name]
|
|
@@ -44,7 +42,8 @@ module PyCall
|
|
|
44
42
|
return self.__send__(name, *args)
|
|
45
43
|
end
|
|
46
44
|
else
|
|
47
|
-
|
|
45
|
+
name_without_last_equal = name.to_s.chomp('=')
|
|
46
|
+
if LibPython::Helpers.hasattr?(__pyptr__, name_without_last_equal)
|
|
48
47
|
LibPython::Helpers.define_wrapper_method(self, name)
|
|
49
48
|
return self.__send__(name, *args)
|
|
50
49
|
end
|
data/lib/pycall/version.rb
CHANGED
data/lib/pycall.rb
CHANGED
|
@@ -116,7 +116,7 @@ module PyCall
|
|
|
116
116
|
rescue PyError => err
|
|
117
117
|
raise err unless ctx.__exit__(err.type, err.value, err.traceback)
|
|
118
118
|
rescue Exception => err
|
|
119
|
-
# TODO: support telling what exception has been
|
|
119
|
+
# TODO: support telling what exception has been caught
|
|
120
120
|
raise err unless ctx.__exit__(err.class, err, err.backtrace_locations)
|
|
121
121
|
else
|
|
122
122
|
ctx.__exit__(nil, nil, nil)
|
data/pycall.gemspec
CHANGED
|
@@ -1,29 +1,21 @@
|
|
|
1
1
|
# coding: utf-8
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
require 'pycall/version'
|
|
2
|
+
|
|
3
|
+
require_relative 'lib/pycall/version'
|
|
5
4
|
|
|
6
5
|
Gem::Specification.new do |spec|
|
|
7
6
|
spec.name = "pycall"
|
|
8
|
-
|
|
9
|
-
PyCall::Version::MAJOR.to_s,
|
|
10
|
-
PyCall::Version::MINOR.to_s,
|
|
11
|
-
PyCall::Version::MICRO.to_s,
|
|
12
|
-
PyCall::Version::TAG,
|
|
13
|
-
]
|
|
14
|
-
spec.version = version_components.compact.join(".")
|
|
7
|
+
spec.version = PyCall::VERSION
|
|
15
8
|
spec.authors = ["Kenta Murata"]
|
|
16
9
|
spec.email = ["mrkn@mrkn.jp"]
|
|
17
10
|
|
|
18
11
|
spec.summary = %q{pycall}
|
|
19
12
|
spec.description = %q{pycall}
|
|
20
|
-
spec.homepage = "https://github.com/
|
|
13
|
+
spec.homepage = "https://github.com/red-data-tools/pycall.rb"
|
|
21
14
|
spec.license = "MIT"
|
|
22
15
|
|
|
23
16
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
24
17
|
case f
|
|
25
|
-
when %r{^
|
|
26
|
-
%r{^ext/pycall/spec_helper/},
|
|
18
|
+
when %r{^ext/pycall/spec_helper/},
|
|
27
19
|
%r{^(test|spec|features)/}
|
|
28
20
|
true
|
|
29
21
|
else
|
|
@@ -36,13 +28,13 @@ Gem::Specification.new do |spec|
|
|
|
36
28
|
spec.require_paths = ["lib"]
|
|
37
29
|
spec.extensions = ["ext/pycall/extconf.rb"]
|
|
38
30
|
|
|
31
|
+
spec.add_dependency 'fiddle', '>= 1.0.0'
|
|
32
|
+
|
|
39
33
|
spec.add_development_dependency "bundler"
|
|
40
34
|
spec.add_development_dependency "rake"
|
|
41
35
|
spec.add_development_dependency "rake-compiler"
|
|
42
36
|
spec.add_development_dependency "rake-compiler-dock"
|
|
43
37
|
spec.add_development_dependency "rspec"
|
|
44
38
|
spec.add_development_dependency "launchy"
|
|
45
|
-
spec.add_development_dependency "pry"
|
|
46
|
-
spec.add_development_dependency "pry-byebug"
|
|
47
39
|
spec.add_development_dependency "test-unit"
|
|
48
40
|
end
|
metadata
CHANGED
|
@@ -1,45 +1,30 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pycall
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.5.
|
|
4
|
+
version: 1.5.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kenta Murata
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - ">="
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '0'
|
|
20
|
-
type: :development
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - ">="
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '0'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: rake
|
|
13
|
+
name: fiddle
|
|
29
14
|
requirement: !ruby/object:Gem::Requirement
|
|
30
15
|
requirements:
|
|
31
16
|
- - ">="
|
|
32
17
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
34
|
-
type: :
|
|
18
|
+
version: 1.0.0
|
|
19
|
+
type: :runtime
|
|
35
20
|
prerelease: false
|
|
36
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
22
|
requirements:
|
|
38
23
|
- - ">="
|
|
39
24
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
25
|
+
version: 1.0.0
|
|
41
26
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
27
|
+
name: bundler
|
|
43
28
|
requirement: !ruby/object:Gem::Requirement
|
|
44
29
|
requirements:
|
|
45
30
|
- - ">="
|
|
@@ -53,7 +38,7 @@ dependencies:
|
|
|
53
38
|
- !ruby/object:Gem::Version
|
|
54
39
|
version: '0'
|
|
55
40
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: rake
|
|
41
|
+
name: rake
|
|
57
42
|
requirement: !ruby/object:Gem::Requirement
|
|
58
43
|
requirements:
|
|
59
44
|
- - ">="
|
|
@@ -67,7 +52,7 @@ dependencies:
|
|
|
67
52
|
- !ruby/object:Gem::Version
|
|
68
53
|
version: '0'
|
|
69
54
|
- !ruby/object:Gem::Dependency
|
|
70
|
-
name:
|
|
55
|
+
name: rake-compiler
|
|
71
56
|
requirement: !ruby/object:Gem::Requirement
|
|
72
57
|
requirements:
|
|
73
58
|
- - ">="
|
|
@@ -81,7 +66,7 @@ dependencies:
|
|
|
81
66
|
- !ruby/object:Gem::Version
|
|
82
67
|
version: '0'
|
|
83
68
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
69
|
+
name: rake-compiler-dock
|
|
85
70
|
requirement: !ruby/object:Gem::Requirement
|
|
86
71
|
requirements:
|
|
87
72
|
- - ">="
|
|
@@ -95,7 +80,7 @@ dependencies:
|
|
|
95
80
|
- !ruby/object:Gem::Version
|
|
96
81
|
version: '0'
|
|
97
82
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
83
|
+
name: rspec
|
|
99
84
|
requirement: !ruby/object:Gem::Requirement
|
|
100
85
|
requirements:
|
|
101
86
|
- - ">="
|
|
@@ -109,7 +94,7 @@ dependencies:
|
|
|
109
94
|
- !ruby/object:Gem::Version
|
|
110
95
|
version: '0'
|
|
111
96
|
- !ruby/object:Gem::Dependency
|
|
112
|
-
name:
|
|
97
|
+
name: launchy
|
|
113
98
|
requirement: !ruby/object:Gem::Requirement
|
|
114
99
|
requirements:
|
|
115
100
|
- - ">="
|
|
@@ -146,6 +131,7 @@ extra_rdoc_files: []
|
|
|
146
131
|
files:
|
|
147
132
|
- ".github/dependabot.yml"
|
|
148
133
|
- ".github/workflows/ci.yml"
|
|
134
|
+
- ".github/workflows/release.yml"
|
|
149
135
|
- ".github/workflows/windows.yml"
|
|
150
136
|
- ".gitignore"
|
|
151
137
|
- ".rspec"
|
|
@@ -155,14 +141,9 @@ files:
|
|
|
155
141
|
- README.md
|
|
156
142
|
- Rakefile
|
|
157
143
|
- bin/console
|
|
158
|
-
- bin/guard
|
|
159
144
|
- bin/rspec
|
|
160
145
|
- bin/runner
|
|
161
146
|
- bin/setup
|
|
162
|
-
- ci/travis_before_script.sh
|
|
163
|
-
- ci/travis_install.sh
|
|
164
|
-
- ci/travis_retry.sh
|
|
165
|
-
- config/Guardfile
|
|
166
147
|
- docker/Dockerfile
|
|
167
148
|
- docker/Gemfile
|
|
168
149
|
- docker/README.md
|
|
@@ -218,11 +199,10 @@ files:
|
|
|
218
199
|
- pycall.gemspec
|
|
219
200
|
- tasks/docker.rake
|
|
220
201
|
- tasks/pycall.rake
|
|
221
|
-
homepage: https://github.com/
|
|
202
|
+
homepage: https://github.com/red-data-tools/pycall.rb
|
|
222
203
|
licenses:
|
|
223
204
|
- MIT
|
|
224
205
|
metadata: {}
|
|
225
|
-
post_install_message:
|
|
226
206
|
rdoc_options: []
|
|
227
207
|
require_paths:
|
|
228
208
|
- lib
|
|
@@ -237,8 +217,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
237
217
|
- !ruby/object:Gem::Version
|
|
238
218
|
version: '0'
|
|
239
219
|
requirements: []
|
|
240
|
-
rubygems_version:
|
|
241
|
-
signing_key:
|
|
220
|
+
rubygems_version: 4.0.20
|
|
242
221
|
specification_version: 4
|
|
243
222
|
summary: pycall
|
|
244
223
|
test_files: []
|
data/bin/guard
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
#
|
|
4
|
-
# This file was generated by Bundler.
|
|
5
|
-
#
|
|
6
|
-
# The application 'guard' is installed as part of a gem, and
|
|
7
|
-
# this file is here to facilitate running it.
|
|
8
|
-
#
|
|
9
|
-
|
|
10
|
-
require "pathname"
|
|
11
|
-
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
|
12
|
-
Pathname.new(__FILE__).realpath)
|
|
13
|
-
|
|
14
|
-
require "rubygems"
|
|
15
|
-
require "bundler/setup"
|
|
16
|
-
|
|
17
|
-
load Gem.bin_path("guard", "guard")
|
data/ci/travis_before_script.sh
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
__DIR__=$(cd $(dirname $BASH_SOURCE); pwd)
|
|
2
|
-
. $__DIR__/travis_retry.sh
|
|
3
|
-
|
|
4
|
-
set -ex
|
|
5
|
-
|
|
6
|
-
if test -z "$PYENV_VERSION"; then
|
|
7
|
-
echo "ERROR: PYENV_VERSION is not provided" >2
|
|
8
|
-
exit 1
|
|
9
|
-
fi
|
|
10
|
-
|
|
11
|
-
if test -n "$LIBPYTHON"; then
|
|
12
|
-
export LIBPYTHON=$(pyenv root)/$LIBPYTHON
|
|
13
|
-
fi
|
|
14
|
-
|
|
15
|
-
case "$PYENV_VERSION" in
|
|
16
|
-
*conda*)
|
|
17
|
-
source $(pyenv prefix)/bin/activate test-environment
|
|
18
|
-
;;
|
|
19
|
-
esac
|
|
20
|
-
|
|
21
|
-
set +ex
|
data/ci/travis_install.sh
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
#! /bin/bash
|
|
2
|
-
|
|
3
|
-
__DIR__=$(cd $(dirname $BASH_SOURCE); pwd)
|
|
4
|
-
. $__DIR__/travis_retry.sh
|
|
5
|
-
|
|
6
|
-
set -ex
|
|
7
|
-
|
|
8
|
-
if test -z "$PYENV_VERSION"; then
|
|
9
|
-
echo "ERROR: PYENV_VERSION is not provided" >2
|
|
10
|
-
exit 1
|
|
11
|
-
fi
|
|
12
|
-
|
|
13
|
-
pyenv_root=$(pyenv root)
|
|
14
|
-
|
|
15
|
-
if test -n "$LIBPYTHON"; then
|
|
16
|
-
if test ! -f $LIBPYTHON; then
|
|
17
|
-
if test -f ${pyenv_root}/$LIBPYTHON; then
|
|
18
|
-
export LIBPYTHON=${pyenv_root}/$LIBPYTHON
|
|
19
|
-
else
|
|
20
|
-
echo "Invalid value in LIBPYTHON: ${LIBPYTHON}" >&2
|
|
21
|
-
exit 1
|
|
22
|
-
fi
|
|
23
|
-
fi
|
|
24
|
-
fi
|
|
25
|
-
|
|
26
|
-
(
|
|
27
|
-
cd $(pyenv root)
|
|
28
|
-
if [ -d .git ]; then
|
|
29
|
-
git fetch origin
|
|
30
|
-
git checkout master
|
|
31
|
-
git reset --hard origin/master
|
|
32
|
-
fi
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
case $PYENV_VERSION in
|
|
36
|
-
system)
|
|
37
|
-
;;
|
|
38
|
-
*)
|
|
39
|
-
PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install -f $PYENV_VERSION
|
|
40
|
-
;;
|
|
41
|
-
esac
|
|
42
|
-
|
|
43
|
-
case "$PYENV_VERSION" in
|
|
44
|
-
*conda*)
|
|
45
|
-
case "$PYENV_VERSION" in
|
|
46
|
-
*conda2*)
|
|
47
|
-
python_version=2.7
|
|
48
|
-
;;
|
|
49
|
-
*)
|
|
50
|
-
python_version=3.6
|
|
51
|
-
;;
|
|
52
|
-
esac
|
|
53
|
-
conda config --set always_yes yes --set changeps1 no
|
|
54
|
-
travis_retry conda update -q conda
|
|
55
|
-
conda info -a
|
|
56
|
-
travis_retry conda create -q -n test-environment python=$python_version numpy
|
|
57
|
-
source $(pyenv prefix)/bin/activate test-environment
|
|
58
|
-
;;
|
|
59
|
-
system)
|
|
60
|
-
travis_retry pip install --user numpy
|
|
61
|
-
sudo sh -c "apt-get update && apt-get install --no-install-recommends -y python3-pip"
|
|
62
|
-
travis_retry python3.6 -m pip install --user numpy
|
|
63
|
-
;;
|
|
64
|
-
*)
|
|
65
|
-
travis_retry pip install --user numpy
|
|
66
|
-
;;
|
|
67
|
-
esac
|
|
68
|
-
|
|
69
|
-
bundle install
|
data/ci/travis_retry.sh
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
travis_retry ()
|
|
2
|
-
{
|
|
3
|
-
local result=0
|
|
4
|
-
local count=1
|
|
5
|
-
while [ $count -le 3 ]; do
|
|
6
|
-
[ $result -ne 0 ] && {
|
|
7
|
-
echo -e "\n${ANSI_RED}The command \"$@\" failed. Retrying, $count of 3.${ANSI_RESET}\n" 1>&2
|
|
8
|
-
}
|
|
9
|
-
"$@"
|
|
10
|
-
result=$?
|
|
11
|
-
[ $result -eq 0 ] && break
|
|
12
|
-
count=$(($count + 1))
|
|
13
|
-
sleep 1
|
|
14
|
-
done
|
|
15
|
-
[ $count -gt 3 ] && {
|
|
16
|
-
echo -e "\n${ANSI_RED}The command \"$@\" failed 3 times.${ANSI_RESET}\n" 1>&2
|
|
17
|
-
}
|
|
18
|
-
return $result
|
|
19
|
-
}
|
data/config/Guardfile
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# More info at https://github.com/guard/guard#readme
|
|
2
|
-
|
|
3
|
-
if RUBY_PLATFORM =~ /darwin/
|
|
4
|
-
notification :terminal_notifier, app_name: 'pycall.gem ::', activate: 'com.googlecode.iTerm2'
|
|
5
|
-
end
|
|
6
|
-
|
|
7
|
-
directories %w(config lib spec).select { |d|
|
|
8
|
-
Dir.exists?(d) ? d : UI.warning("Directory #{d} does not exist")
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
watch('config/Guardfile') do
|
|
12
|
-
UI.info "Exiting guard because config changed"
|
|
13
|
-
exit 0
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
guard :rspec, cmd: 'bin/rspec' do
|
|
17
|
-
require "guard/rspec/dsl"
|
|
18
|
-
dsl = Guard::RSpec::Dsl.new(self)
|
|
19
|
-
|
|
20
|
-
# RSpec files
|
|
21
|
-
rspec = dsl.rspec
|
|
22
|
-
watch(rspec.spec_helper) { rspec.spec_dir }
|
|
23
|
-
watch(rspec.spec_support) { rspec.spec_dir }
|
|
24
|
-
watch(rspec.spec_files)
|
|
25
|
-
|
|
26
|
-
# Ruby files
|
|
27
|
-
ruby = dsl.ruby
|
|
28
|
-
dsl.watch_spec_files_for(ruby.lib_files)
|
|
29
|
-
watch('lib/pycall/libpython.rb') { 'spec' }
|
|
30
|
-
end
|