forked from openedx/openedx-learning
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.importlinter
56 lines (50 loc) · 2.47 KB
/
.importlinter
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# openedx_learning is intended to be a library of apps used across multiple
# projects, and we want to ensure certain dependency relationships. Please
# think through any changes you make to this file carefully, and don't just
# casually modify these linting rules to "fix the build".
[importlinter]
root_package = openedx_learning
# This is the most basic layering for openedx_learning.
#
# The "lib" package is meant for low level utilities, field definitions, and the
# like, so it's at the bottom layer.
#
# The "core" apps are meant to be the heart of our system, with foundational
# data models and plugin interfaces. It can rely on "lib" utilities.
#
# The "contrib" apps are meant to be apps that could easily be created outside
# of openedx_learning in a separate repository, but are bundled here because
# we think they'll be generally useful. These apps may call into "core" or "lib"
# apps, but not the other way around. The "core" apps should *never* import from
# "contrib".
[importlinter:contract:openedx_learning_layering]
name = Lib / Core / Contrib Layering
type = layers
layers=
openedx_learning.contrib
openedx_learning.apps
openedx_learning.lib
# This is layering within our Authoring apps. Every new app should be added to
# this list when it it created.
[importlinter:contract:core_apps_layering]
name = Authoring App Dependency Layering
type = layers
layers=
# The public authoring API is at the top–none of the apps should call to it.
openedx_learning.api.authoring
# The "components" app is responsible for storing versioned Components,
# which is Open edX Studio terminology maps to things like individual
# Problems, Videos, and blocks of HTML text. This is also the type we would
# associate with a single "leaf" XBlock–one that is not a container type and
# has no child elements.
openedx_learning.apps.authoring.components
# The "contents" app stores the simplest pieces of binary and text data,
# without versioning information. These belong to a single Learning Package.
openedx_learning.apps.authoring.contents
# The "collections" app stores arbitrary groupings of PublishableEntities.
# Its only dependency should be the publishing app.
openedx_learning.apps.authoring.collections
# The lowest layer is "publishing", which holds the basic primitives needed
# to create Learning Packages and manage the draft and publish states for
# various types of content.
openedx_learning.apps.authoring.publishing