grumlin 0.14.1 → 0.14.2
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/CHANGELOG.md +6 -0
- data/Gemfile.lock +11 -12
- data/README.md +2 -1
- data/grumlin.gemspec +3 -0
- data/lib/grumlin/anonymous_step.rb +6 -4
- data/lib/grumlin/bytecode.rb +4 -1
- data/lib/grumlin/client.rb +5 -2
- data/lib/grumlin/edge.rb +4 -1
- data/lib/grumlin/expressions/u.rb +2 -2
- data/lib/grumlin/path.rb +4 -1
- data/lib/grumlin/request_dispatcher.rb +8 -4
- data/lib/grumlin/transport.rb +1 -1
- data/lib/grumlin/traversal.rb +7 -1
- data/lib/grumlin/typed_value.rb +8 -2
- data/lib/grumlin/version.rb +1 -1
- data/lib/grumlin/vertex.rb +4 -1
- data/lib/grumlin.rb +2 -0
- metadata +3 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d54992de5df5f10f004557bc7a7d86ec5558c104663bf36904838e843d38b4d
|
4
|
+
data.tar.gz: e2e5cca5ad4cc034b991760db13c9a41d780609895ea38e236ef384bfa9df8f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a1f23141609f072193fa4a624ae63263200daebb72b4f2c0759e738325409546365f962117d36dbb8baf1c6df5ebd9a60f5c53453f7827cfd8cc90d450afa0e
|
7
|
+
data.tar.gz: c6bd3b5f1f0b02173931f8189c0dca7fdcb5c11bfc6c4f8fdb34065a8d90a55ecb4118cf50f080c3c490ed1e2afda9035716fafc4679c6f606ad74ccc955d5f3
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
## [0.14.2] - 2021-12-12
|
2
|
+
|
3
|
+
- Better exceptions
|
4
|
+
- Add `choose` step
|
5
|
+
- Add `__.hasNot`, `__.is`, `__.select`
|
6
|
+
|
1
7
|
## [0.14.0] - 2021-12-07
|
2
8
|
|
3
9
|
- Add initial support for [configuration steps](https://tinkerpop.apache.org/docs/current/reference/#configuration-steps)
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
grumlin (0.14.
|
4
|
+
grumlin (0.14.2)
|
5
5
|
async-pool (~> 0.3)
|
6
6
|
async-websocket (~> 0.19)
|
7
7
|
oj (~> 3.12)
|
@@ -72,8 +72,8 @@ GEM
|
|
72
72
|
overcommit (0.57.0)
|
73
73
|
childprocess (>= 0.6.3, < 5)
|
74
74
|
iniparse (~> 1.4)
|
75
|
-
parallel (1.
|
76
|
-
parser (3.0.
|
75
|
+
parallel (1.21.0)
|
76
|
+
parser (3.0.3.2)
|
77
77
|
ast (~> 2.4.1)
|
78
78
|
protocol-hpack (1.4.2)
|
79
79
|
protocol-http (0.22.5)
|
@@ -88,7 +88,7 @@ GEM
|
|
88
88
|
racc (1.5.2)
|
89
89
|
rainbow (3.0.0)
|
90
90
|
rake (13.0.3)
|
91
|
-
regexp_parser (2.
|
91
|
+
regexp_parser (2.2.0)
|
92
92
|
reverse_markdown (2.0.0)
|
93
93
|
nokogiri
|
94
94
|
rexml (3.2.5)
|
@@ -109,23 +109,22 @@ GEM
|
|
109
109
|
diff-lcs (>= 1.2.0, < 2.0)
|
110
110
|
rspec-support (~> 3.10.0)
|
111
111
|
rspec-support (3.10.2)
|
112
|
-
rubocop (1.
|
112
|
+
rubocop (1.23.0)
|
113
113
|
parallel (~> 1.10)
|
114
114
|
parser (>= 3.0.0.0)
|
115
115
|
rainbow (>= 2.2.2, < 4.0)
|
116
116
|
regexp_parser (>= 1.8, < 3.0)
|
117
117
|
rexml
|
118
|
-
rubocop-ast (>= 1.
|
118
|
+
rubocop-ast (>= 1.12.0, < 2.0)
|
119
119
|
ruby-progressbar (~> 1.7)
|
120
120
|
unicode-display_width (>= 1.4.0, < 3.0)
|
121
|
-
rubocop-ast (1.
|
121
|
+
rubocop-ast (1.14.0)
|
122
122
|
parser (>= 3.0.1.1)
|
123
|
-
rubocop-performance (1.
|
123
|
+
rubocop-performance (1.12.0)
|
124
124
|
rubocop (>= 1.7.0, < 2.0)
|
125
125
|
rubocop-ast (>= 0.4.0)
|
126
|
-
rubocop-rspec (2.
|
127
|
-
rubocop (~> 1.
|
128
|
-
rubocop-ast (>= 1.1.0)
|
126
|
+
rubocop-rspec (2.6.0)
|
127
|
+
rubocop (~> 1.19)
|
129
128
|
ruby-progressbar (1.11.0)
|
130
129
|
simplecov (0.21.2)
|
131
130
|
docile (~> 1.1)
|
@@ -153,7 +152,7 @@ GEM
|
|
153
152
|
timers (4.3.3)
|
154
153
|
tzinfo (2.0.4)
|
155
154
|
concurrent-ruby (~> 1.0)
|
156
|
-
unicode-display_width (2.
|
155
|
+
unicode-display_width (2.1.0)
|
157
156
|
yard (0.9.26)
|
158
157
|
zeitwerk (2.4.2)
|
159
158
|
|
data/README.md
CHANGED
@@ -241,7 +241,8 @@ config.include_context(Grumlin::Test::RSpec::DBCleanerContext) # Cleans the data
|
|
241
241
|
...
|
242
242
|
```
|
243
243
|
|
244
|
-
It is highly recommended to use `Grumlin::Sugar` and not trying to use lower level APIs
|
244
|
+
It is highly recommended to use `Grumlin::Sugar` or `Grumlin::Repository` and not trying to use lower level APIs
|
245
|
+
as they are subject to change.
|
245
246
|
|
246
247
|
## Development
|
247
248
|
|
data/grumlin.gemspec
CHANGED
@@ -5,9 +5,9 @@ module Grumlin
|
|
5
5
|
attr_reader :name, :previous_step, :configuration_steps
|
6
6
|
|
7
7
|
# TODO: add other steps
|
8
|
-
SUPPORTED_STEPS = %i[E V addE addV and as both bothE by coalesce count dedup drop elementMap emit fold from
|
9
|
-
groupCount has hasId hasLabel hasNot id in inE inV is label limit not or order out outE
|
10
|
-
project property range repeat select sideEffect skip tail to unfold union until valueMap
|
8
|
+
SUPPORTED_STEPS = %i[E V addE addV and as both bothE by choose coalesce count dedup drop elementMap emit fold from
|
9
|
+
group groupCount has hasId hasLabel hasNot id in inE inV is label limit not or order out outE
|
10
|
+
path project property range repeat select sideEffect skip tail to unfold union until valueMap
|
11
11
|
values where with].freeze
|
12
12
|
|
13
13
|
def initialize(name, *args, configuration_steps: [], previous_step: nil, **params)
|
@@ -32,7 +32,9 @@ module Grumlin
|
|
32
32
|
bytecode.inspect
|
33
33
|
end
|
34
34
|
|
35
|
-
|
35
|
+
def to_s
|
36
|
+
inspect
|
37
|
+
end
|
36
38
|
|
37
39
|
def bytecode(no_return: false)
|
38
40
|
@bytecode ||= Bytecode.new(self, no_return: no_return)
|
data/lib/grumlin/bytecode.rb
CHANGED
@@ -25,7 +25,10 @@ module Grumlin
|
|
25
25
|
end
|
26
26
|
"#{configuration_steps.any? ? configuration_steps : nil}#{to_readable_bytecode}"
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
|
+
def to_s
|
30
|
+
inspect
|
31
|
+
end
|
29
32
|
|
30
33
|
def to_readable_bytecode
|
31
34
|
@to_readable_bytecode ||= steps.map { |s| serialize_arg(s, serialization_method: :to_readable_bytecode) }
|
data/lib/grumlin/client.rb
CHANGED
@@ -51,7 +51,7 @@ module Grumlin
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def connect
|
54
|
-
raise
|
54
|
+
raise ClientClosedError if @closed
|
55
55
|
|
56
56
|
@transport = build_transport
|
57
57
|
response_channel = @transport.connect
|
@@ -113,10 +113,13 @@ module Grumlin
|
|
113
113
|
"<#{self.class} url=#{@url} connected=#{connected?}>"
|
114
114
|
end
|
115
115
|
|
116
|
-
|
116
|
+
def to_s
|
117
|
+
inspect
|
118
|
+
end
|
117
119
|
|
118
120
|
private
|
119
121
|
|
122
|
+
# This might be overridden in successors
|
120
123
|
def build_transport
|
121
124
|
Transport.new(@url, parent: @parent, **@client_options)
|
122
125
|
end
|
data/lib/grumlin/edge.rb
CHANGED
@@ -4,8 +4,8 @@ module Grumlin
|
|
4
4
|
module Expressions
|
5
5
|
module U
|
6
6
|
# TODO: add other start steps
|
7
|
-
SUPPORTED_STEPS = %i[V addV count drop fold has hasLabel id in inE inV label out outE outV project
|
8
|
-
timeLimit unfold valueMap values].freeze
|
7
|
+
SUPPORTED_STEPS = %i[V addV count drop fold has hasLabel hasNot id in inE inV is label out outE outV project
|
8
|
+
repeat select timeLimit unfold valueMap values].freeze
|
9
9
|
|
10
10
|
class << self
|
11
11
|
SUPPORTED_STEPS.each do |step|
|
data/lib/grumlin/path.rb
CHANGED
@@ -22,14 +22,18 @@ module Grumlin
|
|
22
22
|
498 => ClientSideError
|
23
23
|
}.freeze
|
24
24
|
|
25
|
-
|
25
|
+
class DispatcherError < Grumlin::Error; end
|
26
|
+
|
27
|
+
class RequestAlreadyAddedError < DispatcherError; end
|
28
|
+
|
29
|
+
class UnknownRequestError < DispatcherError; end
|
26
30
|
|
27
31
|
def initialize
|
28
32
|
@requests = {}
|
29
33
|
end
|
30
34
|
|
31
35
|
def add_request(request)
|
32
|
-
raise
|
36
|
+
raise RequestAlreadyAddedError if @requests.key?(request[:requestId])
|
33
37
|
|
34
38
|
Async::Channel.new.tap do |channel|
|
35
39
|
@requests[request[:requestId]] = { request: request, result: [], channel: channel }
|
@@ -40,7 +44,7 @@ module Grumlin
|
|
40
44
|
# TODO: sometimes response does not include requestID, no idea how to handle it so far.
|
41
45
|
def add_response(response) # rubocop:disable Metrics/AbcSize
|
42
46
|
request_id = response[:requestId]
|
43
|
-
raise
|
47
|
+
raise UnknownRequestError unless ongoing_request?(request_id)
|
44
48
|
|
45
49
|
request = @requests[request_id]
|
46
50
|
|
@@ -61,7 +65,7 @@ module Grumlin
|
|
61
65
|
end
|
62
66
|
|
63
67
|
def close_request(request_id)
|
64
|
-
raise
|
68
|
+
raise UnknownRequestError unless ongoing_request?(request_id)
|
65
69
|
|
66
70
|
request = @requests.delete(request_id)
|
67
71
|
request[:channel].close
|
data/lib/grumlin/transport.rb
CHANGED
@@ -23,7 +23,7 @@ module Grumlin
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def connect
|
26
|
-
raise
|
26
|
+
raise ClientClosedError if @closed
|
27
27
|
raise AlreadyConnectedError if connected?
|
28
28
|
|
29
29
|
@connection = Async::WebSocket::Client.connect(Async::HTTP::Endpoint.parse(@url), **@client_options)
|
data/lib/grumlin/traversal.rb
CHANGED
@@ -14,7 +14,13 @@ module Grumlin
|
|
14
14
|
@configuration_steps = configuration_steps
|
15
15
|
end
|
16
16
|
|
17
|
-
|
17
|
+
def inspect
|
18
|
+
"#<#{self.class}>"
|
19
|
+
end
|
20
|
+
|
21
|
+
def to_s
|
22
|
+
inspect
|
23
|
+
end
|
18
24
|
|
19
25
|
CONFIGURATION_STEPS.each do |step|
|
20
26
|
define_method step do |*args, **params|
|
data/lib/grumlin/typed_value.rb
CHANGED
data/lib/grumlin/version.rb
CHANGED
data/lib/grumlin/vertex.rb
CHANGED
data/lib/grumlin.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grumlin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.14.
|
4
|
+
version: 0.14.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gleb Sinyavskiy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-12-
|
11
|
+
date: 2021-12-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: async-pool
|
@@ -130,9 +130,7 @@ homepage: https://github.com/zhulik/grumlin
|
|
130
130
|
licenses:
|
131
131
|
- MIT
|
132
132
|
metadata:
|
133
|
-
|
134
|
-
source_code_uri: https://github.com/zhulik/grumlin
|
135
|
-
changelog_uri: https://github.com/zhulik/grumlin/blob/master/CHANGELOG.md
|
133
|
+
rubygems_mfa_required: 'true'
|
136
134
|
post_install_message:
|
137
135
|
rdoc_options: []
|
138
136
|
require_paths:
|