Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Matrix
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Container Registry
Model registry
Operate
Environments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
TeDomum
Matrix
Commits
f593a6e5
Commit
f593a6e5
authored
9 years ago
by
Mark Haines
Browse files
Options
Downloads
Patches
Plain Diff
Add options to definitions.py to fetch referrers and to output dot
parent
c91a0577
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
scripts-dev/definitions.py
+39
-6
39 additions, 6 deletions
scripts-dev/definitions.py
with
39 additions
and
6 deletions
scripts-dev/definitions.py
+
39
−
6
View file @
f593a6e5
...
...
@@ -79,16 +79,16 @@ def defined_names(prefix, defs, names):
defined_names
(
prefix
+
name
+
"
.
"
,
funcs
,
names
)
def
used_names
(
prefix
,
defs
,
names
):
def
used_names
(
prefix
,
item
,
defs
,
names
):
for
name
,
funcs
in
defs
.
get
(
'
def
'
,
{}).
items
():
used_names
(
prefix
+
name
+
"
.
"
,
funcs
,
names
)
used_names
(
prefix
+
name
+
"
.
"
,
name
,
funcs
,
names
)
for
name
,
funcs
in
defs
.
get
(
'
class
'
,
{}).
items
():
used_names
(
prefix
+
name
+
"
.
"
,
funcs
,
names
)
used_names
(
prefix
+
name
+
"
.
"
,
name
,
funcs
,
names
)
for
used
in
defs
.
get
(
'
uses
'
,
()):
if
used
in
names
:
names
[
used
].
setdefault
(
'
used
'
,
[]).
append
(
prefix
.
rstrip
(
'
.
'
))
names
[
used
].
setdefault
(
'
used
'
,
{}).
setdefault
(
item
,
[]).
append
(
prefix
.
rstrip
(
'
.
'
))
if
__name__
==
'
__main__
'
:
...
...
@@ -109,6 +109,14 @@ if __name__ == '__main__':
"
directories
"
,
nargs
=
'
+
'
,
metavar
=
"
DIR
"
,
help
=
"
Directories to search for definitions
"
)
parser
.
add_argument
(
"
--referrers
"
,
default
=
0
,
type
=
int
,
help
=
"
Include referrers up to the given depth
"
)
parser
.
add_argument
(
"
--format
"
,
default
=
"
yaml
"
,
help
=
"
Output format, one of
'
yaml
'
or
'
dot
'"
)
args
=
parser
.
parse_args
()
definitions
=
{}
...
...
@@ -124,7 +132,7 @@ if __name__ == '__main__':
defined_names
(
filepath
+
"
:
"
,
defs
,
names
)
for
filepath
,
defs
in
definitions
.
items
():
used_names
(
filepath
+
"
:
"
,
defs
,
names
)
used_names
(
filepath
+
"
:
"
,
None
,
defs
,
names
)
patterns
=
[
re
.
compile
(
pattern
)
for
pattern
in
args
.
pattern
or
()]
ignore
=
[
re
.
compile
(
pattern
)
for
pattern
in
args
.
ignore
or
()]
...
...
@@ -139,4 +147,29 @@ if __name__ == '__main__':
continue
result
[
name
]
=
definition
yaml
.
dump
(
result
,
sys
.
stdout
,
default_flow_style
=
False
)
referrer_depth
=
args
.
referrers
referrers
=
set
()
while
referrer_depth
:
referrer_depth
-=
1
for
entry
in
result
.
values
():
for
used_by
in
entry
[
"
used
"
]:
referrers
.
add
(
used_by
)
for
name
,
definition
in
names
.
items
():
if
not
name
in
referrers
:
continue
if
ignore
and
any
(
pattern
.
match
(
name
)
for
pattern
in
ignore
):
continue
result
[
name
]
=
definition
if
args
.
format
==
'
yaml
'
:
yaml
.
dump
(
result
,
sys
.
stdout
,
default_flow_style
=
False
)
elif
args
.
format
==
'
dot
'
:
print
"
digraph {
"
for
name
,
entry
in
result
.
items
():
print
name
for
used_by
in
entry
.
get
(
"
used
"
,
()):
if
used_by
in
result
:
print
used_by
,
"
->
"
,
name
print
"
}
"
else
:
raise
ValueError
(
"
Unknown format %r
"
%
(
args
.
format
))
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment