►
A
A
B
Okay,
so
what
are
we
doing?
Where
are
we?
What
are
we
doing
so
checking
out
graphql
gonna
mess
with
the
interface
there
so
that
we
can
dump
out
the
data
from
graphql
and
call
data
flows
from
graphql?
B
So
what
are
we
doing
so
dfml
service
dev
create
okay,
so
we
are
creating
a
new
entity.
B
A
B
A
A
C
B
D
B
B
This
would
let
you
call
me.
C
D
B
I
still
haven't
figured
out
how
to
do
that.
There's
not
a
great
way
to
to
make
all
the
packages
install
er,
yeah
okay,
so
we
can
just
pass
them
on
the
install
command.
This
is
just
kind
of
tedious.
Okay.
A
B
B
And
we
can
prefix
this
stuff
will
all
probably
change,
but
we
can
prefix
right
now
with
an
underscore
and
not
overread
a
global
variable.
So
now.
B
C
A
B
A
A
A
B
A
D
A
B
There
we
go,
should
I.
B
A
B
I
know
why
I
didn't
do
this
because
there's
line
breaks
that
are
off
whatever
goddamn,
okay,
there's
tutorials,
which
reference
certain
lines
and
we
have
a
job
that
goes
through
and
tells
us
when
those
lines
need
to
be
updated,
and
this
will
trigger
that
job
because
we're
modifying
this
file
where
we're
including
parts
of
this
file
and
that's
yeah,
that's
why
the
imports
are
structured.
The
way
they
are.
B
So
we
need
to
look
at
clone
git
repo
right
and
we
need
to
say:
okay,
valid
git
repository
url
all
right.
So
this
thing
ain't
gonna
run
unless
it's
got
a
valid,
get
repository
url,
and
that
needs
to
be
true
within
the
context
right
and
the
context
is
the.
B
Is
the
url
because
we're
using
context
as
a
string
all
right
so
clone.
B
B
So
clone
gate
repo
will
not
run
without
an
input
of
valid
git.
Repository
of
definition,
valid
repository
set
to
true
this
is
to
prevent
attempting
to
clone
repos
where
clone
results
in
an
infinite.
B
Like
check.
B
So
we
check
so
we
we
by
doing
alice
remote
within
check
if
give
repositories
valid
or
get
within
this
operation.
Clunky
repo
will
not
run
without
an
input
of
definition,
valid
repository
url.
So
true,
this
will
prov.
This
is
to
prevent
attempting
to
clone
repos
where
clone
results,
an
infinite.
Hang
we
prevent
this
by
checking
the
repo
if
we
prevent
this
by
checking
if
the
repo
is
valid
to
begin
with
by
doing
or
before
clone.
A
B
This
here
to
easily
support
file;
okay,
actually,
that
we're
just
gonna
do
it
down
here.
B
B
B
B
B
B
All
right,
so
we
did
use
okay,
so
alice.
Should
I
should
I
oh
yeah,
so
install
http
test.
B
All
right
there
we
go
we're
back
on
air
all
right.
So
remember
when
we
started
this.
The
very
first
video
we
said
the
first
thing
we're
going
to
do
is
we're
going
to
base
alice
on.
Should
I
so
we're
going
to
say
you
know,
should
I
install
okay
so
should
I
alice.
B
B
Okay,
so
assistant
is
based
around,
should
I
we
provide
alice
specific.
A
B
And
those
are
covered
right
in
the
data
flow
deployment
example,
we
provide
alice,
specific
overlays.
B
B
A
B
Right
and
now
right
now,
this
is
a
python
package
right
so
to
do
take
p,
url
or
software
heritage
id.
B
All
right
so
should
I
use.
Let
me
just
take
some
check
some
guidance
here.
A
A
A
B
All
right
so
then
should
alice.
Should
I
reuse
blank
right
so
alice?
Should
I
use
this
thing?
Okay,
you
know.
Let
us
know
whether
it's
you
know
something.
That's
got
active
problems
in
it.
You
know.
D
B
B
So
we're
going
to
be
able
to
use
our
input
definitions
to
take
either
p
urls
or
software
heritage
ids
determine
those
also
automatically
and
determine
that
they're
different
from
a
gate,
repo
url
and
then
run
the
appropriate.
You
know
translation
layers
there.
So
let's
go
look
at:
let's
see
operations,
inner
source,
dfm
operations
intersource,
and
how
did
we.
A
D
B
B
B
B
So
maybe
each
cli
command
is
like
a
deployment
environment
right
and
then,
as
we
get
down
we're
diagramming
each
deployment
environment
right.
So
if
we
do
a
diagram,
we
could
diagram
for
the
top
level
right
and
then
we
could.
Let
me
write
that
down
because
that's
going
to
be
a
that's
going
to
be
helpful.
B
Let's
put
that
under:
where
are
we?
You
know,
I
think
we're
actually
look
at
that
we're
in
chapter
one
now
how
exciting?
Where
is
this
so
see
if
it
went
okay,
so
there
was
a
lot
of
I
you
know
and
we
haven't
we
haven't.
We
haven't
gotten,
unfortunately,
too
far
more
into
the
blockchain
stuff.
B
B
This
is
good
okay.
So
what
we're
going
to
make
a
note
of
okay
so
for
diagram
command
for
each
so
treat?
Aha,
this
is
there
we
go
treat
each
cli
command
as
if
as
a
data
flow
as
class,
each
action.
What
is
an
arc?
Each
sub
parser.
B
Cli
command
for
ex
so
each
subparser
cli
command.
Let's
just
show
what
we're
talking
about
here.
So
so,
if
you
look-
and
so
we
have,
this
wrapper
around
arc-
parse
dffml,
util,
cli,
arg,
now.
B
Command.
Okay,
so
this
this
whole
cli
util
cli,
is,
is
the
wrapper.
So
when
we
go
here,
we
basically
look
at
the
data
class
fields,
see
we
look
at
the
data
class
fields
and
we
create
these
argue.
There's
this
intermediate
structure,
because
there
was
some
there's
a
lot
of
hold
over.
Remember:
we've
been
redoing
the
config
vote
code
for
the
lifetime
of
the
project
right
so
hopefully
soon
we'll
finally
unify
well.
We
figured
out
the
type
stuff.
B
Now
we
need
to
go
implement
right,
but
so
we've
got
the
data
class
fields
we
iterate
over
them.
We
create
these
intermediate
structures,
these
args,
and
then
we
add
the
args
right,
so
we'll
get
rid
of
that
and
we'll
just
do
it
do
directly
from
fields.
If
anybody
has
time
that
would
be,
you
know
a
really
good
thing
to
do
so
and
and
then
yeah
we
add
arguments.
B
So
basically
what
this
means
is
that
each
of
the
so
these
fields
within
the
data
class
right
they
become
sub,
commands
right
unless
they
have
a
or
actually
let's
see,
that's,
not
actually
what
that
part
means
the
fields
become
the
arguments
and
the
yeah.
So
we
inspect
the
members
of
the
class,
and
so
any
member
of
the
class
wears
so
so
these.
So
basically
this
use
command
when
set
so
yeah
yeah.
B
I
don't
have
time
to
explain
this
fully,
but
basically
you
can
see
how
the
cli
works
out
right
so
should
I
is
this
command,
and
this
is:
should
I
right
so
it's
this
command
and
then,
under
that
you
have
run
diagram,
install
reuse
right,
so
diagram
for
any
given
command
will
treat
the
cli
command
as
like
a
data
flow
as
class,
where
the
top
level
thing
that
we're
running
next
right
so
should
I
run
or
should
I
install
or
should
I
reuse
is
the?
B
Is
the
deployment
environment
right
for
that?
Given
data
flow,
we
talked
about
having
these
sort
of
top-level
deployment
environments
right,
these
top
level
switches
for
our
almost
like
our
data
flows,
class
we're
doing
the
different
methods
within
the
one
data
flow
that
we're
calling,
I'm
probably
triggering
them
using
its.
You
know,
sub
flows
based
off
of
conditional
in
the
top
level
right
where
we're
gonna
pick
that
out
and
see
what
you
know.
B
Okay,
it's
it's
run,
okay
and
then
we're
gonna,
add
the
conditional
and
then
we'll
do
the
subflow
and
the
subflow
would
be
this
run
right.
So
diagram
makes
sense
as
something
that
we
would
put
in
at
every
level,
then
because
we
would
be
able
to
diagram
any
any
cli
command,
and
this
and
the
different
subflows
provided
they're
all
based
on
data
flows,
which
they
should
be
right.
Eventually,
we
will
get
there.
A
B
And
so
yeah,
that's
the
end
that
we're
hiding
this
for
last
lines
right
because
this
was
that
was
the
line
chopping.
I
was
talking
about
right,
so
we
were
chopping
up
those
lines
to
trying
to
make
it
so
that
you
know,
if
you
don't
you
don't
see
it
at
the
end
of
the
tutorial
here.
Let's
see
so.
B
B
So
what
the
hell
we'll
update
it
right
now
set
nu,
so
it
used
to
go
to
85
and
it
still
goes
to
85.
wait
a
minute.
Okay,
no,
that's
a
different
file.
We
edited
okay!
I
don't
even
think
we're
looking
at
use.
Okay.
Well,
then
it
doesn't
matter,
then
it
doesn't
matter,
okay,
great
at
least
for
our
messing
around
with
the
other
file
or.
B
B
Flow
treat
sub
commands
as
subflows
with
additionals
question
mark.
B
A
B
So
that
is
that
and
oh
we
should
put
this
on
twitter
too,
maintain
that
that
chain.
A
B
B
B
Let's
go
grab
project
yeah
yeah.
Let's
see
this
was
a
long
time
ago.
I
don't
know,
maybe
I
didn't
know
about
the
spd
excess
spawn
stuff,
but
this
was
a
while
ago.
A
B
So
we're
going
to
commit
that
one
that
we
just
did
should
I
project
so
we
have
a
convention
by
which-
and
the
reason
for
this
is
because
we're
going
to
split
out
into
this
polyrepo
setup
right
and
once
we
do
that,
basically
we're
going
to
do
these
filter
branches
on
the
commits
and
we're
going
to
pull
out
all
the
commitments.
B
The
commit
messages
should
looks
good
still
for
each
repo
individually,
with
the
way
that
we've
been
formatting
them,
they
shouldn't
you
shouldn't
even
be
able
to,
but
when
we
get
done
with
when
we
get
done
with
the
second
party,
you
shouldn't
even
been
able
to
tell
that
they
were
originally
in
the
same
repo.
B
So
that'll
be
fun
so
because
we
have
a
problem
with
maine
right
now,
we're
gonna
have
to
mess
with
it
as
well.
Okay,
so
log
about
future
s-bom
production.
B
All
right,
and
then
we're
going
to
add
this
in
here
so
did
we
alice?
Should
I
use
alice?
Should
I
reuse.
B
So
should
should
I
reuse
this
alice
says
gtfo,
you
stopped
editing
the
file
in
the
middle
okay,
rightfully
so,
okay,
so
should
I
reuse?
Should
I
install
so
this
would
be
use
is,
should
I
install
so
should
I
cli
install
so
we're
just
tweaking
this
slightly
for
a
different
model
here
right,
because
we're
going
to
add
our
overlays
and
what
should
I
thinks
is
install
we're
going
to
say
is
used
because
we're
going
to
expand
beyond
python
packages
right.
B
Should
I
just
going
to
focus
on
python
packages
we're
going
to
leave
that
alone?
For
now,
that's
pretty
much!
It's
pretty
much!
You
know
it's
a
it's
a
little
example
right.
It
doesn't
need
to
be
more
than
an
example
for
dfml
alice
is
going
to
be
a
little
bit
more
full-fledged
right.
So
should
I
run.
B
Should
I
run
the
hell
was
that
where
did
that
come
from
probably
the
other
example,
okay,.
B
Okay,
so
should
I
use
reuse
and
then
we're
gonna
add
another
one
which
is
contribute.
B
All
right
so,
should
I
use
something.
Should
I
reduce
something?
Should
I
contribute
to
something
right?
Basically,
you
know
what
would
would
we
then
this
is.
This
is
going
to
be
how
we
can
figure
out
basically
at
any
given
time
you
know
is,
for
example,
we
talked
about
the
tutorials
a
long
time
ago,
and
what,
if
I
have
a
different
version
installed,
and
how
do
we
put
the
version
information
into
the
tutorial
doc
so
that
you
could
have
this
command,
which
goes
and
double
checks
your
environment
right?
B
Because
we
all
know
that
setting
up
your
environment
is
definitely
the
most
difficult
part
of
actually
doing
anything
right,
and
so,
if
we
could
just
have
alice,
go
and
say
hey,
you
know,
should
I
use
this
tutorial
right?
Well,
okay,
she
may
come
back
and
say:
well,
you
know
your
environment.
Is
you
know
it's
on
fire?
You
know
that
dog
on
fire
mean
that's
your
computer
and
you
need
to
clean
up
your
computer
and
you
have
10
different
versions
of
python
installed
and
I'm
you
know,
and
by
default
you
pick
the
wrong
one.
B
So
you
need
to
go
fix
that
before
you
try
to
run
this
tutorial
because
you're
going
to
hose
your
computer
even
more
right,
so
that
could
be.
You
know,
maybe
some
of
the
context
that
we
put
around.
Should
I
use
right,
you
know,
but
you
can
also
apply
your
organizational
overlays
which
we're
going
to
get
to
in
a
moment.
B
Right
so
should
I
reuse
and
should
I
contribute
or,
and
so
we're
actually
going
to
make
a
new
contribute
command,
so
we're
going
gonna
say:
should
I
cli
contribute
and
we'll
just
capitalize
that
c?
Okay?
Should
I
re
should
I
use?
Should
I
reuse?
Should
I
contribute
and
then
diagram
all
right
so
should
I
should
I
diagram
right?
That's
just
going
to
produce
a
diagram
of
the
should
I
stuff
so
alice.
B
All
right
well,
what's
in
there
project,
cli
project
command,
project
command,
create
okay,
so
there
we
go.
So
you
know
we.
Basically
what
are
we
doing,
we're
just
sort
of
grabbing
other
pieces
of
different.
You
know.
We've
got
a
lot
of
different
little
projects
right
and
we've
been
structuring
like
this,
so
that
we
can
pull
them
together
and
overlay
where
we
need
right,
and
so
now
it's
time.
Okay,
so
should
I
should
I
do
we
even
need
this
inner
source
stuff
in
here?
So
what
are
we
going
to
do
with
that?.
D
B
What
do
we
got?
Okay,
so
a
bunch
of
git
repo
operations,
okay,
so
very
similar,
so
it
produces
a
bunch
of
metrics.
So
maybe
we'll
call
that
so
alice
should
I
use.
Should
I
reuse?
Should
I
contribute?
Maybe
we're
going
to
throw
this
under?
Should
I
contribute
we'll
just
say:
should
I
contribute
right
now
is
the
running
of
this
inner
source
cli?
D
B
A
B
Alice,
what
can
you
do
alice
can
do?
Should
I
alice?
Can
I
spell?
Should
I
write
probably
not
alice?
What
should
I
mean?
Okay,
so
alice
says
that
we
can
do
this.
Should
I
contribute
install
project?
Reuse
use,
okay,
so
why
does
she
say
that?
Well
she
says
that
because
we
subclass
from,
should
I
cli
itself,
and
we
actually
don't
want
to
do
that
right
now.
So
we
want
is
alice.
Should
I
use
reuse,
contribute
great,
that's
what
we
want
to
see
so
should
I
use
what
does
that
do?
B
I
should
use
okay,
oh
yeah,
because
this
is
ready.
B
B
As
part
of
our
python
package
evaluation
right,
so
all
we
have
to
do
is
just
say
so,
because
the
install
is
an
overlay,
it
just
becomes
one
thing
that
will
happen
if
it
sees
an
input
right,
so
we
don't
even
have
necessarily
have
to
call
it
an
order.
It's
just
like
a
thing.
That's
going
to
happen
right.
A
B
Okay,
let's
just
make
sure
that's
right.
Okay,
great,
should
I
reuse.
B
B
B
And
then
we're
going
to
visualize
that
we're
going
to
output
that
json
block
instead
of
as
json
we're
gonna
call
we're
gonna
make
a
markdown
file
pretty
soon.
So
so,
let's
ask
alice
about
the
health,
about
the
readiness
or
about
ss
info.
Let's
ask
alice
about
a
repo
to
see
what
she
knows
about
the.
B
She
what
she
knows
about
the
health
of
it
and
it's
community
right.
This
will
help
us
make
an
informed
decision
as
to
if
we
should
contribute
should
we,
you
know,
maybe
they're
not
active
right,
maybe
there's
no
maintainers.
Maybe
I
shouldn't
even
bother
going
and
writing
a
pull
request
right.
So
what's
the
first
thing
you
usually
do
you
say
I
have
a
problem?
Is
there
an
open
issue
right?
If
there's
an
open
issue,
then
is
there
an
open
pull
request
right?
Is
it?
Is
there
a
reason
that
pull
request
hasn't
been
merged?
Okay?
B
So
if
they're,
if
it
looks
good
they're
just
waiting
on
somebody,
you
can
always
pull
down
the
patch
right.
You
might
need
that
patch.
I
think
that
we
we
went
over
that
when
we
were
doing
there's
a
blog
post
about
setting
up
the
kernel,
ci
environment,
we
had
to
pull
down
patches
right.
So
you
know
you
you
don't
know,
and
so
what
alice
is
gonna
do
is
she's
gonna
help
us
understand.
You
know
how
ready
is
this
repo
for
my
contribution
right?
Are
they
facing
a
huge
backlog
right?
Okay?
B
Well,
if
they're
facing
a
huge
backlog
of
pr's,
I
might
go
prioritize
my
contribution
to
another
repo
while
they
sort
their
stuff
out
right.
So
this
will
help
us
right
as
we
and
and
the
build
tree
organization,
obviously
same
same
thing.
That's
why
we're
looking
to
you
know.
Eventually,
you
know,
try
to
figure
out
what
what
the
right
arrangement
there
is
see.
B
If
maybe
we
can
get
dfml
into
the
governance
structure
right
of
our
maintainers
of
our
of
our
maintainers
and
mentors
who
are
previously
on
the
project
right
as
they're
building
this
new
org,
and
this
will
help
their
new
contributors
figure
out.
Where
are
their
skills
right?
Where
are
their
skills
relevant
right?
So
if
I
run
this
because
I'm
going
to
have
my
overlays
right,
so
I
can
point
alice
at
a
repo
and
she'll
say
hey.
You
know.
This
looks
like
a
really
good
repo
for
you
to
contribute
to
all
the
open
issues.
B
Have
you
know,
skills
that
you
know
your
skill
set
matches
right?
This
is
a
high
value
target
for
your
contribution
right,
okay,
so
what
with
overlays
alice
will
be
able
to
tell
us
if
our
experience
set.
B
Skill
set
would
allow
us
or
seems
helpful
to
contribute
to
open
issues.
Her
analysis
of
the
repo
project
will
also
let
us
know
if
they
are
ready
for
our
contribution.
A
B
B
Okay,
so
that's
not
a
good,
oh
because
yeah,
okay,
so
that
that
one
okay,
I
think
we
have
a
setup
py
yeah
this
guy.
This
is
a
current
bug
with
the
setup
py.
Let's
dump
this
in
gh
issue
create
dash
t.
B
Should
I
so
we
fix
this,
and
should
I
alice
gets
it
for
free
right.
Should
I
python
analyze.
B
B
Great
there
we
go
there's
our
issue
all
right,
so
let's
go
ahead
and
right
and
ideally
ideally
alice
would
be
hooked
into
our
development
environment
right
and
she
would
just
log
that
issue
for
us
right.
Every
time.
There's
a
stack
trace
boom
blog,
an
issue,
deduplicate
log
issues
right
that
way,
we're
all
communicating
right
and-
and
she
can
go
look
at
the
issues
to
see
if
somebody
else,
if
she
sees
the
stack
trace,
she
can
look
at
the
issues
right
and
she
could
say
somebody
else
has
already
figured
out
this
issue
right.
B
Don't
you
don't
even
need
to
bother
spending
the
rest
of
the
day
doing
this
thing
that
somebody
else
already
figured
out
right?
It's
hopefully,
gonna
save
a
lot
of
time.
The
amount
of
random
stack
traces
that
we
end
up
with
during
development
that
we
like
just
forgot
a
flag
here
or
there
right,
she's,
just
gonna.
B
She
can
just
fix
that
for
us
right
well,
she
will
be
able
to
if
we
if
we
were,
but
only
if
we
write
everything
down
right
and
and
and
we
don't
do
that-
so
you
know
sometimes
we
do
like.
We
just
did
right,
okay,
so
bad
example,
but
you
know
sometimes
we
don't
have
time
and
she'll
do
it.
For
us
is,
is
part
of
the
goal
so,
and
what
did
we
name
that
we
named
it?
A
A
B
B
B
B
Okay-
let's
get
rid
of
this,
we
don't
want
that
so
it.
Basically,
we
have
this
temporary
directory
where
we
were
which
the
source
is
pointed
out
which
goes
to
the
current
working
directory.
B
Let's
see
what
do
we
got?
What
do
we
got?
What
do
we
got?
This
is
a
whole
bunch
of
stuff.
I
don't
like
that.
B
B
Python
alice
right,
so
this
little
main
is
so
that
we
can
call
alice
from
there.
Sometimes
why?
Why
do
we
do
that?
Well,
sometimes
people's
path
does
not
contain
the
console
scripts
directory,
so
in
which
case,
instead
of
making
people
search
for
your
console
script,
just
export
your
module
as
a
library
or
export.
B
Your
export
just
run
create
this
main
file,
and
this
main
file
is
just
kind
of
like
it's
just
like
that,
if
name
equals
main,
but
for
your
module
so
that
you
can
get
run
with
dash
m
and
then
python
will
just
find
the
location
of
your
installed
module
and
run
it
right.
So
what
we
do
is
instead
to
avoid
duplic,
so
to
avoid
creating
too
many
different
code
paths
on
that
cli
entry,
we're
just
going
to
load
the
entry
point
and
that
that
helps
us
reduce
our
our
amount
of
variation
there.
B
Okay,
so
alice,
reuse,
initial
cli,
based
on
should
I
and
inner
source
operations
all
right.
So,
let's
push
that
boom.
Oh.
B
Why
is
this?
What
happened.
B
B
Maybe
the
shots
do
match.
So
if
we
walk
reflogs,
we
can
see
the
different
states
that
git
has
been
on
locally.
It's
kind
of,
like
you
know,
there's
this
sort
of
just
cache
of
stuff
sitting
around
all
right,
so
we
gotta
get
all
right.
I
gotta
get
going
and
then
I'll
be
back
pretty
soon
here
and
we'll
start
again,
thanks
bye.