sbf-do_sqlite3 0.10.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +7 -0
  2. data/ChangeLog.markdown +119 -0
  3. data/LICENSE +20 -0
  4. data/README.markdown +94 -0
  5. data/Rakefile +21 -0
  6. data/ext/do_sqlite3/compat.h +55 -0
  7. data/ext/do_sqlite3/do_common.c +510 -0
  8. data/ext/do_sqlite3/do_common.h +132 -0
  9. data/ext/do_sqlite3/do_sqlite3.c +448 -0
  10. data/ext/do_sqlite3/do_sqlite3.h +22 -0
  11. data/ext/do_sqlite3/do_sqlite3_extension.c +87 -0
  12. data/ext/do_sqlite3/error.h +85 -0
  13. data/ext/do_sqlite3/extconf.rb +26 -0
  14. data/lib/do_sqlite3/transaction.rb +21 -0
  15. data/lib/do_sqlite3/version.rb +5 -0
  16. data/lib/do_sqlite3.rb +13 -0
  17. data/spec/command_spec.rb +6 -0
  18. data/spec/connection_spec.rb +26 -0
  19. data/spec/encoding_spec.rb +7 -0
  20. data/spec/error/sql_error_spec.rb +7 -0
  21. data/spec/reader_spec.rb +6 -0
  22. data/spec/result_spec.rb +17 -0
  23. data/spec/spec_helper.rb +138 -0
  24. data/spec/typecast/array_spec.rb +6 -0
  25. data/spec/typecast/bigdecimal_spec.rb +9 -0
  26. data/spec/typecast/boolean_spec.rb +9 -0
  27. data/spec/typecast/byte_array_spec.rb +6 -0
  28. data/spec/typecast/class_spec.rb +6 -0
  29. data/spec/typecast/date_spec.rb +9 -0
  30. data/spec/typecast/datetime_spec.rb +9 -0
  31. data/spec/typecast/float_spec.rb +10 -0
  32. data/spec/typecast/integer_spec.rb +6 -0
  33. data/spec/typecast/nil_spec.rb +18 -0
  34. data/spec/typecast/other_spec.rb +6 -0
  35. data/spec/typecast/range_spec.rb +6 -0
  36. data/spec/typecast/string_spec.rb +6 -0
  37. data/spec/typecast/time_spec.rb +7 -0
  38. data/tasks/compile.rake +23 -0
  39. data/tasks/release.rake +14 -0
  40. data/tasks/retrieve.rake +16 -0
  41. data/tasks/spec.rake +10 -0
  42. metadata +100 -0
@@ -0,0 +1,6 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
2
+ require 'data_objects/spec/shared/command_spec'
3
+
4
+ describe DataObjects::Sqlite3::Command do
5
+ it_behaves_like 'a Command'
6
+ end
@@ -0,0 +1,26 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
2
+ require 'data_objects/spec/shared/connection_spec'
3
+
4
+ describe DataObjects::Sqlite3::Connection do
5
+ before :all do
6
+ @driver = CONFIG.scheme
7
+ @user = CONFIG.user
8
+ @password = CONFIG.pass
9
+ @host = CONFIG.host
10
+ @port = CONFIG.port
11
+ @database = CONFIG.database
12
+ end
13
+
14
+ it_behaves_like 'a Connection'
15
+
16
+ describe 'connecting with busy timeout' do
17
+ it 'connects with a valid timeout' do
18
+ expect(DataObjects::Connection.new("#{CONFIG.uri}?busy_timeout=200")).not_to be_nil
19
+ end
20
+
21
+ it 'raises an error when passed an invalid value' do
22
+ expect { DataObjects::Connection.new("#{CONFIG.uri}?busy_timeout=stuff") }
23
+ .to raise_error(ArgumentError)
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,7 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
2
+ require 'data_objects/spec/shared/encoding_spec'
3
+
4
+ describe DataObjects::Sqlite3::Connection do
5
+ it_behaves_like 'returning correctly encoded strings for the default database encoding'
6
+ it_behaves_like 'returning correctly encoded strings for the default internal encoding'
7
+ end
@@ -0,0 +1,7 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
2
+ require 'data_objects/spec/shared/error/sql_error_spec'
3
+
4
+ describe 'DataObjects::Sqlite3 raising SQLError' do
5
+ # This fails for now, need to think of a query that also exposes the issue on sqlite :S
6
+ # it_behaves_like 'raising a SQLError'
7
+ end
@@ -0,0 +1,6 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
2
+ require 'data_objects/spec/shared/reader_spec'
3
+
4
+ describe DataObjects::Sqlite3::Reader do
5
+ it_behaves_like 'a Reader'
6
+ end
@@ -0,0 +1,17 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
2
+ require 'data_objects/spec/shared/result_spec'
3
+
4
+ # splitting the descibe into two separate declaration avoids
5
+ # concurrent execution of the "it_behaves_like ....." calls
6
+ # which would lock the database
7
+
8
+ # TODO
9
+ # the locked database created a deadlock which is worth exploring since
10
+ # such situation could appear in the wild too
11
+ describe DataObjects::Sqlite3::Result do
12
+ it_behaves_like 'a Result'
13
+ end
14
+
15
+ describe DataObjects::Sqlite3::Result do
16
+ it_behaves_like 'a Result which returns inserted key with sequences'
17
+ end
@@ -0,0 +1,138 @@
1
+ $TESTING = true
2
+
3
+ require 'rubygems'
4
+ require 'rspec'
5
+ require 'date'
6
+ require 'ostruct'
7
+ require 'fileutils'
8
+ require 'win32console' if RUBY_PLATFORM =~ /mingw|mswin/
9
+
10
+ driver_lib = File.expand_path('../lib', __dir__)
11
+ $LOAD_PATH.unshift(driver_lib) unless $LOAD_PATH.include?(driver_lib)
12
+
13
+ # Prepend data_objects/do_jdbc in the repository to the load path.
14
+ # DO NOT USE installed gems, except when running the specs from gem.
15
+ repo_root = File.expand_path('../..', __dir__)
16
+ lib_path = "#{repo_root}/data_objects/lib"
17
+ $LOAD_PATH.unshift(lib_path) if File.directory?(lib_path) && !$LOAD_PATH.include?(lib_path)
18
+
19
+ require 'data_objects'
20
+ require 'data_objects/spec/setup'
21
+ require 'data_objects/spec/lib/pending_helpers'
22
+ require 'do_sqlite3'
23
+
24
+ CONFIG = OpenStruct.new
25
+ CONFIG.scheme = 'sqlite3'
26
+ CONFIG.database = ENV['DO_SQLITE3_DATABASE'] || ':memory:'
27
+ CONFIG.uri = ENV['DO_SQLITE3_SPEC_URI'] || "#{CONFIG.scheme}:#{CONFIG.database}"
28
+ CONFIG.driver = 'sqlite3'
29
+
30
+ module DataObjectsSpecHelpers
31
+ def setup_test_environment
32
+ conn = DataObjects::Connection.new(CONFIG.uri)
33
+
34
+ conn.create_command(<<-EOF).execute_non_query
35
+ DROP TABLE IF EXISTS "invoices"
36
+ EOF
37
+
38
+ conn.create_command(<<-EOF).execute_non_query
39
+ DROP TABLE IF EXISTS "users"
40
+ EOF
41
+
42
+ conn.create_command(<<-EOF).execute_non_query
43
+ DROP TABLE IF EXISTS "widgets"
44
+ EOF
45
+
46
+ conn.create_command(<<-EOF).execute_non_query
47
+ CREATE TABLE "users" (
48
+ "id" SERIAL,
49
+ "name" VARCHAR(200) default 'Billy' NULL,
50
+ "fired_at" timestamp,
51
+ PRIMARY KEY ("id")
52
+ );
53
+ EOF
54
+
55
+ conn.create_command(<<-EOF).execute_non_query
56
+ CREATE TABLE "invoices" (
57
+ "invoice_number" varchar(50) NOT NULL,
58
+ PRIMARY KEY ("invoice_number")
59
+ );
60
+ EOF
61
+
62
+ local_offset = Rational(Time.local(2008, 2, 14).utc_offset, 86_400)
63
+ t = DateTime.civil(2008, 2, 14, 0o0, 31, 12, local_offset)
64
+ conn.create_command(<<-EOF).execute_non_query
65
+ CREATE TABLE "widgets" (
66
+ "id" INTEGER PRIMARY KEY AUTOINCREMENT,
67
+ "code" char(8) default 'A14' NULL,
68
+ "name" varchar(200) default 'Super Widget' NULL,
69
+ "shelf_location" text NULL,
70
+ "description" text NULL,
71
+ "image_data" blob NULL,
72
+ "ad_description" text NULL,
73
+ "ad_image" blob NULL,
74
+ "whitepaper_text" text NULL,
75
+ "cad_drawing" blob,
76
+ "flags" boolean default 'f',
77
+ "number_in_stock" smallint default 500,
78
+ "number_sold" integer default 0,
79
+ "super_number" bigint default 9223372036854775807,
80
+ "weight" float default 1.23,
81
+ "cost1" double precision default 10.23,
82
+ "cost2" decimal(8,2) default 50.23,
83
+ "release_date" date default '2008-02-14',
84
+ "release_datetime" timestamp default '#{t}',
85
+ "release_timestamp" timestamp with time zone default '2008-02-14 00:31:31'
86
+ );
87
+ EOF
88
+
89
+ 1.upto(16) do |n|
90
+ conn.create_command(<<-EOF).execute_non_query
91
+ insert into widgets(code, name, shelf_location, description, image_data, ad_description, ad_image, whitepaper_text, cad_drawing, super_number, weight) VALUES ('W#{n.to_s.rjust(7, '0')}', 'Widget #{n}', 'A14', 'This is a description', 'IMAGE DATA', 'Buy this product now!', 'AD IMAGE DATA', 'String', X'434144200120002044524157494e47', 1234, 13.4);
92
+ EOF
93
+ end
94
+
95
+ conn.create_command(<<-EOF).execute_non_query
96
+ update widgets set flags = 't' where id = 2
97
+ EOF
98
+
99
+ conn.create_command(<<-EOF).execute_non_query
100
+ update widgets set ad_description = NULL where id = 3
101
+ EOF
102
+
103
+ conn.create_command(<<-EOF).execute_non_query
104
+ update widgets set flags = NULL where id = 4
105
+ EOF
106
+
107
+ conn.create_command(<<-EOF).execute_non_query
108
+ update widgets set cost1 = NULL where id = 5
109
+ EOF
110
+
111
+ conn.create_command(<<-EOF).execute_non_query
112
+ update widgets set cost2 = NULL where id = 6
113
+ EOF
114
+
115
+ conn.create_command(<<-EOF).execute_non_query
116
+ update widgets set release_date = NULL where id = 7
117
+ EOF
118
+
119
+ conn.create_command(<<-EOF).execute_non_query
120
+ update widgets set release_datetime = NULL where id = 8
121
+ EOF
122
+
123
+ conn.create_command(<<-EOF).execute_non_query
124
+ update widgets set release_timestamp = NULL where id = 9
125
+ EOF
126
+
127
+ conn.create_command(<<-EOF).execute_non_query
128
+ update widgets set release_datetime = '2008-07-14 00:31:12' where id = 10
129
+ EOF
130
+
131
+ conn.close
132
+ end
133
+ end
134
+
135
+ RSpec.configure do |config|
136
+ config.include(DataObjectsSpecHelpers)
137
+ config.include(DataObjects::Spec::PendingHelpers)
138
+ end
@@ -0,0 +1,6 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
2
+ require 'data_objects/spec/shared/typecast/array_spec'
3
+
4
+ describe 'DataObjects::Sqlite3 with Array' do
5
+ it_behaves_like 'supporting Array'
6
+ end
@@ -0,0 +1,9 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
2
+ require 'data_objects/spec/shared/typecast/bigdecimal_spec'
3
+
4
+ # Sqlite3 doesn't support decimals natively, so autocasting is not available:
5
+ # http://www.sqlite.org/datatype3.html
6
+
7
+ describe 'DataObjects::Sqlite3 with BigDecimal' do
8
+ it_behaves_like 'supporting BigDecimal'
9
+ end
@@ -0,0 +1,9 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
2
+ require 'data_objects/spec/shared/typecast/boolean_spec'
3
+
4
+ # Sqlite3 doesn't support booleans natively, so autocasting is not available:
5
+ # http://www.sqlite.org/datatype3.html
6
+
7
+ describe 'DataObjects::Sqlite3 with Boolean' do
8
+ it_behaves_like 'supporting Boolean'
9
+ end
@@ -0,0 +1,6 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
2
+ require 'data_objects/spec/shared/typecast/byte_array_spec'
3
+
4
+ describe 'DataObjects::Sqlite3 with ByteArray' do
5
+ it_behaves_like 'supporting ByteArray'
6
+ end
@@ -0,0 +1,6 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
2
+ require 'data_objects/spec/shared/typecast/class_spec'
3
+
4
+ describe 'DataObjects::Sqlite3 with Class' do
5
+ it_behaves_like 'supporting Class'
6
+ end
@@ -0,0 +1,9 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
2
+ require 'data_objects/spec/shared/typecast/date_spec'
3
+
4
+ # Sqlite3 doesn't support dates natively, so autocasting is not available:
5
+ # http://www.sqlite.org/datatype3.html
6
+
7
+ describe 'DataObjects::Sqlite3 with Date' do
8
+ it_behaves_like 'supporting Date'
9
+ end
@@ -0,0 +1,9 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
2
+ require 'data_objects/spec/shared/typecast/datetime_spec'
3
+
4
+ # Sqlite3 doesn't support datetimes natively, so autocasting is not available:
5
+ # http://www.sqlite.org/datatype3.html
6
+
7
+ describe 'DataObjects::Sqlite3 with DateTime' do
8
+ it_behaves_like 'supporting DateTime'
9
+ end
@@ -0,0 +1,10 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
2
+ require 'data_objects/spec/shared/typecast/float_spec'
3
+
4
+ describe 'DataObjects::Sqlite3 with Float' do
5
+ it_behaves_like 'supporting Float'
6
+ end
7
+
8
+ describe 'DataObjects::Sqlite3 with Float' do
9
+ it_behaves_like 'supporting Float autocasting'
10
+ end
@@ -0,0 +1,6 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
2
+ require 'data_objects/spec/shared/typecast/integer_spec'
3
+
4
+ describe 'DataObjects::Sqlite3 with Integer' do
5
+ it_behaves_like 'supporting Integer'
6
+ end
@@ -0,0 +1,18 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
2
+ require 'data_objects/spec/shared/typecast/nil_spec'
3
+
4
+ # splitting the descibe into two separate declaration avoids
5
+ # concurrent execution of the "it_behaves_like ....." calls
6
+ # which would lock the database
7
+
8
+ describe 'DataObjects::Sqlite3 with Nil' do
9
+ it_behaves_like 'supporting Nil'
10
+ end
11
+
12
+ describe 'DataObjects::Sqlite3 with Nil' do
13
+ it_behaves_like 'supporting writing an Nil'
14
+ end
15
+
16
+ describe 'DataObjects::Sqlite3 with Nil' do
17
+ it_behaves_like 'supporting Nil autocasting'
18
+ end
@@ -0,0 +1,6 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
2
+ require 'data_objects/spec/shared/typecast/other_spec'
3
+
4
+ describe 'DataObjects::H2 with other (unknown) type' do
5
+ it_behaves_like 'supporting other (unknown) type'
6
+ end
@@ -0,0 +1,6 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
2
+ require 'data_objects/spec/shared/typecast/range_spec'
3
+
4
+ describe 'DataObjects::Sqlite3 with Range' do
5
+ it_behaves_like 'supporting Range'
6
+ end
@@ -0,0 +1,6 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
2
+ require 'data_objects/spec/shared/typecast/string_spec'
3
+
4
+ describe 'DataObjects::Sqlite3 with String' do
5
+ it_behaves_like 'supporting String'
6
+ end
@@ -0,0 +1,7 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
2
+ require 'data_objects/spec/shared/typecast/time_spec'
3
+
4
+ describe 'DataObjects::Sqlite3 with Time' do
5
+ it_behaves_like 'supporting Time'
6
+ it_behaves_like 'supporting sub second Time'
7
+ end
@@ -0,0 +1,23 @@
1
+ begin
2
+ gem 'rake-compiler', '~>1.2'
3
+ require 'rake/extensiontask'
4
+
5
+ def gemspec
6
+ @gemspec ||= Gem::Specification.load(File.expand_path('../do_sqlite3.gemspec', __dir__))
7
+ end
8
+
9
+ Rake::ExtensionTask.new('do_sqlite3', gemspec) do |ext|
10
+ sqlite3_lib = File.expand_path(File.join(File.dirname(__FILE__), '..', 'vendor', 'sqlite3'))
11
+
12
+ ext.lib_dir = "lib/#{gemspec.name}"
13
+
14
+ ext.cross_config_options << "--with-sqlite3-dir=#{sqlite3_lib}"
15
+ ext.cross_config_options << "--with-sqlite3-include=#{sqlite3_lib}/include"
16
+ ext.cross_config_options << "--with-sqlite3-lib=#{sqlite3_lib}/lib"
17
+
18
+
19
+ # automatically add build options to avoid need of manual input
20
+ end
21
+ rescue LoadError
22
+ warn 'To compile, install rake-compiler (gem install rake-compiler)'
23
+ end
@@ -0,0 +1,14 @@
1
+ desc 'Builds all gems (native, binaries for JRuby and Windows)'
2
+ task :build_all do
3
+ `rake clean`
4
+ `rake build`
5
+ end
6
+
7
+ desc 'Release all gems (native, binaries for JRuby and Windows)'
8
+ task release_all: :build_all do
9
+ Dir.children("pkg").each do |gem_path|
10
+ command = "gem push pkg/#{gem_path}"
11
+ puts "Executing #{command.inspect}:"
12
+ sh command
13
+ end
14
+ end
@@ -0,0 +1,16 @@
1
+ begin
2
+ gem 'rake-compiler', '~>1.2'
3
+ require 'rake/clean'
4
+ require 'rake/extensioncompiler'
5
+
6
+ # required folder structure for --with-sqlite3-dir (include + lib)
7
+ directory 'vendor/sqlite3/lib'
8
+ directory 'vendor/sqlite3/include'
9
+
10
+ # clobber vendored packages
11
+ CLOBBER.include('vendor')
12
+
13
+ # vendor:sqlite3
14
+ task 'vendor:sqlite3' => %w[vendor/sqlite3/lib/sqlite3.lib vendor/sqlite3/include/sqlite3.h]
15
+ rescue LoadError
16
+ end
data/tasks/spec.rake ADDED
@@ -0,0 +1,10 @@
1
+ require 'rspec/core/rake_task'
2
+
3
+ RSpec::Core::RakeTask.new(spec: %i(clean compile)) do |spec|
4
+ spec.pattern = './spec/**/*_spec.rb'
5
+
6
+ require 'simplecov'
7
+ SimpleCov.start do
8
+ minimum_coverage 100
9
+ end
10
+ end
metadata ADDED
@@ -0,0 +1,100 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sbf-do_sqlite3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.10.17
5
+ platform: ruby
6
+ authors:
7
+ - Dirkjan Bussink
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-10-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: sbf-data_objects
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 0.10.17
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 0.10.17
27
+ description: Implements the DataObjects API for Sqlite3
28
+ email: d.bussink@gmail.com
29
+ executables: []
30
+ extensions:
31
+ - ext/do_sqlite3/extconf.rb
32
+ extra_rdoc_files:
33
+ - ChangeLog.markdown
34
+ - LICENSE
35
+ - README.markdown
36
+ files:
37
+ - ChangeLog.markdown
38
+ - LICENSE
39
+ - README.markdown
40
+ - Rakefile
41
+ - ext/do_sqlite3/compat.h
42
+ - ext/do_sqlite3/do_common.c
43
+ - ext/do_sqlite3/do_common.h
44
+ - ext/do_sqlite3/do_sqlite3.c
45
+ - ext/do_sqlite3/do_sqlite3.h
46
+ - ext/do_sqlite3/do_sqlite3_extension.c
47
+ - ext/do_sqlite3/error.h
48
+ - ext/do_sqlite3/extconf.rb
49
+ - lib/do_sqlite3.rb
50
+ - lib/do_sqlite3/transaction.rb
51
+ - lib/do_sqlite3/version.rb
52
+ - spec/command_spec.rb
53
+ - spec/connection_spec.rb
54
+ - spec/encoding_spec.rb
55
+ - spec/error/sql_error_spec.rb
56
+ - spec/reader_spec.rb
57
+ - spec/result_spec.rb
58
+ - spec/spec_helper.rb
59
+ - spec/typecast/array_spec.rb
60
+ - spec/typecast/bigdecimal_spec.rb
61
+ - spec/typecast/boolean_spec.rb
62
+ - spec/typecast/byte_array_spec.rb
63
+ - spec/typecast/class_spec.rb
64
+ - spec/typecast/date_spec.rb
65
+ - spec/typecast/datetime_spec.rb
66
+ - spec/typecast/float_spec.rb
67
+ - spec/typecast/integer_spec.rb
68
+ - spec/typecast/nil_spec.rb
69
+ - spec/typecast/other_spec.rb
70
+ - spec/typecast/range_spec.rb
71
+ - spec/typecast/string_spec.rb
72
+ - spec/typecast/time_spec.rb
73
+ - tasks/compile.rake
74
+ - tasks/release.rake
75
+ - tasks/retrieve.rake
76
+ - tasks/spec.rake
77
+ homepage: https://github.com/firespring/datamapper-do/do_do_sqlite3
78
+ licenses:
79
+ - Nonstandard
80
+ metadata: {}
81
+ post_install_message:
82
+ rdoc_options: []
83
+ require_paths:
84
+ - lib
85
+ required_ruby_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 2.7.8
90
+ required_rubygems_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ requirements: []
96
+ rubygems_version: 3.4.10
97
+ signing_key:
98
+ specification_version: 4
99
+ summary: DataObjects Sqlite3 Driver
100
+ test_files: []