mirror of
https://github.com/enpaul/kodak.git
synced 2024-11-23 15:07:13 +00:00
Rename project to imagemuck
This commit is contained in:
parent
6a7662ae0f
commit
d92b53a60c
2
.gitignore
vendored
2
.gitignore
vendored
@ -16,7 +16,7 @@ dist/
|
|||||||
|
|
||||||
docs/_build/
|
docs/_build/
|
||||||
docs/modules.rst
|
docs/modules.rst
|
||||||
docs/dehance*.rst
|
docs/imagemuck*.rst
|
||||||
|
|
||||||
.vscode/
|
.vscode/
|
||||||
.idea/
|
.idea/
|
||||||
|
@ -32,7 +32,7 @@ repos:
|
|||||||
name: reorder-python-imports
|
name: reorder-python-imports
|
||||||
entry: reorder-python-imports
|
entry: reorder-python-imports
|
||||||
args:
|
args:
|
||||||
- "--unclassifiable-application-module=dehance"
|
- "--unclassifiable-application-module=imagemuck"
|
||||||
language: system
|
language: system
|
||||||
types: [python]
|
types: [python]
|
||||||
|
|
||||||
|
4
Makefile
4
Makefile
@ -1,7 +1,7 @@
|
|||||||
# Dehance makefile
|
# ImageMuck makefile
|
||||||
|
|
||||||
# You can set these variables from the command line
|
# You can set these variables from the command line
|
||||||
PROJECT = dehance
|
PROJECT = imagemuck
|
||||||
|
|
||||||
.PHONY: help
|
.PHONY: help
|
||||||
# Put it first so that "make" without argument is like "make help"
|
# Put it first so that "make" without argument is like "make help"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# dehance
|
# imagemuck
|
||||||
|
|
||||||
HTTP server for handling image uploads and thumbnail generation.
|
HTTP server for handling image uploads and thumbnail generation.
|
||||||
|
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
from typing import Tuple
|
|
||||||
|
|
||||||
from dehance.resources._shared import DehanceResource
|
|
||||||
from dehance.resources._shared import ResponseBody
|
|
||||||
from dehance.resources._shared import ResponseHeaders
|
|
||||||
from dehance.resources.image import Image
|
|
||||||
from dehance.resources.image import ImageUpload
|
|
||||||
from dehance.resources.openapi import OpenAPI
|
|
||||||
from dehance.resources.thumbnail import ThumbnailResize
|
|
||||||
from dehance.resources.thumbnail import ThumbnailScale
|
|
||||||
|
|
||||||
|
|
||||||
RESOURCES: Tuple[DehanceResource, ...] = (
|
|
||||||
ImageUpload,
|
|
||||||
Image,
|
|
||||||
OpenAPI,
|
|
||||||
ThumbnailScale,
|
|
||||||
ThumbnailResize,
|
|
||||||
)
|
|
@ -12,7 +12,7 @@ from pathlib import Path
|
|||||||
|
|
||||||
BASE_DIR = Path(__file__).parent.resolve()
|
BASE_DIR = Path(__file__).parent.resolve()
|
||||||
ABOUT = {}
|
ABOUT = {}
|
||||||
with open(Path(BASE_DIR, "..", "dehance", "__about__.py")) as infile:
|
with open(Path(BASE_DIR, "..", "imagemuck", "__about__.py")) as infile:
|
||||||
exec(infile.read(), ABOUT)
|
exec(infile.read(), ABOUT)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
Dehance
|
ImageMuck
|
||||||
=========
|
=========
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
:caption: Contents:
|
:caption: Contents:
|
||||||
|
|
||||||
API Reference <dehance>
|
API Reference <imagemuck>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
"""Programatically accessible project metadata"""
|
"""Programatically accessible project metadata"""
|
||||||
|
|
||||||
|
|
||||||
__title__ = "dehance"
|
__title__ = "imagemuck"
|
||||||
__version__ = "0.1.0"
|
__version__ = "0.1.0"
|
||||||
__authors__ = ["Ethan Paul <24588726+enpaul@users.noreply.github.com>"]
|
__authors__ = ["Ethan Paul <24588726+enpaul@users.noreply.github.com>"]
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__summary__ = "HTTP server for uploading images and generating thumbnails"
|
__summary__ = "HTTP server for uploading images and generating thumbnails"
|
||||||
__url__ = "https://github.com/mocproject/dehance/"
|
__url__ = "https://github.com/mocproject/imagemuck/"
|
@ -1,12 +1,12 @@
|
|||||||
"""Development server stub entrypoint
|
"""Development server stub entrypoint
|
||||||
|
|
||||||
Flask comes with a built-in development server. This entrypoint allows ``dehance``
|
Flask comes with a built-in development server. This entrypoint allows ``imagemuck``
|
||||||
to be run directly to run the development server and expose some simple config options for ease of
|
to be run directly to run the development server and expose some simple config options for ease of
|
||||||
access. Run the below command to start the server:
|
access. Run the below command to start the server:
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
python -m dehance
|
python -m imagemuck
|
||||||
|
|
||||||
In addition to the helpful CLI flags, the Flask development server run by this module will also
|
In addition to the helpful CLI flags, the Flask development server run by this module will also
|
||||||
load any ``.env`` files in the current working directory when running the application.
|
load any ``.env`` files in the current working directory when running the application.
|
||||||
@ -17,7 +17,7 @@ load any ``.env`` files in the current working directory when running the applic
|
|||||||
import argparse
|
import argparse
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from dehance.application import APPLICATION
|
from imagemuck.application import APPLICATION
|
||||||
|
|
||||||
|
|
||||||
# pylint: disable=invalid-name
|
# pylint: disable=invalid-name
|
@ -1,11 +1,11 @@
|
|||||||
import flask
|
import flask
|
||||||
|
|
||||||
from dehance import __about__
|
from imagemuck import __about__
|
||||||
from dehance import configuration
|
from imagemuck import configuration
|
||||||
from dehance import constants
|
from imagemuck import constants
|
||||||
from dehance import database
|
from imagemuck import database
|
||||||
from dehance import exceptions
|
from imagemuck import exceptions
|
||||||
from dehance.resources import ResponseHeaders
|
from imagemuck.resources import ResponseHeaders
|
||||||
|
|
||||||
|
|
||||||
def make_the_tea() -> None:
|
def make_the_tea() -> None:
|
||||||
@ -23,7 +23,7 @@ def initialize_database() -> None:
|
|||||||
database.initialize(flask.current_app.appconfig)
|
database.initialize(flask.current_app.appconfig)
|
||||||
|
|
||||||
|
|
||||||
class DehanceRequest(flask.Request):
|
class ImageMuckRequest(flask.Request):
|
||||||
"""Extend the default Flask request object to add custom application state settings"""
|
"""Extend the default Flask request object to add custom application state settings"""
|
||||||
|
|
||||||
def make_response_headers(self) -> ResponseHeaders:
|
def make_response_headers(self) -> ResponseHeaders:
|
||||||
@ -40,14 +40,14 @@ class DehanceRequest(flask.Request):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class DehanceFlask(flask.Flask):
|
class ImageMuckFlask(flask.Flask):
|
||||||
"""Extend the default Flask object to add the custom application config
|
"""Extend the default Flask object to add the custom application config
|
||||||
|
|
||||||
There's probably an easier/more kosher way to do this, but ¯\\_(ツ)_/¯
|
There's probably an easier/more kosher way to do this, but ¯\\_(ツ)_/¯
|
||||||
"""
|
"""
|
||||||
|
|
||||||
request_class = DehanceRequest
|
request_class = ImageMuckRequest
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.appconfig: configuration.DehanceConfig = configuration.load()
|
self.appconfig: configuration.ImageMuckConfig = configuration.load()
|
@ -1,12 +1,12 @@
|
|||||||
import flask_restful
|
import flask_restful
|
||||||
|
|
||||||
from dehance import resources
|
from imagemuck import resources
|
||||||
from dehance._server import DehanceFlask
|
from imagemuck._server import ImageMuckFlask
|
||||||
from dehance._server import initialize_database
|
from imagemuck._server import initialize_database
|
||||||
from dehance._server import make_the_tea
|
from imagemuck._server import make_the_tea
|
||||||
|
|
||||||
|
|
||||||
APPLICATION = DehanceFlask(__name__)
|
APPLICATION = ImageMuckFlask(__name__)
|
||||||
API = flask_restful.Api(APPLICATION, catch_all_404s=True)
|
API = flask_restful.Api(APPLICATION, catch_all_404s=True)
|
||||||
|
|
||||||
|
|
@ -8,7 +8,7 @@ from typing import Dict
|
|||||||
from typing import Optional
|
from typing import Optional
|
||||||
from typing import Tuple
|
from typing import Tuple
|
||||||
|
|
||||||
from dehance import constants
|
from imagemuck import constants
|
||||||
|
|
||||||
|
|
||||||
def _default_sqlite_pragmas() -> Dict[str, Any]:
|
def _default_sqlite_pragmas() -> Dict[str, Any]:
|
||||||
@ -31,7 +31,7 @@ def _default_sqlite_pragmas() -> Dict[str, Any]:
|
|||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class _DBSqliteConfig:
|
class _DBSqliteConfig:
|
||||||
path: Path = Path.cwd() / "dehance.db"
|
path: Path = Path.cwd() / "imagemuck.db"
|
||||||
pragmas: Dict[str, Any] = field(default_factory=_default_sqlite_pragmas)
|
pragmas: Dict[str, Any] = field(default_factory=_default_sqlite_pragmas)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -51,7 +51,7 @@ class _DBMariaConfig:
|
|||||||
username: str = "root"
|
username: str = "root"
|
||||||
password: Optional[str] = None
|
password: Optional[str] = None
|
||||||
port: int = 3306
|
port: int = 3306
|
||||||
schema: str = "dehance"
|
schema: str = "imagemuck"
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def build(cls):
|
def build(cls):
|
||||||
@ -106,7 +106,7 @@ class _UploadConfig:
|
|||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class DehanceConfig:
|
class ImageMuckConfig:
|
||||||
database: _DBConfig = field(default_factory=_DBConfig.build)
|
database: _DBConfig = field(default_factory=_DBConfig.build)
|
||||||
upload: _UploadConfig = field(default_factory=_UploadConfig.build)
|
upload: _UploadConfig = field(default_factory=_UploadConfig.build)
|
||||||
storage_path: Path = Path.cwd()
|
storage_path: Path = Path.cwd()
|
||||||
@ -120,6 +120,6 @@ class DehanceConfig:
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def load() -> DehanceConfig:
|
def load() -> ImageMuckConfig:
|
||||||
|
|
||||||
return DehanceConfig.build()
|
return ImageMuckConfig.build()
|
@ -7,7 +7,7 @@ class SupportedDatabaseBackend(enum.Enum):
|
|||||||
SQLITE = enum.auto()
|
SQLITE = enum.auto()
|
||||||
|
|
||||||
|
|
||||||
HTTP_HEADER_RESPONSE_VERSION = "x-dehance-version"
|
HTTP_HEADER_RESPONSE_VERSION = "x-imagemuck-version"
|
||||||
|
|
||||||
HTTP_HEADER_RESPONSE_DIGEST = "Digest"
|
HTTP_HEADER_RESPONSE_DIGEST = "Digest"
|
||||||
|
|
@ -3,18 +3,18 @@ from typing import Tuple
|
|||||||
|
|
||||||
import peewee
|
import peewee
|
||||||
|
|
||||||
from dehance import constants
|
from imagemuck import constants
|
||||||
from dehance.configuration import DehanceConfig
|
from imagemuck.configuration import ImageMuckConfig
|
||||||
from dehance.database._shared import DehanceModel
|
from imagemuck.database._shared import ImageMuckModel
|
||||||
from dehance.database._shared import INTERFACE as interface
|
from imagemuck.database._shared import INTERFACE as interface
|
||||||
from dehance.database.image import ImageRecord
|
from imagemuck.database.image import ImageRecord
|
||||||
from dehance.database.thumbnail import ThumbnailRecord
|
from imagemuck.database.thumbnail import ThumbnailRecord
|
||||||
|
|
||||||
|
|
||||||
MODELS: Tuple[DehanceModel, ...] = (ImageRecord, ThumbnailRecord)
|
MODELS: Tuple[ImageMuckModel, ...] = (ImageRecord, ThumbnailRecord)
|
||||||
|
|
||||||
|
|
||||||
def initialize(config: DehanceConfig):
|
def initialize(config: ImageMuckConfig):
|
||||||
"""Initialize the database interface
|
"""Initialize the database interface
|
||||||
|
|
||||||
Defining the database as an
|
Defining the database as an
|
@ -7,7 +7,7 @@ import peewee
|
|||||||
INTERFACE = peewee.DatabaseProxy()
|
INTERFACE = peewee.DatabaseProxy()
|
||||||
|
|
||||||
|
|
||||||
class DehanceModel(peewee.Model):
|
class ImageMuckModel(peewee.Model):
|
||||||
class Meta: # pylint: disable=too-few-public-methods,missing-class-docstring
|
class Meta: # pylint: disable=too-few-public-methods,missing-class-docstring
|
||||||
database = INTERFACE
|
database = INTERFACE
|
||||||
|
|
@ -4,10 +4,10 @@ from typing import List
|
|||||||
|
|
||||||
import peewee
|
import peewee
|
||||||
|
|
||||||
from dehance.database._shared import DehanceModel
|
from imagemuck.database._shared import ImageMuckModel
|
||||||
|
|
||||||
|
|
||||||
class ImageRecord(DehanceModel):
|
class ImageRecord(ImageMuckModel):
|
||||||
"""Database record for"""
|
"""Database record for"""
|
||||||
|
|
||||||
width = peewee.IntegerField(null=False)
|
width = peewee.IntegerField(null=False)
|
@ -1,10 +1,10 @@
|
|||||||
import peewee
|
import peewee
|
||||||
|
|
||||||
from dehance.database._shared import DehanceModel
|
from imagemuck.database._shared import ImageMuckModel
|
||||||
from dehance.database.image import ImageRecord
|
from imagemuck.database.image import ImageRecord
|
||||||
|
|
||||||
|
|
||||||
class ThumbnailRecord(DehanceModel):
|
class ThumbnailRecord(ImageMuckModel):
|
||||||
|
|
||||||
parent = peewee.ForeignKeyField(ImageRecord)
|
parent = peewee.ForeignKeyField(ImageRecord)
|
||||||
width = peewee.IntegerField(null=False)
|
width = peewee.IntegerField(null=False)
|
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
DehanceException
|
ImageMuckException
|
||||||
+-- ClientError
|
+-- ClientError
|
||||||
+-- ServerError
|
+-- ServerError
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
class DehanceException(Exception):
|
class ImageMuckException(Exception):
|
||||||
"""Whomp whomp, something went wrong
|
"""Whomp whomp, something went wrong
|
||||||
|
|
||||||
But seriously, don't ever raise this exception
|
But seriously, don't ever raise this exception
|
||||||
@ -17,7 +17,7 @@ class DehanceException(Exception):
|
|||||||
status: int
|
status: int
|
||||||
|
|
||||||
|
|
||||||
class ClientError(DehanceException):
|
class ClientError(ImageMuckException):
|
||||||
"""Error while processing client side input"""
|
"""Error while processing client side input"""
|
||||||
|
|
||||||
status = 400
|
status = 400
|
||||||
@ -29,7 +29,7 @@ class ImageResourceDeletedError(ClientError):
|
|||||||
status = 410
|
status = 410
|
||||||
|
|
||||||
|
|
||||||
class ServerError(DehanceException):
|
class ServerError(ImageMuckException):
|
||||||
"""Error while processing server side data"""
|
"""Error while processing server side data"""
|
||||||
|
|
||||||
status = 500
|
status = 500
|
19
imagemuck/resources/__init__.py
Normal file
19
imagemuck/resources/__init__.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
from typing import Tuple
|
||||||
|
|
||||||
|
from imagemuck.resources._shared import ImageMuckResource
|
||||||
|
from imagemuck.resources._shared import ResponseBody
|
||||||
|
from imagemuck.resources._shared import ResponseHeaders
|
||||||
|
from imagemuck.resources.image import Image
|
||||||
|
from imagemuck.resources.image import ImageUpload
|
||||||
|
from imagemuck.resources.openapi import OpenAPI
|
||||||
|
from imagemuck.resources.thumbnail import ThumbnailResize
|
||||||
|
from imagemuck.resources.thumbnail import ThumbnailScale
|
||||||
|
|
||||||
|
|
||||||
|
RESOURCES: Tuple[ImageMuckResource, ...] = (
|
||||||
|
ImageUpload,
|
||||||
|
Image,
|
||||||
|
OpenAPI,
|
||||||
|
ThumbnailScale,
|
||||||
|
ThumbnailResize,
|
||||||
|
)
|
@ -31,7 +31,7 @@ class ResponseTuple(NamedTuple):
|
|||||||
headers: ResponseHeaders
|
headers: ResponseHeaders
|
||||||
|
|
||||||
|
|
||||||
class DehanceResource(flask_restful.Resource):
|
class ImageMuckResource(flask_restful.Resource):
|
||||||
"""Extension of the default :class:`flask_restful.Resource` class
|
"""Extension of the default :class:`flask_restful.Resource` class
|
||||||
|
|
||||||
Add a couple of useful things to the default resource class:
|
Add a couple of useful things to the default resource class:
|
@ -4,13 +4,13 @@ import uuid
|
|||||||
|
|
||||||
import flask
|
import flask
|
||||||
|
|
||||||
from dehance import constants
|
from imagemuck import constants
|
||||||
from dehance import database
|
from imagemuck import database
|
||||||
from dehance import exceptions
|
from imagemuck import exceptions
|
||||||
from dehance.resources._shared import DehanceResource
|
from imagemuck.resources._shared import ImageMuckResource
|
||||||
|
|
||||||
|
|
||||||
class ImageUpload(DehanceResource):
|
class ImageUpload(ImageMuckResource):
|
||||||
|
|
||||||
routes = ("/image/",)
|
routes = ("/image/",)
|
||||||
|
|
||||||
@ -45,7 +45,7 @@ class ImageUpload(DehanceResource):
|
|||||||
return None, 201
|
return None, 201
|
||||||
|
|
||||||
|
|
||||||
class Image(DehanceResource):
|
class Image(ImageMuckResource):
|
||||||
|
|
||||||
routes = ("/image/<string:image_id>.jpeg",)
|
routes = ("/image/<string:image_id>.jpeg",)
|
||||||
|
|
@ -2,12 +2,12 @@ from pathlib import Path
|
|||||||
|
|
||||||
from ruamel.yaml import YAML
|
from ruamel.yaml import YAML
|
||||||
|
|
||||||
from dehance.resources._shared import DehanceResource
|
from imagemuck.resources._shared import ImageMuckResource
|
||||||
|
|
||||||
yaml = YAML(typ="safe")
|
yaml = YAML(typ="safe")
|
||||||
|
|
||||||
|
|
||||||
class OpenAPI(DehanceResource):
|
class OpenAPI(ImageMuckResource):
|
||||||
|
|
||||||
routes = ("/openapi.json",)
|
routes = ("/openapi.json",)
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
from dehance.resources._shared import DehanceResource
|
from imagemuck.resources._shared import ImageMuckResource
|
||||||
|
|
||||||
|
|
||||||
class ThumbnailScale(DehanceResource):
|
class ThumbnailScale(ImageMuckResource):
|
||||||
|
|
||||||
routes = ("/thumb/<string:image_id>/scale/<int:scale_width>.jpg",)
|
routes = ("/thumb/<string:image_id>/scale/<int:scale_width>.jpg",)
|
||||||
|
|
||||||
@ -9,7 +9,7 @@ class ThumbnailScale(DehanceResource):
|
|||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
class ThumbnailResize(DehanceResource):
|
class ThumbnailResize(ImageMuckResource):
|
||||||
|
|
||||||
routes = ("/thumb/<string:image_id>/size/<int:width>x<int:height>.jpg",)
|
routes = ("/thumb/<string:image_id>/size/<int:width>x<int:height>.jpg",)
|
||||||
|
|
@ -2,9 +2,9 @@
|
|||||||
openapi: "3.0.2"
|
openapi: "3.0.2"
|
||||||
info:
|
info:
|
||||||
version: 0.1.0
|
version: 0.1.0
|
||||||
title: Dehance
|
title: ImageMuck
|
||||||
description: >-
|
description: >-
|
||||||
Dehance is a simple HTTP server that allows users to upload
|
ImageMuck is a simple HTTP server that allows users to upload
|
||||||
images and retrieve them at a later time. In addition, it
|
images and retrieve them at a later time. In addition, it
|
||||||
supports generating (and caching) scaled versions of the
|
supports generating (and caching) scaled versions of the
|
||||||
uploaded images for use as thumbnails.
|
uploaded images for use as thumbnails.
|
||||||
@ -13,7 +13,7 @@ info:
|
|||||||
url: https://mit-license.org/
|
url: https://mit-license.org/
|
||||||
x-anchors:
|
x-anchors:
|
||||||
DefaultHeaders: &headers-default
|
DefaultHeaders: &headers-default
|
||||||
x-dehance-version:
|
x-imagemuck-version:
|
||||||
$ref: "#/components/headers/Version"
|
$ref: "#/components/headers/Version"
|
||||||
OptionsResponses: &responses-options
|
OptionsResponses: &responses-options
|
||||||
'204':
|
'204':
|
||||||
|
36
poetry.lock
generated
36
poetry.lock
generated
@ -115,7 +115,7 @@ stevedore = ">=1.20.0"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "black"
|
name = "black"
|
||||||
version = "21.4b2"
|
version = "21.5b0"
|
||||||
description = "The uncompromising code formatter."
|
description = "The uncompromising code formatter."
|
||||||
category = "dev"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
@ -467,7 +467,7 @@ testing = ["packaging", "pep517", "importlib-resources (>=1.3)"]
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ipython"
|
name = "ipython"
|
||||||
version = "7.23.0"
|
version = "7.23.1"
|
||||||
description = "IPython: Productive Interactive Computing"
|
description = "IPython: Productive Interactive Computing"
|
||||||
category = "dev"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
@ -953,7 +953,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pygments"
|
name = "pygments"
|
||||||
version = "2.8.1"
|
version = "2.9.0"
|
||||||
description = "Pygments is a syntax highlighting package written in Python."
|
description = "Pygments is a syntax highlighting package written in Python."
|
||||||
category = "dev"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
@ -1159,7 +1159,7 @@ python-versions = "!=3.0,!=3.1,!=3.2,!=3.3,>=2.6"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "six"
|
name = "six"
|
||||||
version = "1.15.0"
|
version = "1.16.0"
|
||||||
description = "Python 2 and 3 compatibility utilities"
|
description = "Python 2 and 3 compatibility utilities"
|
||||||
category = "main"
|
category = "main"
|
||||||
optional = false
|
optional = false
|
||||||
@ -1328,7 +1328,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tox"
|
name = "tox"
|
||||||
version = "3.23.0"
|
version = "3.23.1"
|
||||||
description = "tox is a generic virtualenv management and test command line tool"
|
description = "tox is a generic virtualenv management and test command line tool"
|
||||||
category = "dev"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
@ -1410,7 +1410,7 @@ brotli = ["brotlipy (>=0.6.0)"]
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "virtualenv"
|
name = "virtualenv"
|
||||||
version = "20.4.4"
|
version = "20.4.5"
|
||||||
description = "Virtual Python Environment builder"
|
description = "Virtual Python Environment builder"
|
||||||
category = "dev"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
@ -1526,8 +1526,8 @@ bandit = [
|
|||||||
{file = "bandit-1.7.0.tar.gz", hash = "sha256:8a4c7415254d75df8ff3c3b15cfe9042ecee628a1e40b44c15a98890fbfc2608"},
|
{file = "bandit-1.7.0.tar.gz", hash = "sha256:8a4c7415254d75df8ff3c3b15cfe9042ecee628a1e40b44c15a98890fbfc2608"},
|
||||||
]
|
]
|
||||||
black = [
|
black = [
|
||||||
{file = "black-21.4b2-py3-none-any.whl", hash = "sha256:bff7067d8bc25eb21dcfdbc8c72f2baafd9ec6de4663241a52fb904b304d391f"},
|
{file = "black-21.5b0-py3-none-any.whl", hash = "sha256:0e80435b8a88f383c9149ae89d671eb2095b72344b0fe8a1d61d2ff5110ed173"},
|
||||||
{file = "black-21.4b2.tar.gz", hash = "sha256:fc9bcf3b482b05c1f35f6a882c079dc01b9c7795827532f4cc43c0ec88067bbc"},
|
{file = "black-21.5b0.tar.gz", hash = "sha256:9dc2042018ca10735366d944c2c12d9cad6dec74a3d5f679d09384ea185d9943"},
|
||||||
]
|
]
|
||||||
blacken-docs = [
|
blacken-docs = [
|
||||||
{file = "blacken_docs-1.10.0-py2.py3-none-any.whl", hash = "sha256:149197a0b17e83121fc10aca9eda1417728fdccebde930a6722f97d87ed30f4b"},
|
{file = "blacken_docs-1.10.0-py2.py3-none-any.whl", hash = "sha256:149197a0b17e83121fc10aca9eda1417728fdccebde930a6722f97d87ed30f4b"},
|
||||||
@ -1741,8 +1741,8 @@ importlib-metadata = [
|
|||||||
{file = "importlib_metadata-1.7.0.tar.gz", hash = "sha256:90bb658cdbbf6d1735b6341ce708fc7024a3e14e99ffdc5783edea9f9b077f83"},
|
{file = "importlib_metadata-1.7.0.tar.gz", hash = "sha256:90bb658cdbbf6d1735b6341ce708fc7024a3e14e99ffdc5783edea9f9b077f83"},
|
||||||
]
|
]
|
||||||
ipython = [
|
ipython = [
|
||||||
{file = "ipython-7.23.0-py3-none-any.whl", hash = "sha256:3455b020a895710c4366e8d1b326e5ee6aa684607907fc96895e7b8359569f49"},
|
{file = "ipython-7.23.1-py3-none-any.whl", hash = "sha256:f78c6a3972dde1cc9e4041cbf4de583546314ba52d3c97208e5b6b2221a9cb7d"},
|
||||||
{file = "ipython-7.23.0.tar.gz", hash = "sha256:69178f32bf9c6257430b6f592c3ae230c32861a1966d2facec454e09078e232d"},
|
{file = "ipython-7.23.1.tar.gz", hash = "sha256:714810a5c74f512b69d5f3b944c86e592cee0a5fb9c728e582f074610f6cf038"},
|
||||||
]
|
]
|
||||||
ipython-genutils = [
|
ipython-genutils = [
|
||||||
{file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"},
|
{file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"},
|
||||||
@ -2020,8 +2020,8 @@ pycparser = [
|
|||||||
{file = "pycparser-2.20.tar.gz", hash = "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0"},
|
{file = "pycparser-2.20.tar.gz", hash = "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0"},
|
||||||
]
|
]
|
||||||
pygments = [
|
pygments = [
|
||||||
{file = "Pygments-2.8.1-py3-none-any.whl", hash = "sha256:534ef71d539ae97d4c3a4cf7d6f110f214b0e687e92f9cb9d2a3b0d3101289c8"},
|
{file = "Pygments-2.9.0-py3-none-any.whl", hash = "sha256:d66e804411278594d764fc69ec36ec13d9ae9147193a1740cd34d272ca383b8e"},
|
||||||
{file = "Pygments-2.8.1.tar.gz", hash = "sha256:2656e1a6edcdabf4275f9a3640db59fd5de107d88e8663c5d4e9a0fa62f77f94"},
|
{file = "Pygments-2.9.0.tar.gz", hash = "sha256:a18f47b506a429f6f4b9df81bb02beab9ca21d0a5fee38ed15aef65f0545519f"},
|
||||||
]
|
]
|
||||||
pylev = [
|
pylev = [
|
||||||
{file = "pylev-1.3.0-py2.py3-none-any.whl", hash = "sha256:1d29a87beb45ebe1e821e7a3b10da2b6b2f4c79b43f482c2df1a1f748a6e114e"},
|
{file = "pylev-1.3.0-py2.py3-none-any.whl", hash = "sha256:1d29a87beb45ebe1e821e7a3b10da2b6b2f4c79b43f482c2df1a1f748a6e114e"},
|
||||||
@ -2179,8 +2179,8 @@ shellingham = [
|
|||||||
{file = "shellingham-1.4.0.tar.gz", hash = "sha256:4855c2458d6904829bd34c299f11fdeed7cfefbf8a2c522e4caea6cd76b3171e"},
|
{file = "shellingham-1.4.0.tar.gz", hash = "sha256:4855c2458d6904829bd34c299f11fdeed7cfefbf8a2c522e4caea6cd76b3171e"},
|
||||||
]
|
]
|
||||||
six = [
|
six = [
|
||||||
{file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"},
|
{file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
|
||||||
{file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"},
|
{file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
|
||||||
]
|
]
|
||||||
smmap = [
|
smmap = [
|
||||||
{file = "smmap-4.0.0-py2.py3-none-any.whl", hash = "sha256:a9a7479e4c572e2e775c404dcd3080c8dc49f39918c2cf74913d30c4c478e3c2"},
|
{file = "smmap-4.0.0-py2.py3-none-any.whl", hash = "sha256:a9a7479e4c572e2e775c404dcd3080c8dc49f39918c2cf74913d30c4c478e3c2"},
|
||||||
@ -2235,8 +2235,8 @@ tomlkit = [
|
|||||||
{file = "tomlkit-0.7.0.tar.gz", hash = "sha256:ac57f29693fab3e309ea789252fcce3061e19110085aa31af5446ca749325618"},
|
{file = "tomlkit-0.7.0.tar.gz", hash = "sha256:ac57f29693fab3e309ea789252fcce3061e19110085aa31af5446ca749325618"},
|
||||||
]
|
]
|
||||||
tox = [
|
tox = [
|
||||||
{file = "tox-3.23.0-py2.py3-none-any.whl", hash = "sha256:e007673f3595cede9b17a7c4962389e4305d4a3682a6c5a4159a1453b4f326aa"},
|
{file = "tox-3.23.1-py2.py3-none-any.whl", hash = "sha256:b0b5818049a1c1997599d42012a637a33f24c62ab8187223fdd318fa8522637b"},
|
||||||
{file = "tox-3.23.0.tar.gz", hash = "sha256:05a4dbd5e4d3d8269b72b55600f0b0303e2eb47ad5c6fe76d3576f4c58d93661"},
|
{file = "tox-3.23.1.tar.gz", hash = "sha256:307a81ddb82bd463971a273f33e9533a24ed22185f27db8ce3386bff27d324e3"},
|
||||||
]
|
]
|
||||||
tox-poetry-installer = [
|
tox-poetry-installer = [
|
||||||
{file = "tox-poetry-installer-0.7.0.tar.gz", hash = "sha256:409560bbaa6910475f224c2d1541b8c8d6215209bda395cd28c9307e8cbb861d"},
|
{file = "tox-poetry-installer-0.7.0.tar.gz", hash = "sha256:409560bbaa6910475f224c2d1541b8c8d6215209bda395cd28c9307e8cbb861d"},
|
||||||
@ -2288,8 +2288,8 @@ urllib3 = [
|
|||||||
{file = "urllib3-1.26.4.tar.gz", hash = "sha256:e7b021f7241115872f92f43c6508082facffbd1c048e3c6e2bb9c2a157e28937"},
|
{file = "urllib3-1.26.4.tar.gz", hash = "sha256:e7b021f7241115872f92f43c6508082facffbd1c048e3c6e2bb9c2a157e28937"},
|
||||||
]
|
]
|
||||||
virtualenv = [
|
virtualenv = [
|
||||||
{file = "virtualenv-20.4.4-py2.py3-none-any.whl", hash = "sha256:a935126db63128861987a7d5d30e23e8ec045a73840eeccb467c148514e29535"},
|
{file = "virtualenv-20.4.5-py2.py3-none-any.whl", hash = "sha256:73b4186ee7e08ffd1a96cd5d60e5a946132f8ce4736e8f209eda3a6c35b2ceb8"},
|
||||||
{file = "virtualenv-20.4.4.tar.gz", hash = "sha256:09c61377ef072f43568207dc8e46ddeac6bcdcaf288d49011bda0e7f4d38c4a2"},
|
{file = "virtualenv-20.4.5.tar.gz", hash = "sha256:e82dbb66e0d6ecf626f037df256f185571da552007bfa9f3f317216f5f3aac1c"},
|
||||||
]
|
]
|
||||||
wcwidth = [
|
wcwidth = [
|
||||||
{file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"},
|
{file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"},
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "dehance"
|
name = "imagemuck"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
authors = ["Ethan Paul <24588726+enpaul@users.noreply.github.com>"]
|
authors = ["Ethan Paul <24588726+enpaul@users.noreply.github.com>"]
|
||||||
description = "HTTP server for uploading images and generating thumbnails"
|
description = "HTTP server for uploading images and generating thumbnails"
|
||||||
repository = "https://github.com/mocproject/dehance/"
|
repository = "https://github.com/mocproject/imagemuck/"
|
||||||
packages = [
|
packages = [
|
||||||
{include = "dehance"},
|
{include = "imagemuck"},
|
||||||
{include = "tests", format = "sdist"}
|
{include = "tests", format = "sdist"}
|
||||||
]
|
]
|
||||||
include = [
|
include = [
|
||||||
"dehance/py.typed",
|
"imagemuck/py.typed",
|
||||||
"dehance/resources/openapi.yaml"
|
"imagemuck/resources/openapi.yaml"
|
||||||
]
|
]
|
||||||
keywords = ["flask", "image", "thumbnail", "hosting"]
|
keywords = ["flask", "image", "thumbnail", "hosting"]
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
@ -3,7 +3,7 @@ from pathlib import Path
|
|||||||
|
|
||||||
import toml
|
import toml
|
||||||
|
|
||||||
from dehance import __about__
|
from imagemuck import __about__
|
||||||
|
|
||||||
|
|
||||||
def test_about():
|
def test_about():
|
||||||
|
10
tox.ini
10
tox.ini
@ -16,7 +16,7 @@ locked_deps =
|
|||||||
pytest-cov
|
pytest-cov
|
||||||
toml
|
toml
|
||||||
commands =
|
commands =
|
||||||
pytest --cov={envsitepackagesdir}/dehance --cov-config {toxinidir}/.coveragerc --cov-report term-missing {toxinidir}/tests/
|
pytest --cov={envsitepackagesdir}/imagemuck --cov-config {toxinidir}/.coveragerc --cov-report term-missing {toxinidir}/tests/
|
||||||
|
|
||||||
[testenv:static]
|
[testenv:static]
|
||||||
description = Static formatting and quality enforcement
|
description = Static formatting and quality enforcement
|
||||||
@ -35,8 +35,8 @@ locked_deps =
|
|||||||
pylint
|
pylint
|
||||||
commands =
|
commands =
|
||||||
pre-commit run --all-files
|
pre-commit run --all-files
|
||||||
pylint --rcfile {toxinidir}/.pylintrc {toxinidir}/dehance/
|
pylint --rcfile {toxinidir}/.pylintrc {toxinidir}/imagemuck/
|
||||||
mypy --ignore-missing-imports --no-strict-optional {toxinidir}/dehance/
|
mypy --ignore-missing-imports --no-strict-optional {toxinidir}/imagemuck/
|
||||||
|
|
||||||
[testenv:static-tests]
|
[testenv:static-tests]
|
||||||
description = Static formatting and quality enforcement for the tests
|
description = Static formatting and quality enforcement for the tests
|
||||||
@ -60,7 +60,7 @@ locked_deps =
|
|||||||
safety
|
safety
|
||||||
poetry
|
poetry
|
||||||
commands =
|
commands =
|
||||||
bandit --recursive --quiet {toxinidir}/dehance/
|
bandit --recursive --quiet {toxinidir}/imagemuck/
|
||||||
bandit --recursive --quiet --skip B101 {toxinidir}/tests/
|
bandit --recursive --quiet --skip B101 {toxinidir}/tests/
|
||||||
poetry export --format requirements.txt --output {envtmpdir}/requirements.txt --without-hashes --dev
|
poetry export --format requirements.txt --output {envtmpdir}/requirements.txt --without-hashes --dev
|
||||||
safety check --bare --file {envtmpdir}/requirements.txt
|
safety check --bare --file {envtmpdir}/requirements.txt
|
||||||
@ -72,5 +72,5 @@ locked_deps =
|
|||||||
sphinx
|
sphinx
|
||||||
sphinx-autodoc-typehints
|
sphinx-autodoc-typehints
|
||||||
commands =
|
commands =
|
||||||
sphinx-apidoc --no-toc --output-dir {toxinidir}/docs/ {toxinidir}/dehance/
|
sphinx-apidoc --no-toc --output-dir {toxinidir}/docs/ {toxinidir}/imagemuck/
|
||||||
sphinx-build -W -b html {toxinidir}/docs/ {toxinidir}/docs/_build
|
sphinx-build -W -b html {toxinidir}/docs/ {toxinidir}/docs/_build
|
||||||
|
Loading…
Reference in New Issue
Block a user