Update installation instructions and bump Python requirement to 3.13; remove Poetry and nox; update pre-commit hooks.
This commit is contained in:
56
.gitignore
vendored
56
.gitignore
vendored
@ -1,6 +1,6 @@
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*.py[codz]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
@ -46,7 +46,7 @@ htmlcov/
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
*.py,cover
|
||||
*.py.cover
|
||||
.hypothesis/
|
||||
.pytest_cache/
|
||||
cover/
|
||||
@ -85,38 +85,45 @@ ipython_config.py
|
||||
# pyenv
|
||||
# For a library or package, you might want to ignore these files since the code is
|
||||
# intended to run in multiple environments; otherwise, check them in:
|
||||
.python-version
|
||||
# .python-version
|
||||
|
||||
# pipenv
|
||||
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||
# install all needed dependencies.
|
||||
Pipfile.lock
|
||||
#Pipfile.lock
|
||||
|
||||
# UV
|
||||
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
|
||||
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||
# commonly ignored for libraries.
|
||||
uv.lock
|
||||
#uv.lock
|
||||
|
||||
# poetry
|
||||
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
||||
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||
# commonly ignored for libraries.
|
||||
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
||||
poetry.lock
|
||||
#poetry.lock
|
||||
#poetry.toml
|
||||
|
||||
# pdm
|
||||
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
||||
# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
|
||||
# https://pdm-project.org/en/latest/usage/project/#working-with-version-control
|
||||
#pdm.lock
|
||||
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
||||
# in version control.
|
||||
# https://pdm.fming.dev/latest/usage/project/#working-with-version-control
|
||||
.pdm.toml
|
||||
#pdm.toml
|
||||
.pdm-python
|
||||
.pdm-build/
|
||||
|
||||
# pixi
|
||||
# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
|
||||
#pixi.lock
|
||||
# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
|
||||
# in the .venv directory. It is recommended not to include this directory in version control.
|
||||
.pixi
|
||||
|
||||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
||||
__pypackages__/
|
||||
|
||||
@ -129,6 +136,7 @@ celerybeat.pid
|
||||
|
||||
# Environments
|
||||
.env
|
||||
.envrc
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
@ -167,9 +175,37 @@ cython_debug/
|
||||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||
#.idea/
|
||||
|
||||
# Abstra
|
||||
# Abstra is an AI-powered process automation framework.
|
||||
# Ignore directories containing user credentials, local state, and settings.
|
||||
# Learn more at https://abstra.io/docs
|
||||
.abstra/
|
||||
|
||||
# Visual Studio Code
|
||||
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
|
||||
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
|
||||
# and can be added to the global gitignore or merged into this file. However, if you prefer,
|
||||
# you could uncomment the following to ignore the entire vscode folder
|
||||
# .vscode/
|
||||
|
||||
# Ruff stuff:
|
||||
.ruff_cache/
|
||||
|
||||
# PyPI configuration file
|
||||
.pypirc
|
||||
|
||||
# Cursor
|
||||
# Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
|
||||
# exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
|
||||
# refer to https://docs.cursor.com/context/ignore-files
|
||||
.cursorignore
|
||||
.cursorindexingignore
|
||||
|
||||
# Marimo
|
||||
marimo/_static/
|
||||
marimo/_lsp/
|
||||
__marimo__/
|
||||
|
||||
# SQLite
|
||||
*.sqlite
|
||||
*.sqlite.*
|
||||
|
@ -1,6 +1,6 @@
|
||||
repos:
|
||||
- repo: https://github.com/asottile/add-trailing-comma
|
||||
rev: v3.1.0
|
||||
rev: v3.2.0
|
||||
hooks:
|
||||
- id: add-trailing-comma
|
||||
|
||||
@ -23,13 +23,13 @@ repos:
|
||||
- id: trailing-whitespace
|
||||
|
||||
- repo: https://github.com/asottile/pyupgrade
|
||||
rev: v3.19.1
|
||||
rev: v3.20.0
|
||||
hooks:
|
||||
- id: pyupgrade
|
||||
args: ["--py310-plus"]
|
||||
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: v0.9.6
|
||||
rev: v0.12.1
|
||||
hooks:
|
||||
- id: ruff-format
|
||||
- id: ruff
|
||||
|
16
README.md
16
README.md
@ -31,30 +31,18 @@ using [Docker](https://hub.docker.com/r/thelovinator/discord-reminder-bot).
|
||||
### Install directly on your computer
|
||||
|
||||
- Install the latest version of needed software:
|
||||
- [Python](https://www.python.org/)
|
||||
- You should use the latest version.
|
||||
- You want to add Python to your PATH.
|
||||
- Windows: Find `App execution aliases` and disable python.exe and python3.exe
|
||||
- [Poetry](https://python-poetry.org/docs/master/#installation)
|
||||
- Windows: You have to add `%appdata%\Python\Scripts` to your PATH for Poetry to work.
|
||||
- `powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"`
|
||||
- Download project from GitHub with Git or download
|
||||
the [ZIP](https://github.com/TheLovinator1/discord-reminder-bot/archive/refs/heads/master.zip).
|
||||
- If you want to update the bot, you can run `git pull` in the project folder or download the ZIP again.
|
||||
- Rename .env.example to .env and open it in a text editor (e.g., VSCode, Notepad++, Notepad).
|
||||
- If you can't see the file extension:
|
||||
- Windows 10: Click the View Tab in File Explorer and click the box next to File name extensions.
|
||||
- Windows 11: Click View -> Show -> File name extensions.
|
||||
- Open a terminal in the repository folder.
|
||||
- Windows 10: <kbd>Shift</kbd> + <kbd>right-click</kbd> in the folder and select `Open PowerShell window here`
|
||||
- Windows 11: <kbd>Shift</kbd> + <kbd>right-click</kbd> in the folder and Show more options
|
||||
and `Open PowerShell window here`
|
||||
- Install requirements:
|
||||
- Type `poetry install` into the PowerShell window. Make sure you are
|
||||
in the repository folder with the [pyproject.toml](pyproject.toml) file.
|
||||
- You may have to restart your terminal if it can't find the `poetry` command. Also double check it is in
|
||||
your PATH.
|
||||
- Start the bot:
|
||||
- Type `poetry run bot` into the PowerShell window.
|
||||
- Type `uv run .\discord_reminder_bot\main.py` into the PowerShell window.
|
||||
- You can stop the bot with <kbd>Ctrl</kbd> + <kbd>c</kbd>.
|
||||
|
||||
Note: You will need to run `poetry install` again if poetry.lock has been modified.
|
||||
|
13
noxfile.py
13
noxfile.py
@ -1,13 +0,0 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import nox # type: ignore[import]
|
||||
|
||||
nox.options.default_venv_backend = "uv"
|
||||
|
||||
|
||||
@nox.session(python=["3.10", "3.11", "3.12", "3.13"])
|
||||
def tests(session: nox.Session) -> None:
|
||||
"""Run the test suite."""
|
||||
session.install(".")
|
||||
session.install("pytest")
|
||||
session.run("pytest")
|
@ -1,9 +1,9 @@
|
||||
[project]
|
||||
name = "discord-reminder-bot"
|
||||
version = "2.0.0"
|
||||
version = "3.0.0"
|
||||
description = "Discord bot that allows you to set date, cron and interval reminders."
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.10"
|
||||
requires-python = ">=3.13"
|
||||
dependencies = [
|
||||
# The Discord bot library uses discord.py
|
||||
"discord-py[speed]>=2.5.0", # https://github.com/Rapptz/discord.py
|
||||
@ -29,63 +29,7 @@ dependencies = [
|
||||
]
|
||||
|
||||
[dependency-groups]
|
||||
dev = ["pytest", "nox"]
|
||||
|
||||
[tool.poetry]
|
||||
name = "discord-reminder-bot"
|
||||
version = "2.0.0"
|
||||
description = "Discord bot that allows you to set date, cron and interval reminders."
|
||||
authors = ["Joakim Hellsén <tlovinator@gmail.com>"]
|
||||
license = "GPL-3.0-or-later"
|
||||
|
||||
[tool.poetry.scripts]
|
||||
bot = "discord_reminder_bot.main:start"
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
python = "^3.10"
|
||||
|
||||
# https://github.com/agronholm/apscheduler
|
||||
# https://github.com/sqlalchemy/sqlalchemy
|
||||
# For scheduling reminders, sqlalchemy is needed for storing reminders in a database
|
||||
sqlalchemy = { version = ">=2.0.37,<3.0.0" }
|
||||
apscheduler = { version = ">=3.11.0,<4.0.0" }
|
||||
|
||||
# https://github.com/scrapinghub/dateparser
|
||||
# For parsing dates and times in /remind commands
|
||||
dateparser = { version = ">=1.0.0" }
|
||||
|
||||
# https://github.com/Rapptz/discord.py
|
||||
# https://github.com/jackrosenthal/legacy-cgi
|
||||
# https://github.com/AbstractUmbra/audioop
|
||||
# The Discord bot library uses discord.py
|
||||
# legacy-cgi and audioop-lts are because Python 3.13 removed cgi module and audioop module
|
||||
discord-py = { version = ">=2.4.0,<3.0.0", extras = ["speed"] }
|
||||
legacy-cgi = { version = ">=2.6.2,<3.0.0", markers = "python_version >= '3.13'" }
|
||||
audioop-lts = { version = ">=0.2.1,<1.0.0", markers = "python_version >= '3.13'" }
|
||||
|
||||
# https://github.com/lovvskillz/python-discord-webhook
|
||||
# For sending webhook messages to Discord
|
||||
discord-webhook = { version = ">=1.3.1,<2.0.0" }
|
||||
|
||||
# https://github.com/theskumar/python-dotenv
|
||||
# For loading environment variables from a .env file
|
||||
python-dotenv = { version = ">=1.0.1,<2.0.0" }
|
||||
|
||||
# https://github.com/getsentry/sentry-python
|
||||
# For error tracking
|
||||
sentry-sdk = { version = ">=2.20.0,<3.0.0" }
|
||||
|
||||
# https://github.com/Delgan/loguru
|
||||
# For logging
|
||||
loguru = { version = ">=0.7.3,<1.0.0" }
|
||||
|
||||
[tool.poetry.dev-dependencies]
|
||||
pytest = "*"
|
||||
nox = "*"
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core>=1.0.0"]
|
||||
build-backend = "poetry.core.masonry.api"
|
||||
dev = ["pytest"]
|
||||
|
||||
[tool.ruff]
|
||||
preview = true
|
||||
|
@ -1,7 +1,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import zoneinfo
|
||||
from datetime import datetime, timezone
|
||||
from datetime import UTC, datetime
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
import pytest
|
||||
@ -25,7 +25,7 @@ def dummy_job() -> None:
|
||||
def test_calculate() -> None:
|
||||
"""Test the calculate function with various job inputs."""
|
||||
scheduler = BackgroundScheduler()
|
||||
scheduler.timezone = timezone.utc
|
||||
scheduler.timezone = UTC
|
||||
scheduler.start()
|
||||
|
||||
# Create a job with a DateTrigger
|
||||
|
Reference in New Issue
Block a user