ree 1.2.8 → 1.3.0

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
  SHA256:
3
- metadata.gz: 01f481b724cc1172676f4cc558258c45f9dbda5ea22b709c00898ad918d7f1b3
4
- data.tar.gz: c7184d45a4230b79c034e3b13b4f6b54fa3bbe425673f45e4735abc3f4433718
3
+ metadata.gz: 88bdacde8f0fbeadcec2e613e22c18a43a149186cebdb2643296bddbb6623a55
4
+ data.tar.gz: 41bb8952dee28db8efde2f53df65db6c3694f38848b3d54434429e4115c4f461
5
5
  SHA512:
6
- metadata.gz: 7b64df3a284deab371d179cef7f04d181abf03d1f39215ba8c79306a49e99f893ec5f74fd40dc9f2ddc1bf29e1c0e1987af1f0e127ade64db40ed38eefd37ef2
7
- data.tar.gz: 62acfc972f7e9f530476386e51b5f12d1e13cff64e05b02386a982f4e9147afbb90c153057392570c6937d63ba954b544a0b3db639b10a0d4bda60f55e58ebe0
6
+ metadata.gz: 3f51acc5edcc896dc88e5a8811c34adafb7227c2860cb92679e45139d0f00ffdaade813ccf02f99adfa226a2a91946829c21bbde7fea176a1ceafabbb3b0fa73
7
+ data.tar.gz: d164b8f7eb29541f7782e4fe067e66c1535ca343f38f2febcc30ff66196f74ceefd0899ae8ed7468c3e44d613a18c2550c6f1c8c7051786ac55c1a832f4f5cbb
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.4.1
1
+ 4.0.1
data/Gemfile.lock CHANGED
@@ -1,10 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ree (1.2.8)
4
+ ree (1.3.0)
5
5
  base64
6
- commander (~> 5.0.0)
7
- logger (~> 1.6.5)
6
+ commander
7
+ logger
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
@@ -12,37 +12,49 @@ GEM
12
12
  base64 (0.3.0)
13
13
  commander (5.0.0)
14
14
  highline (~> 3.0.0)
15
- debug (1.9.1)
15
+ date (3.5.1)
16
+ debug (1.11.1)
16
17
  irb (~> 1.10)
17
18
  reline (>= 0.3.8)
18
- diff-lcs (1.5.0)
19
+ diff-lcs (1.6.2)
20
+ erb (6.0.1)
19
21
  highline (3.0.1)
20
- io-console (0.7.2)
21
- irb (1.11.1)
22
- rdoc
22
+ io-console (0.8.2)
23
+ irb (1.17.0)
24
+ pp (>= 0.6.0)
25
+ prism (>= 1.3.0)
26
+ rdoc (>= 4.0.0)
23
27
  reline (>= 0.4.2)
24
- logger (1.6.5)
25
- psych (5.1.2)
28
+ logger (1.7.0)
29
+ pp (0.6.3)
30
+ prettyprint
31
+ prettyprint (0.2.0)
32
+ prism (1.9.0)
33
+ psych (5.3.1)
34
+ date
26
35
  stringio
27
- rake (13.1.0)
28
- rdoc (6.6.2)
36
+ rake (13.3.1)
37
+ rdoc (7.2.0)
38
+ erb
29
39
  psych (>= 4.0.0)
30
- reline (0.4.2)
40
+ tsort
41
+ reline (0.6.3)
31
42
  io-console (~> 0.5)
32
- rspec (3.12.0)
33
- rspec-core (~> 3.12.0)
34
- rspec-expectations (~> 3.12.0)
35
- rspec-mocks (~> 3.12.0)
36
- rspec-core (3.12.2)
37
- rspec-support (~> 3.12.0)
38
- rspec-expectations (3.12.3)
43
+ rspec (3.13.2)
44
+ rspec-core (~> 3.13.0)
45
+ rspec-expectations (~> 3.13.0)
46
+ rspec-mocks (~> 3.13.0)
47
+ rspec-core (3.13.6)
48
+ rspec-support (~> 3.13.0)
49
+ rspec-expectations (3.13.5)
39
50
  diff-lcs (>= 1.2.0, < 2.0)
40
- rspec-support (~> 3.12.0)
41
- rspec-mocks (3.12.6)
51
+ rspec-support (~> 3.13.0)
52
+ rspec-mocks (3.13.7)
42
53
  diff-lcs (>= 1.2.0, < 2.0)
43
- rspec-support (~> 3.12.0)
44
- rspec-support (3.12.1)
45
- stringio (3.1.0)
54
+ rspec-support (~> 3.13.0)
55
+ rspec-support (3.13.7)
56
+ stringio (3.2.0)
57
+ tsort (0.2.0)
46
58
 
47
59
  PLATFORMS
48
60
  arm64-darwin-21
@@ -29,6 +29,7 @@ class Ree::BenchmarkMethodPlugin
29
29
  def build_entry_point_wrapper(benchmark_name, config)
30
30
  output_proc = config[:output] || ->(res) { $stdout.puts(res) }
31
31
  deep = config.fetch(:deep, true)
32
+ hide_ree_lib = config.fetch(:hide_ree_lib, true)
32
33
  once = config.fetch(:once, false)
33
34
  benchmark_done = false
34
35
 
@@ -43,7 +44,7 @@ class Ree::BenchmarkMethodPlugin
43
44
  end
44
45
  else
45
46
  benchmark_done = true if once
46
- Ree::BenchmarkTracer.trace(benchmark_name, output_proc: output_proc, deep: deep) do
47
+ Ree::BenchmarkTracer.trace(benchmark_name, output_proc: output_proc, deep: deep, hide_ree_lib: hide_ree_lib) do
47
48
  next_layer.call(*args, **kwargs, &block)
48
49
  end
49
50
  end
@@ -7,7 +7,7 @@ class Ree::BenchmarkTracer
7
7
 
8
8
  class << self
9
9
  # Entry point trace — starts collection, outputs when root completes
10
- def trace(name, output_proc: nil, deep: true)
10
+ def trace(name, output_proc: nil, deep: true, hide_ree_lib: true)
11
11
  stack = Thread.current[THREAD_KEY] ||= []
12
12
  node = Node.new(name, Process.clock_gettime(Process::CLOCK_MONOTONIC), nil, [])
13
13
  stack.last.children.push(node) if stack.last
@@ -24,9 +24,9 @@ class Ree::BenchmarkTracer
24
24
  Thread.current[THREAD_KEY] = nil
25
25
 
26
26
  if output_proc
27
- output_proc.call(format_tree(node, deep: deep))
27
+ output_proc.call(format_tree(node, deep: deep, hide_ree_lib: hide_ree_lib))
28
28
  else
29
- $stdout.puts(format_tree(node, deep: deep))
29
+ $stdout.puts(format_tree(node, deep: deep, hide_ree_lib: hide_ree_lib))
30
30
  end
31
31
  end
32
32
  end
@@ -60,21 +60,32 @@ class Ree::BenchmarkTracer
60
60
 
61
61
  # Format tree as a string
62
62
  # deep: false → only root node, deep: true → full tree
63
- def format_tree(node, deep: true)
63
+ def format_tree(node, deep: true, hide_ree_lib: true)
64
64
  lines = []
65
- build_tree_lines(node, 0, lines, deep: deep)
65
+ build_tree_lines(node, 0, lines, deep: deep, hide_ree_lib: hide_ree_lib)
66
66
  lines.join("\n")
67
67
  end
68
68
 
69
69
  private
70
70
 
71
- def build_tree_lines(node, depth, lines, deep: true)
72
- indent = " " * depth
73
- duration_ms = (node.duration * 1000).round(2)
74
- lines << "#{indent}#{node.name} (#{duration_ms}ms)"
71
+ def build_tree_lines(node, depth, lines, deep: true, hide_ree_lib: true)
72
+ # Check if this node should be filtered (ree_ package)
73
+ should_filter = hide_ree_lib && node.name.start_with?('ree_')
75
74
 
76
- if deep
77
- node.children.each { |child| build_tree_lines(child, depth + 1, lines) }
75
+ if should_filter
76
+ # Skip this node but process its children at the current depth (promote them)
77
+ if deep
78
+ node.children.each { |child| build_tree_lines(child, depth, lines, deep: deep, hide_ree_lib: hide_ree_lib) }
79
+ end
80
+ else
81
+ # Normal path: show this node
82
+ indent = " " * depth
83
+ duration_ms = (node.duration * 1000).round(2)
84
+ lines << "#{indent}#{node.name} (#{duration_ms}ms)"
85
+
86
+ if deep
87
+ node.children.each { |child| build_tree_lines(child, depth + 1, lines, deep: deep, hide_ree_lib: hide_ree_lib) }
88
+ end
78
89
  end
79
90
  end
80
91
  end
@@ -170,15 +170,16 @@ class Ree::ObjectDsl
170
170
  @object.set_after_init(method_name)
171
171
  end
172
172
 
173
- def benchmark(once: false, deep: true, output: -> (res) { $stdout.puts(res) })
173
+ def benchmark(once: false, deep: true, hide_ree_lib: true, output: -> (res) { $stdout.puts(res) })
174
174
  if !@object.fn?
175
175
  raise_error("`benchmark` is only available for fn objects")
176
176
  end
177
177
 
178
178
  check_bool(once, :once)
179
179
  check_bool(deep, :deep)
180
+ check_bool(hide_ree_lib, :hide_ree_lib)
180
181
 
181
- config = { once: once, deep: deep, output: output }
182
+ config = { once: once, deep: deep, hide_ree_lib: hide_ree_lib, output: output }
182
183
  @object.set_benchmark_config(config)
183
184
 
184
185
  @object.klass.instance_variable_set(:@__ree_benchmark_config, config)
data/lib/ree/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ree
4
- VERSION = "1.2.8"
4
+ VERSION = "1.3.0"
5
5
  end
metadata CHANGED
@@ -1,42 +1,42 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ree
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.8
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ruslan Gatiyatov
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2026-02-10 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: commander
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
- - - "~>"
16
+ - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: 5.0.0
18
+ version: '0'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
- - - "~>"
23
+ - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: 5.0.0
25
+ version: '0'
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: logger
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
- - - "~>"
30
+ - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 1.6.5
32
+ version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - "~>"
37
+ - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 1.6.5
39
+ version: '0'
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: base64
42
42
  requirement: !ruby/object:Gem::Requirement
@@ -236,14 +236,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
236
236
  requirements:
237
237
  - - ">="
238
238
  - !ruby/object:Gem::Version
239
- version: '3.1'
239
+ version: '3.4'
240
240
  required_rubygems_version: !ruby/object:Gem::Requirement
241
241
  requirements:
242
242
  - - ">="
243
243
  - !ruby/object:Gem::Version
244
244
  version: '0'
245
245
  requirements: []
246
- rubygems_version: 3.6.2
246
+ rubygems_version: 4.0.3
247
247
  specification_version: 4
248
248
  summary: Ruby framework to create modular applications
249
249
  test_files: []