Repository: MichaelKim0407/flake8-use-fstring (language: python)

Issue:
Some maintenance items: python 3.6/7 support, python 3.12 tests, `setup.py` and `pyproject.toml` updates
**Before you request a new feature, please confirm:**
[x] I have read through README and understand how the plugin works currently.
[x] I understand that this project is not actively adding new features, and there are no promises if/when my request will be implemented.
[x] (Optional) I am interested in working to add this feature through a PR.

**What would you like to see added to this plugin?**
I noticed there isn't a wheel on pypi. Wheels are quicker to install since recent versions of `pip` will build a wheel from the sdist and install the wheel if there isn't one on pypi.

When I was building the project using `python -m build` I noticed the project wouldn't be installable since it imports itself in the `setup.py` before being installed. So updated the `setup.py` to get the version from the file and not import flake8_use_fstring (somewhat related to #30, very similar error).

https://packaging.python.org/en/latest/guides/single-sourcing-package-version/

Also added Python 3.12 tests and dropped the tests for 3.6 and 3.7 since they are end of life python versions.

**What is your rationale/ use case for this feature?**
General maintenance.

**What alternative solutions have you considered? Why do you prefer the solution you proposed?**
It would be great to have a wheel and ensure the project keeps being installable in the future since virtualenvs in [python 3.12 no longer include setuptools by default](https://docs.python.org/3.12/whatsnew/3.12.html#ensurepip).

**Additional relevant information:**



Discussion / hints:

Fix patch:
diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml
index 40595e4..755912b 100644
--- a/.github/workflows/python-publish.yml
+++ b/.github/workflows/python-publish.yml
@@ -21,11 +21,11 @@ jobs:
       - name: Install dependencies
         run: |
           python -m pip install --upgrade pip
-          pip install setuptools twine
+          python -m pip install setuptools wheel twine
       - name: Build and publish
         env:
           TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
           TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
         run: |
-          python setup.py sdist
+          python setup.py sdist bdist_wheel
           twine upload dist/*
diff --git a/setup.py b/setup.py
index 9ebc5d6..a772e62 100644
--- a/setup.py
+++ b/setup.py
@@ -8,7 +8,8 @@
     'pytest-cov>=2',
 
     'flake8-builtins',
-    'flake8-commas',
+    # Cannot install on python 3.12, project is archived
+    'flake8-commas ; python_version < "3.12"',
     'flake8-fixme',
     'flake8-print',
     'flake8-quotes',
@@ -64,12 +65,12 @@
 
         'Programming Language :: Python',
         'Programming Language :: Python :: 3',
-        'Programming Language :: Python :: 3.6',
         'Programming Language :: Python :: 3.7',
         'Programming Language :: Python :: 3.8',
         'Programming Language :: Python :: 3.9',
         'Programming Language :: Python :: 3.10',
         'Programming Language :: Python :: 3.11',
+        'Programming Language :: Python :: 3.12',
 
         'Topic :: Software Development :: Libraries :: Python Modules',
         'Topic :: Software Development :: Quality Assurance',


Test patch:
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 8315641..5477864 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -10,12 +10,12 @@ jobs:
     strategy:
       matrix:
         python-version:
-          - '3.6'
           - '3.7'
           - '3.8'
           - '3.9'
           - '3.10'
           - '3.11'
+          - '3.12'
 
     steps:
       - uses: actions/checkout@v2
@@ -25,8 +25,8 @@ jobs:
           python-version: ${{ matrix.python-version }}
       - name: Install dependencies
         run: |
-          python -m pip install --upgrade pip
-          pip install setuptools
+          # For 3.12, setuptools doesn't come pre-installed
+          python -m pip install --upgrade pip setuptools
           pip install -e .[ci]
       - name: Lint with flake8
         run: |