Skip to content

Commit

Permalink
Merge pull request #18 from akx/ruffify
Browse files Browse the repository at this point in the history
Ruffify
  • Loading branch information
akx committed Apr 22, 2024
2 parents 27751db + c4fd404 commit 313ad82
Show file tree
Hide file tree
Showing 17 changed files with 168 additions and 214 deletions.
15 changes: 8 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,29 +8,30 @@ on:
- master
jobs:
Build:
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
strategy:
matrix:
include:
- python-version: '3.7'
- python-version: '3.10'
- python-version: '3.11'
- python-version: '3.12'
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '${{ matrix.python-version }}'
cache: pip
cache-dependency-path: pyproject.toml
- run: pip install -U tox tox-gh
- run: tox
Lint:
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: pip
cache-dependency-path: pyproject.toml
- uses: pre-commit/action@v3.0.0
- uses: pre-commit/action@v3.0.1
47 changes: 8 additions & 39 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,36 +1,17 @@
repos:
- repo: https://github.com/PyCQA/autoflake
rev: v1.7.7
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.4.1
hooks:
- id: autoflake
- id: ruff
args:
- --in-place
- --remove-duplicate-keys
- --remove-all-unused-imports
- repo: https://github.com/PyCQA/isort
rev: 5.10.1
hooks:
- id: isort
- repo: https://github.com/psf/black
rev: 22.10.0
hooks:
- id: black
language_version: python3
args:
- --skip-string-normalization
- --fix
- id: ruff-format
- repo: https://github.com/codespell-project/codespell
rev: v2.2.2
rev: v2.2.6
hooks:
- id: codespell
- repo: https://github.com/PyCQA/flake8
rev: 6.0.0
hooks:
- id: flake8
additional_dependencies: &flake8_deps
- flake8-bugbear
- flake8-simplify
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v0.991
rev: v1.9.0
hooks:
- id: mypy
args:
Expand All @@ -39,20 +20,8 @@ repos:
- django-stubs
- pytest
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
rev: v4.6.0
hooks:
- id: debug-statements
- id: end-of-file-fixer
- id: trailing-whitespace
- repo: https://github.com/asottile/pyupgrade
rev: v3.1.0
hooks:
- id: pyupgrade
args:
- --py37-plus
- --keep-runtime-typing
- repo: https://github.com/asottile/yesqa
rev: v1.4.0
hooks:
- id: yesqa
additional_dependencies: *flake8_deps
15 changes: 0 additions & 15 deletions .travis.yml

This file was deleted.

2 changes: 1 addition & 1 deletion django_managerie/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
__version__ = '0.5.1'
__version__ = "0.5.1"

from .managerie import Managerie # noqa
2 changes: 1 addition & 1 deletion django_managerie/blocklist.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
COMMAND_BLOCKLIST = {
'auth.changepassword', # This is unusable due to getpass()
"auth.changepassword", # This is unusable due to getpass()
}
14 changes: 7 additions & 7 deletions django_managerie/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,17 @@ class ManagementCommand:
def __init__(self, app_config, name):
self.app_config = app_config
self.name = name
self.title = self.name.replace('_', ' ').title()
self.title = self.name.replace("_", " ").title()

@property
def url(self):
return reverse(
'admin:managerie_command',
kwargs={'app_label': self.app_config.label, 'command': self.name},
"admin:managerie_command",
kwargs={"app_label": self.app_config.label, "command": self.name},
)

def get_command_class(self):
mname = f'{self.app_config.name}.management.commands.{self.name}'
mname = f"{self.app_config.name}.management.commands.{self.name}"
return import_module(mname).Command

def get_command_instance(self):
Expand All @@ -31,11 +31,11 @@ def get_command_instance(self):

@property
def full_title(self):
return f'{self.app_config.verbose_name}{self.title}'
return f"{self.app_config.verbose_name}{self.title}"

@property
def full_name(self):
return f'{self.app_config.label}.{self.name}'
return f"{self.app_config.label}.{self.name}"


@lru_cache(maxsize=None)
Expand All @@ -44,7 +44,7 @@ def get_commands():
apps_to_commands = defaultdict(OrderedDict)

for app_config in apps.get_app_configs():
path = os.path.join(app_config.path, 'management')
path = os.path.join(app_config.path, "management")
for command_name in find_commands(path):
apps_to_commands[app_config][command_name] = ManagementCommand(
app_config=app_config,
Expand Down
14 changes: 7 additions & 7 deletions django_managerie/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@

class ArgumentParserForm(forms.Form):
IGNORED_DESTS = {
'force_color',
'no_color',
'pythonpath',
'settings',
'traceback',
"force_color",
"no_color",
"pythonpath",
"settings",
"traceback",
}

def __init__(self, *, parser: argparse.ArgumentParser, **kwargs) -> None:
Expand All @@ -40,15 +40,15 @@ def _process_action(self, action: argparse.Action) -> None:
field_cls: Optional[Type[forms.Field]] = None
field_kwargs = dict(
initial=action.default,
label=action.dest.replace('_', ' ').title(),
label=action.dest.replace("_", " ").title(),
help_text=action.help,
required=action.required,
)
if isinstance(action, BOOLEAN_ACTIONS):
field_cls = forms.BooleanField
elif isinstance(action, argparse._StoreAction):
if action.type not in FIELD_CLASS_MAP:
warnings.warn(f'No specific field class for type {action.type!r}')
warnings.warn(f"No specific field class for type {action.type!r}")
field_cls = FIELD_CLASS_MAP.get(action.type, forms.Field)
if field_cls:
self.fields[action.dest] = field_cls(**field_kwargs)
Expand Down
41 changes: 20 additions & 21 deletions django_managerie/managerie.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,15 @@ def user_is_superuser(request: HttpRequest) -> bool:

class Managerie:
ignored_app_names = {
'django.core',
'django.contrib.staticfiles',
"django.core",
"django.contrib.staticfiles",
}

def __init__(self, admin_site: AdminSite) -> None:
self.admin_site = admin_site

def patch(self) -> None:
if hasattr(self.admin_site, 'patched_by_managerie'):
if hasattr(self.admin_site, "patched_by_managerie"):
return
old_get_app_list = self.admin_site.get_app_list
old_get_urls = self.admin_site.get_urls
Expand Down Expand Up @@ -74,7 +74,7 @@ def is_command_enabled(self, command: ManagementCommand) -> bool:
"""
if command.full_name in COMMAND_BLOCKLIST:
return False
if getattr(command.get_command_class(), 'disable_managerie', False):
if getattr(command.get_command_class(), "disable_managerie", False):
return False
return True

Expand Down Expand Up @@ -107,46 +107,45 @@ def _augment_app_list(
app_list: List[Dict],
):
all_commands: Dict[str, CommandMap] = {
app_config.label: commands
for (app_config, commands) in self.get_commands(request).items()
app_config.label: commands for (app_config, commands) in self.get_commands(request).items()
}
for app in app_list:
if all_commands.get(app['app_label']): # Has commands?
app.setdefault('models', []).append(self._make_app_command(app))
if all_commands.get(app["app_label"]): # Has commands?
app.setdefault("models", []).append(self._make_app_command(app))

def _make_app_command(self, app):
return {
'perms': {'change': True},
'admin_url': reverse(
'admin:managerie_list',
kwargs={'app_label': app['app_label']},
"perms": {"change": True},
"admin_url": reverse(
"admin:managerie_list",
kwargs={"app_label": app["app_label"]},
current_app=self.admin_site.name,
),
'name': 'Commands',
'object_name': '_ManagerieCommands_',
"name": "Commands",
"object_name": "_ManagerieCommands_",
}

def _get_urls(self) -> List[URLPattern]:
from django_managerie.views import ManagerieCommandView, ManagerieListView

return [
path(
'managerie/<app_label>/<command>/',
"managerie/<app_label>/<command>/",
ManagerieCommandView.as_view(managerie=self),
name='managerie_command',
name="managerie_command",
),
path(
'managerie/<app_label>/',
"managerie/<app_label>/",
ManagerieListView.as_view(managerie=self),
name='managerie_list',
name="managerie_list",
),
path(
'managerie/',
"managerie/",
ManagerieListView.as_view(managerie=self),
name='managerie_list_all',
name="managerie_list_all",
),
]

@property
def urls(self):
return (self._get_urls(), 'admin', self.admin_site.name)
return (self._get_urls(), "admin", self.admin_site.name)
Loading

0 comments on commit 313ad82

Please sign in to comment.