Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
*.pyc
**/*.pyc
Dockerfile
*venv*
7 changes: 1 addition & 6 deletions .github/workflows/test-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,16 +60,11 @@ jobs:
run: |
python -m pip install poetry==2.1.2
python -m pip install setuptools==80.1.0
poetry install --no-root --without=docs --with=dev
poetry install --without=docs --with=dev

- name: Run flake8
run: poetry run flake8 .

- name: Build plugins
run: |
python3 setup.py egg_info
poetry run pip install .

- name: Run unit tests
run: |
poetry run pytest --cov-report term-missing --cov mfr tests
Expand Down
3 changes: 1 addition & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,7 @@ COPY ./ /code/
ARG GIT_COMMIT=
ENV GIT_COMMIT=${GIT_COMMIT}

RUN python3 setup.py egg_info
RUN python3 -m pip install .
RUN poetry install --without=docs

EXPOSE 7778

Expand Down
18 changes: 16 additions & 2 deletions mfr/core/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,19 @@ def make_provider(name, request, url, action=None):
}
)

def fix_name(name: str):
name = name.removeprefix('.').replace('+', 'p')
if name == 'lasso[89]':
return 'lasso'
elif name == 'php[345]':
return 'php'
elif name == 'css.in':
return 'css'
elif name == 'js.in':
return 'js'
elif name == 'xul.in':
return 'xul'
return name

def make_exporter(name, source_file_path, output_file_path, file_format, metadata):
"""Returns an instance of :class:`mfr.core.extension.BaseExporter`
Expand All @@ -46,7 +59,8 @@ def make_exporter(name, source_file_path, output_file_path, file_format, metadat

:rtype: :class:`mfr.core.extension.BaseExporter`
"""
normalized_name = (name and name.lower()) or 'none'
normalized_name = fix_name(name and name.lower()) or 'none'

try:
return driver.DriverManager(
namespace='mfr.exporters',
Expand Down Expand Up @@ -80,7 +94,7 @@ def make_renderer(name, metadata, file_path, url, assets_url, export_url):

:rtype: :class:`mfr.core.extension.BaseRenderer`
"""
normalized_name = (name and name.lower()) or 'none'
normalized_name = fix_name(name and name.lower()) or 'none'
try:
return driver.DriverManager(
namespace='mfr.renderers',
Expand Down
4 changes: 2 additions & 2 deletions mfr/providers/osf/provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

import furl
import aiohttp
from aiohttp import ClientSession

from waterbutler.core import streams

Expand Down Expand Up @@ -206,5 +207,4 @@ async def _make_request(self, method, url, *args, **kwargs):
if self.authorization:
kwargs.setdefault('headers', {})['Authorization'] = 'Bearer ' + self.token

async with aiohttp.request(method, url, *args, **kwargs) as response:
return response
return await ClientSession()._request(method, url, *args, **kwargs)
770 changes: 770 additions & 0 deletions pyproject.toml

Large diffs are not rendered by default.

811 changes: 0 additions & 811 deletions setup.py

This file was deleted.

38 changes: 29 additions & 9 deletions tests/core/test_utils.py
Original file line number Diff line number Diff line change
@@ -1,37 +1,57 @@
import pytest
from importlib.metadata import entry_points

from skimage._shared.testing import parametrize

from mfr.core import utils as mfr_utils
from mfr.core.utils import fix_name


class TestGetRendererName:

def test_get_renderer_name_explicit_assertions(self):
assert mfr_utils.get_renderer_name('.jpg') == 'ImageRenderer'
assert mfr_utils.get_renderer_name('.txt') == 'CodePygmentsRenderer'
assert mfr_utils.get_renderer_name('.xlsx') == 'TabularRenderer'
assert mfr_utils.get_renderer_name('.odt') == 'UnoconvRenderer'
assert mfr_utils.get_renderer_name('.pdf') == 'PdfRenderer'
assert mfr_utils.get_renderer_name('jpg') == 'ImageRenderer'
assert mfr_utils.get_renderer_name('txt') == 'CodePygmentsRenderer'
assert mfr_utils.get_renderer_name('xlsx') == 'TabularRenderer'
assert mfr_utils.get_renderer_name('odt') == 'UnoconvRenderer'
assert mfr_utils.get_renderer_name('pdf') == 'PdfRenderer'

def test_get_renderer_name(self):
for ep in entry_points().select(group='mfr.renderers'):
expected = ep.value.split(":")[1].split('.')[0]
assert mfr_utils.get_renderer_name(ep.name) == expected

def test_get_renderer_name_no_entry_point(self):
assert mfr_utils.get_renderer_name('jpg') == '' # extensions must begin with a period
assert mfr_utils.get_renderer_name('.jpg') == '' # extensions must begin with a period


class TestGetExporterName:

def test_get_exporter_name_explicit_assertions(self):
assert mfr_utils.get_exporter_name('.jpg') == 'ImageExporter'
assert mfr_utils.get_exporter_name('.odt') == 'UnoconvExporter'
assert mfr_utils.get_exporter_name('jpg') == 'ImageExporter'
assert mfr_utils.get_exporter_name('odt') == 'UnoconvExporter'

def test_get_exporter_name(self):
for ep in entry_points().select(group='mfr.exporters'):
expected = ep.value.split(":")[1].split('.')[0]
assert mfr_utils.get_exporter_name(ep.name) == expected

def test_get_exporter_name_no_entry_point(self):
assert mfr_utils.get_exporter_name('jpg') == '' # extensions must begin with a period
assert mfr_utils.get_exporter_name('.jpg') == '' # extensions must begin with a period

@parametrize(
"inp, out",
[
["jpg", "jpg"],
["c++", "cpp"],
["h++", "hpp"],
["php[345]", "php"],
["lasso[89]", "lasso"],
["css.in", "css"],
["js.in", "js"],
["xul.in", "xul"],
],
)
def test_fix_name(inp, out):
assert fix_name(inp) == out
assert fix_name(f'.{inp}') == out
4 changes: 3 additions & 1 deletion tests/documentation/test_entrypoints.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import pytest
from importlib.metadata import entry_points

from mfr.core.utils import fix_name


class TestEntryPoints:

Expand All @@ -11,7 +13,7 @@ def test_entry_points(self):
parent_dir = os.pardir
readme_path = os.path.join(os.path.dirname(parent_dir), 'supportedextensions.md')
with open(readme_path) as file:
readme_ext = [line.strip()[2:] for line in file if '*' in line]
readme_ext = [fix_name(line.strip()[2:]) for line in file if '*' in line]
for ep in entry_points().select(group='mfr.renderers'):
if ep.name != 'none':
assert ep.name in readme_ext