Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into nightly
Browse files Browse the repository at this point in the history
  • Loading branch information
Overhang.IO committed Dec 8, 2023
2 parents 4bd2081 + 540a7a9 commit a5b124e
Show file tree
Hide file tree
Showing 6 changed files with 89 additions and 30 deletions.
22 changes: 22 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Run tests

on:
pull_request:
branches: [master]

jobs:
tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Upgrade pip
run: python -m pip install --upgrade pip setuptools
- name: Install dependencies
run: |
pip install .[dev]
- name: Test lint, types, and format
run: make test
34 changes: 34 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
.DEFAULT_GOAL := help
.PHONY: docs
SRC_DIRS = ./tutorminio
BLACK_OPTS = --exclude templates ${SRC_DIRS}

# Warning: These checks are not necessarily run on every PR.
test: test-lint test-types test-format # Run some static checks.

test-format: ## Run code formatting tests
black --check --diff $(BLACK_OPTS)

test-lint: ## Run code linting tests
pylint --errors-only --enable=unused-import,unused-argument --ignore=templates --ignore=docs/_ext ${SRC_DIRS}

test-types: ## Run type checks.
mypy --exclude=templates --ignore-missing-imports --implicit-reexport --strict ${SRC_DIRS}

format: ## Format code automatically
black $(BLACK_OPTS)

isort: ## Sort imports. This target is not mandatory because the output may be incompatible with black formatting. Provided for convenience purposes.
isort --skip=templates ${SRC_DIRS}

changelog-entry: ## Create a new changelog entry.
scriv create

changelog: ## Collect changelog entries in the CHANGELOG.md file.
scriv collect

ESCAPE = 
help: ## Print this help
@grep -E '^([a-zA-Z_-]+:.*?## .*|######* .+)$$' Makefile \
| sed 's/######* \(.*\)/@ $(ESCAPE)[1;31m\1$(ESCAPE)[0m/g' | tr '@' '\n' \
| awk 'BEGIN {FS = ":.*?## "}; {printf "\033[33m%-30s\033[0m %s\n", $$1, $$2}'
1 change: 1 addition & 0 deletions changelog.d/20231004_141745_codewithemad.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- [Improvement] Added Typing to code, Makefile and test action to the repository and formatted code with Black and isort. (by @CodeWithEmad)
1 change: 1 addition & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
include_package_data=True,
python_requires=">=3.8",
install_requires=["tutor>=16.0.0,<17.0.0"],
extras_require={"dev": "tutor[dev]>=16.0.0,<17.0.0"},
entry_points={"tutor.plugin.v1": ["minio = tutorminio.plugin"]},
classifiers=[
"Development Status :: 5 - Production/Stable",
Expand Down
1 change: 0 additions & 1 deletion tutorminio/__about__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
__version__ = "16.0.1"

60 changes: 31 additions & 29 deletions tutorminio/plugin.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
from __future__ import annotations

import os
import typing as t
from glob import glob
from typing import Literal

import pkg_resources

from tutor import hooks as tutor_hooks
from tutor.__about__ import __version_suffix__

Expand All @@ -17,52 +16,55 @@

HERE = os.path.abspath(os.path.dirname(__file__))


tutor_hooks.Filters.CONFIG_DEFAULTS.add_items(
[
("MINIO_VERSION", __version__),
("MINIO_BUCKET_NAME", "openedx"),
("MINIO_FILE_UPLOAD_BUCKET_NAME", "openedxuploads"),
("MINIO_VIDEO_UPLOAD_BUCKET_NAME", "openedxvideos"),
("MINIO_HOST", "files.{{ LMS_HOST }}"),
("MINIO_CONSOLE_HOST", "minio.{{ LMS_HOST }}"),
config: dict[str, dict[str, t.Any]] = {
"defaults": {
"VERSION": __version__,
"BUCKET_NAME": "openedx",
"FILE_UPLOAD_BUCKET_NAME": "openedxuploads",
"VIDEO_UPLOAD_BUCKET_NAME": "openedxvideos",
"HOST": "files.{{ LMS_HOST }}",
"CONSOLE_HOST": "minio.{{ LMS_HOST }}",
# https://hub.docker.com/r/minio/minio/tags
# https://hub.docker.com/r/minio/mc/tags
# We must stick to these older releases because they are the last ones that support gateway mode to Azure:
# https://blog.min.io/deprecation-of-the-minio-gateway/
# https://min.io/docs/minio/linux/operations/install-deploy-manage/migrate-fs-gateway.html
(
"MINIO_DOCKER_IMAGE",
"docker.io/minio/minio:RELEASE.2022-03-26T06-49-28Z.hotfix.26ec6a857",
),
("MINIO_MC_DOCKER_IMAGE", "docker.io/minio/mc:RELEASE.2022-03-31T04-55-30Z"),
("MINIO_GATEWAY", None),
]
)
"DOCKER_IMAGE": "docker.io/minio/minio:RELEASE.2022-03-26T06-49-28Z.hotfix.26ec6a857",
"MC_DOCKER_IMAGE": "docker.io/minio/mc:RELEASE.2022-03-31T04-55-30Z",
"GATEWAY": None,
},
"unique": {
"AWS_SECRET_ACCESS_KEY": "{{ 24|random_string }}",
},
"overrides": {
"OPENEDX_AWS_ACCESS_KEY": "openedx",
"OPENEDX_AWS_SECRET_ACCESS_KEY": "{{ MINIO_AWS_SECRET_ACCESS_KEY }}",
},
}

# Add configuration entries
tutor_hooks.Filters.CONFIG_DEFAULTS.add_items(
[(f"MINIO_{key}", value) for key, value in config.get("defaults", {}).items()]
)
tutor_hooks.Filters.CONFIG_UNIQUE.add_items(
[
("MINIO_AWS_SECRET_ACCESS_KEY", "{{ 24|random_string }}"),
]
[(f"MINIO_{key}", value) for key, value in config.get("unique", {}).items()]
)
tutor_hooks.Filters.CONFIG_OVERRIDES.add_items(
[
("OPENEDX_AWS_ACCESS_KEY", "openedx"),
("OPENEDX_AWS_SECRET_ACCESS_KEY", "{{ MINIO_AWS_SECRET_ACCESS_KEY }}"),
]
list(config.get("overrides", {}).items())
)


@tutor_hooks.Filters.APP_PUBLIC_HOSTS.add()
def add_minio_hosts(
hosts: list[str], context_name: Literal["local", "dev"]
) -> list[str]:
hosts: list[str], context_name: t.Literal["local", "dev"]
) -> list[str]:
if context_name == "dev":
hosts.append("{{ MINIO_CONSOLE_HOST }}:9001")
else:
hosts.append("{{ MINIO_CONSOLE_HOST }}")

return hosts


# Add pre-init script as init task with high priority
with open(
os.path.join(HERE, "templates", "minio", "tasks", "minio", "init.sh"),
Expand Down

0 comments on commit a5b124e

Please sign in to comment.