Repository: osohq/oso (language: python)

Issue:
Not installable on Python 3.12
Since oso has non-abi3 wheels (and no sdist) for only up to Python 3.11, trying to install it on Python 3.12 fails with a:

```
ERROR: Could not find a version that satisfies the requirement oso (from versions: none)
ERROR: No matching distribution found for oso
```

I could paste an extremely long `-vv` output, but it's just a long chain of:

```
Skipping link: none of the wheel's tags (pp39-pypy39_pp73-manylinux2014_x86_64, pp39-pypy39_pp73-manylinux_2_17_x86_64) are compatible (run pip debug --verbose to show compatible tags): https://files.pythonhosted.org/packages/7c/55/58be7fe2d37a8c486bd4ba4e1f456548811a9bbf5fa7885fd02fc08fc1dd/oso-0.27.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (from https://pypi.org/simple/oso/) (requires-python:>=3.7)
  Skipping link: none of the wheel's tags (pp39-pypy39_pp73-win_amd64) are compatible (run pip debug --verbose to show compatible tags): https://files.pythonhosted.org/packages/2a/2c/584ecc3cc8cbff9fdb449568ee610b44b707b9308ce90cd6579f04697d61/oso-0.27.0-pp39-pypy39_pp73-win_amd64.whl (from https://pypi.org/simple/oso/) (requires-python:>=3.7)
```

… for all possible versions.


Discussion / hints:
of 295 dependencies in our project, oso seems to be the only one not installable on py3.12

Fix patch:
diff --git a/.github/workflows/docs-diff.yml b/.github/workflows/docs-diff.yml
index 6a2ceb817f..ca5f3224a1 100644
--- a/.github/workflows/docs-diff.yml
+++ b/.github/workflows/docs-diff.yml
@@ -49,7 +49,7 @@ jobs:
         uses: ruby/setup-ruby@v1
         with:
           bundler-cache: true
-          ruby-version: 2.4
+          ruby-version: '2.7'
           working-directory: "languages/ruby"
         if: steps.cache.outputs.cache-hit != 'true'
       - name: Install yard
@@ -136,7 +136,7 @@ jobs:
         uses: ruby/setup-ruby@v1
         with:
           bundler-cache: true
-          ruby-version: 2.4
+          ruby-version: '2.7'
           working-directory: "languages/ruby"
         if: steps.cache.outputs.cache-hit != 'true'
       - name: Install yard
diff --git a/.github/workflows/docs-preview.yml b/.github/workflows/docs-preview.yml
index e485b8058f..43683c90e1 100644
--- a/.github/workflows/docs-preview.yml
+++ b/.github/workflows/docs-preview.yml
@@ -31,7 +31,7 @@ jobs:
         uses: ruby/setup-ruby@v1
         with:
           bundler-cache: true
-          ruby-version: 2.4
+          ruby-version: '2.7'
           working-directory: "languages/ruby"
       - name: Install yard
         run: gem install yard
diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml
index d452785c86..c7daf49381 100644
--- a/.github/workflows/publish-docs.yml
+++ b/.github/workflows/publish-docs.yml
@@ -49,7 +49,7 @@ jobs:
         uses: ruby/setup-ruby@v1
         with:
           bundler-cache: true
-          ruby-version: 2.4
+          ruby-version: '2.7'
           working-directory: "languages/ruby"
       - name: Install yard
         run: gem install yard
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index b52460e2d1..88a03040dc 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -280,7 +280,7 @@ jobs:
         uses: ruby/setup-ruby@v1
         with:
           bundler-cache: true
-          ruby-version: 2.4
+          ruby-version: '2.7'
           working-directory: "languages/ruby"
       - name: Set version env
         id: version
@@ -531,7 +531,7 @@ jobs:
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
+        python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
     steps:
       - uses: actions/checkout@v2
       - name: Set version env
@@ -560,7 +560,7 @@ jobs:
     runs-on: macos-11
     strategy:
       matrix:
-        python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
+        python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
     steps:
       - uses: actions/checkout@v2
       - name: Set version env
@@ -625,6 +625,13 @@ jobs:
           arch -arm64 ./venv311/bin/pip install oso==${{ steps.version.outputs.oso_version }} -f ../wheel
           arch -arm64 ./venv311/bin/python test.py
         working-directory: test
+      - name: "test python 3.12"
+        run: |
+          arch -arm64 /opt/homebrew/opt/python@3.12/bin/python3 -m venv venv312
+          arch -arm64 ./venv312/bin/pip install oso==${{ steps.version.outputs.oso_version }} -f ../wheel --no-deps --no-index
+          arch -arm64 ./venv312/bin/pip install oso==${{ steps.version.outputs.oso_version }} -f ../wheel
+          arch -arm64 ./venv312/bin/python test.py
+        working-directory: test
 
   validate_python_windows:
     name: Test python ${{ matrix.python-version }} on Windows
@@ -632,7 +639,7 @@ jobs:
     runs-on: windows-2019
     strategy:
       matrix:
-        python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
+        python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
     steps:
       - uses: actions/checkout@v2
       - name: Set version env
@@ -661,7 +668,7 @@ jobs:
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
+        python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
     steps:
       - uses: actions/checkout@v2
       - name: Set version env
@@ -682,7 +689,7 @@ jobs:
     strategy:
       matrix:
         os: [ubuntu-latest, macos-11, windows-2019]
-        ruby-version: [2.5, 2.6, 2.7, "3.0"]
+        ruby-version: ['2.5', '2.6', '2.7', '3.0', '3.1', '3.2']
     steps:
       - uses: actions/checkout@v2
       - name: Set version env
@@ -794,11 +801,11 @@ jobs:
         uses: actions/setup-python@v1
         with:
           python-version: "3.7"
-      - name: Use Ruby 2.4
+      - name: Use Ruby 2.7
         uses: ruby/setup-ruby@v1
         with:
           bundler-cache: true
-          ruby-version: "2.4"
+          ruby-version: '2.7'
           working-directory: "docs/examples/quickstart/ruby"
       - name: Use Node.js 12
         uses: actions/setup-node@v1
diff --git a/docs/spelling/allowed_words.txt b/docs/spelling/allowed_words.txt
index 57c3b97d38..1efec8c1f5 100644
--- a/docs/spelling/allowed_words.txt
+++ b/docs/spelling/allowed_words.txt
@@ -19,6 +19,7 @@ DFA
 Dexec
 EMR
 EOF
+EOL
 EndsWith
 FFI
 ForbiddenError
@@ -121,6 +122,7 @@ changelog
 classpath
 cmp
 codebase
+codebases
 constructable
 coroutine
 customizations
@@ -148,6 +150,7 @@ favoriteAnimal
 fieldName
 filesystem
 filterRelation
+footguns
 forbiddenerror
 fromFieldName
 fromTypeName
@@ -175,6 +178,7 @@ lastLogin
 latencies
 lhs
 lifecycle
+lifing
 loadFile
 loadStr
 localhost
diff --git a/languages/ruby/Gemfile.lock b/languages/ruby/Gemfile.lock
index 37b1126a17..0d8a6f9962 100644
--- a/languages/ruby/Gemfile.lock
+++ b/languages/ruby/Gemfile.lock
@@ -21,7 +21,7 @@ GEM
     arel (9.0.0)
     ast (2.4.2)
     backport (1.2.0)
-    benchmark (0.2.0)
+    benchmark (0.3.0)
     byebug (11.1.3)
     coderay (1.1.3)
     concurrent-ruby (1.1.9)
@@ -30,13 +30,21 @@ GEM
     ffi (1.15.4)
     i18n (1.8.11)
       concurrent-ruby (~> 1.0)
-    jaro_winkler (1.5.4)
-    maruku (0.7.3)
+    jaro_winkler (1.5.6)
+    kramdown (2.4.0)
+      rexml
+    kramdown-parser-gfm (1.1.0)
+      kramdown (~> 2.0)
     method_source (1.0.0)
-    mini_portile2 (2.4.0)
+    mini_portile2 (2.8.5)
     minitest (5.14.4)
-    nokogiri (1.10.10)
-      mini_portile2 (~> 2.4.0)
+    nokogiri (1.15.5)
+      mini_portile2 (~> 2.8.2)
+      racc (~> 1.4)
+    nokogiri (1.15.5-x86_64-darwin)
+      racc (~> 1.4)
+    nokogiri (1.15.5-x86_64-linux)
+      racc (~> 1.4)
     parallel (1.20.1)
     parser (2.7.2.0)
       ast (~> 2.4.1)
@@ -46,6 +54,7 @@ GEM
     pry-byebug (3.9.0)
       byebug (~> 11.0)
       pry (~> 0.13.0)
+    racc (1.7.3)
     rainbow (3.0.0)
     rake (12.3.3)
     regexp_parser (2.1.1)
@@ -77,28 +86,28 @@ GEM
     rubocop-ast (0.8.0)
       parser (>= 2.7.1.5)
     ruby-progressbar (1.11.0)
-    solargraph (0.39.17)
+    solargraph (0.40.1)
       backport (~> 1.1)
       benchmark
       bundler (>= 1.17.2)
       e2mmap
       jaro_winkler (~> 1.5)
-      maruku (~> 0.7, >= 0.7.3)
-      nokogiri (~> 1.9, >= 1.9.1)
+      kramdown (~> 2.3)
+      kramdown-parser-gfm (~> 1.1)
       parser (~> 2.3)
       reverse_markdown (>= 1.0.5, < 3)
-      rubocop (~> 0.52)
+      rubocop (>= 0.52)
       thor (~> 1.0)
       tilt (~> 2.0)
       yard (~> 0.9, >= 0.9.24)
     sqlite3 (1.4.2)
-    thor (1.1.0)
+    thor (1.3.0)
     thread_safe (0.3.6)
-    tilt (2.0.10)
+    tilt (2.3.0)
     tzinfo (1.2.9)
       thread_safe (~> 0.1)
     unicode-display_width (1.8.0)
-    yard (0.9.26)
+    yard (0.9.34)
 
 PLATFORMS
   ruby
@@ -112,7 +121,7 @@ DEPENDENCIES
   rake (~> 12.0)
   rspec (~> 3.0)
   rubocop (~> 0.89.1)
-  solargraph (~> 0.39.14)
+  solargraph (~> 0.40.0)
   sqlite3
   yard (~> 0.9.25)
 
diff --git a/languages/ruby/oso-oso.gemspec b/languages/ruby/oso-oso.gemspec
index 736bd96a2a..e532ad702d 100644
--- a/languages/ruby/oso-oso.gemspec
+++ b/languages/ruby/oso-oso.gemspec
@@ -8,7 +8,12 @@ Gem::Specification.new do |spec|
   spec.authors       = ['Oso Security, Inc.']
   spec.email         = ['support@osohq.com']
   spec.licenses      = ['Apache-2.0']
-  spec.summary       = "We have deprecated the legacy Oso open source library. We have plans for the next open source release and we’re looking forward to getting feedback from the community leading up to that point (please reach out to us in the Slack #help channel). In the meantime, if you’re happy using the Oso open source library now, nothing needs to change – i.e., we are not end-of-lifing (EOL) the library and we’ll continue to provide support and critical bug fixes. More context: [here](https://www.osohq.com/docs/oss/getting-started/deprecation.html)."
+  spec.summary       = 'We have deprecated the legacy Oso open source library. We have plans for the next open ' \
+                       "source release and we're looking forward to getting feedback from the community leading up " \
+                       'to that point (please reach out to us in the Slack #help channel). In the meantime, if ' \
+                       "you're happy using the Oso open source library now, nothing needs to change – i.e., we are " \
+                       "not end-of-lifing (EOL) the library and we'll continue to provide support and critical bug " \
+                       'fixes. More context: [here](https://www.osohq.com/docs/oss/getting-started/deprecation.html).'
   spec.homepage      = 'https://www.osohq.com/'
 
   spec.required_ruby_version = Gem::Requirement.new('>= 2.4.0')
@@ -36,7 +41,7 @@ Gem::Specification.new do |spec|
   spec.add_development_dependency 'rake', '~> 12.0'
   spec.add_development_dependency 'rspec', '~> 3.0'
   spec.add_development_dependency 'rubocop', '~> 0.89.1'
-  spec.add_development_dependency 'solargraph', '~> 0.39.14'
+  spec.add_development_dependency 'solargraph', '~> 0.40.0'
   spec.add_development_dependency 'sqlite3'
   spec.add_development_dependency 'yard', '~> 0.9.25'
 end


Test patch:
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 8098af16ab..be9adf3f10 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -57,7 +57,7 @@ jobs:
         uses: ruby/setup-ruby@v1
         with:
           bundler-cache: true
-          ruby-version: 2.4
+          ruby-version: '2.7'
           working-directory: "languages/ruby"
       - name: Lint Ruby code
         working-directory: "languages/ruby"
@@ -214,7 +214,7 @@ jobs:
         uses: ruby/setup-ruby@v1
         with:
           bundler-cache: true
-          ruby-version: 2.4
+          ruby-version: '2.7'
           working-directory: "languages/ruby"
       - name: Test ruby
         run: make ruby-test
@@ -350,7 +350,7 @@ jobs:
       - name: Install Ruby + gems
         uses: ruby/setup-ruby@v1
         with:
-          ruby-version: 2.4
+          ruby-version: '2.7'
           bundler-cache: true
       - name: Use Node.js 18
         uses: actions/setup-node@v3