• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ets-labs / python-dependency-injector / 3726562862

pending completion
3726562862

push

github-actions

Roman Mogylatov
Update publishing job

691 of 750 relevant lines covered (92.13%)

0.92 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

94.74
/src/dependency_injector/ext/flask.py
1
"""Flask extension module."""
2

3
from __future__ import absolute_import
1✔
4
import warnings
1✔
5

6
from flask import request as flask_request
1✔
7

8
from dependency_injector import providers, errors
1✔
9

10

11
warnings.warn(
1✔
12
    'Module "dependency_injector.ext.flask" is deprecated since '
13
    'version 4.0.0. Use "dependency_injector.wiring" module instead.',
14
    category=DeprecationWarning,
15
)
16

17

18
request = providers.Object(flask_request)
1✔
19

20

21
class Application(providers.Singleton):
1✔
22
    """Flask application provider."""
23

24

25
class Extension(providers.Singleton):
1✔
26
    """Flask extension provider."""
27

28

29
class View(providers.Callable):
1✔
30
    """Flask view provider."""
31

32
    def as_view(self):
1✔
33
        """Return Flask view function."""
34
        return as_view(self)
1✔
35

36

37
class ClassBasedView(providers.Factory):
1✔
38
    """Flask class-based view provider."""
39

40
    def as_view(self, name):
1✔
41
        """Return Flask view function."""
42
        return as_view(self, name)
1✔
43

44

45
def as_view(provider, name=None):
1✔
46
    """Transform class-based view provider to view function."""
47
    if isinstance(provider, providers.Factory):
1✔
48
        def view(*args, **kwargs):
1✔
49
            self = provider()
1✔
50
            return self.dispatch_request(*args, **kwargs)
1✔
51

52
        assert name, 'Argument "endpoint" is required for class-based views'
1✔
53
        view.__name__ = name
1✔
54
    elif isinstance(provider, providers.Callable):
1✔
55
        def view(*args, **kwargs):
1✔
56
            return provider(*args, **kwargs)
1✔
57

58
        view.__name__ = provider.provides.__name__
1✔
59
    else:
60
        raise errors.Error('Undefined provider type')
×
61

62
    view.__doc__ = provider.provides.__doc__
1✔
63
    view.__module__ = provider.provides.__module__
1✔
64

65
    if isinstance(provider.provides, type):
1✔
66
        view.view_class = provider.provides
1✔
67

68
    if hasattr(provider.provides, 'decorators'):
1✔
69
        for decorator in provider.provides.decorators:
1✔
70
            view = decorator(view)
×
71

72
    if hasattr(provider.provides, 'methods'):
1✔
73
        view.methods = provider.provides.methods
1✔
74

75
    if hasattr(provider.provides, 'provide_automatic_options'):
1✔
76
        view.provide_automatic_options = provider.provides.provide_automatic_options
1✔
77

78
    return view
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc