📺 Develpreneur YouTube Episode

Video + transcript

Python Certification Training - Function Attributes

2021-09-09 •Youtube

Detailed Notes

We start wrapping up with a review of some topics that need more discussion before taking the certification. This episode is focused on function attributes.

Useful Links: https://docs.python.org/3/reference/datamodel.html https://realpython.com/documenting-python-code/

Learn more about the overall certification and syllabus here: https://pythoninstitute.org/certification/pcap-certification-associate/pcap-exam-syllabus/

Github repository for code examples: https://github.com/robbroadhead/PythonCertificationSeries

Transcript Text
[Music]
well hello and welcome back we are
continuing our series of episodes on
getting your python certification
and we're getting really close to the
end this may be the last one other than
sort of like a summary
and the thing that i want to swing back
around to is when we did functions
we touched on
properties of a function
and we did this with modules as well
but
i want to make sure that we go back
through those because there are some
questions on those that i found at least
in the sample test
and i think it's good to
make sure you've touched on each of
those
and there's several
so for this example um i just created
this function called myfunk it's got a
couple parameters
it prints something and let me return
something too just to be
complete
so there you go so it prints it it
returns it
so if i call my func
two comma three
then we'll see what happens
so
if i do that the first one i look at is
under score underscore str
so if we do
uh python three extra is that what i
call it
there we go
then we see that it just i called it it
did a little print it returns it if i do
it as a string
then right now since i haven't defined
it in any specific way
then it's going to give me
basically it's a you know the name and
the um
the memory address that exists at
so string is not terribly
interesting um generally speaking for
functions
that you can do let me give you a couple
of these
but another one we can do
is we can do doc
and let me do
let me do this one at a time so let's do
doc
and there's nothing there uh here
there's nothing there is no dock that's
available
and we haven't really talked about this
but what i can do is i can come up here
and
mention that
that
prints
a plus b
oops
b and returns it
[Music]
so now if i come through
um
oh it may be without that
sorry it's a string
so um
the string is a function oh let's do
this
actually let's get more specifically
so what we see here is some of these are
some of these underscores are functions
and some are attributes
um you can see here um
string is a function
but i if i call it
then it gives me
this
with the dock i can actually see
comments and if i do this triple
triple double quote
then that is a built-in
dock it is
built-in comments for
your your function your uh your method
if you're dealing with the client your
class
so it's one of those things we haven't
touched on when you talk about comments
and documentation but that triple quote
triple double quote which is itself sort
of difficult
allows you to do that kind of stuff
it allows you to also then have it
exposed you can come back later and do
you know documentation related stuff
through the dock
so let's pick
uh let's go here
let's do another
uh next one we'll do is let's go ahead
and do
code i think we have
done code
and
it's a
code is an object um i think i need to
get
let's see
i don't know if that's gonna work let's
try this real quick i think you could
get it
uh no it just gives me a code object
so it doesn't give it in a i don't get
in a string format
but what i do get is i get this code
object so i could actually when we talk
about lambdas and think lambdas and
things like that i could actually do
stuff
with that
i can actually push stuff around and
actually call things
based on that
again it's so that you can get all of
the different you can actually dissect
basically your functions
uh annotations i didn't see anything on
it but there are
i haven't really gone into annotations
too much
but you can get that if you have those
call is going to actually call it
so
instead of doing this way you could
actually do it as a call which makes
very little sense we've talked about
class
if we look at defaults that's one i'm
pretty sure that's up there let's see so
we did doc
so we're seeing what we did oh now we
did name
oh let's do call name
let's do that first well if we do
defaults just because i was taking that
in order there aren't any
because i didn't do it but if i do a
equals zero
b equals zero
then i can see what my default values
are
so i can see what the defaults are if
i'm trying again if i'm trying to
dynamically create stuff i can figure it
out through there
uh let's do call name
oh we did string we didn't do names so
if i do
let's look at name
and call name
if we look at those two
then it's going to be the same one um
it depends it basically depends on
whether or not you're within a module or
something like that then you can see
you can see things that get aliased out
but if you want to actually get the name
of the function so string is a string of
the function
the or underscore underscore str it's
the function itself it's not
you know the name
so normally you're going to want to work
with the name instead of the name or the
call name
uh the mod we've talked about module we
see defaults code
and note here this is the
it's the compiled function body
but you can also actually
replace stuff on the fly
um
let's do globals
and what we're going to see here
if we jump to this one is
uh starting here to
here
um these are all the different things we
can call on it and we've seen this
before with when we're looking at
classes
but you can see here that it's like some
of the things we've seen we've got name
a main a doc
which is yeah none
uh what package you're in
uh loader the blah blah blah blah blah
we talked about now supplications let's
do spec
and
um
so let's do
let's pick up a couple of these let's go
look at
spec
and let's look at
let's see
let's do file
so if we look at those two
uh it doesn't have
a spec attribute
um even though it
is there it's because it's not oh there
it is because it is none but i could
write to it uh file file file and it's
gonna show what file it's in so let's
get that
uh oh it doesn't have it
um which is interesting even though it
says here oh it's a global these are the
globals available to it
so i can take aldo so i can see
uh it's not this
if i do this
then i get to see it so i'm sorry those
are
um these are all the globals that are
available within that function
uh
so we've got
uh dictionary is one that we uh let's go
here dick
which is my funk so
oh
so if we do the dictionary let's take a
look at that guy
so see here it doesn't have anything uh
this is really not anything
notable of it
um
where'd it go
but it's basically for uh
if i had an additional attribute within
the function if i did
let's try like name equals
this function
i think then we will see that it'll show
up
nope nope it doesn't because it's not oh
because it's an attribute of the
function that we we could add to we
haven't
so it would be more like
my funk dot
um
[Music]
equals
custom value
and i think now i'll see yep there we go
so i can remember these things are all
dynamic so i can actually add stuff i
can slap all kinds of attributes onto
things
and so dictionary gives me that
let's see closure
be the last one
of these
whoop just do it this way
and let's take a look at that after our
little custom value and there isn't any
because what you get from closure
is um
uh it's bindings this would be if you
are
if you're using some sort of hints and
stuff like that and i think you're going
to end up getting what you see kw
defaults let's go ahead and do that one
whoop
there
do that that
well
and let's go and take that one in and we
don't have any setup there as well
and this goes into
depending on how you build out your
your function whether you have some
variable arguments and things of that
nature
you really uh the one i ran into
was
um
bases
and that would be
uh let me see if i can get a class
example real quick
uh let me do i think i have simple and
less simple let's take those two guys
let's add those into here
and now do
um
oh there basis i think i can do it at
the class level we're gonna find out
yes i can
oh it's an object so i need to do
let's pull ls
whoop
let me do that
whoop
dope
i can remember how i'm doing stuff
um
oh and so he doesn't have oh so i do
have to do it up at the class level
and i should see oh
oh i'm sorry i didn't actually do
inheritance my mistake so let's say less
simple inherits from simple
uh
let me remember the
let me just do it this way let's take
these guys that'll be easier
uh
extras
let's go here
whoop
and we're going to bring this guy and
now
let's do less simple
and now we see
that it actually has a base of
simple
before
so if i do
simple
which is what i had before
then there's nothing it's only an object
you can just see where that is our
object now if i do um and let me show
you this so if i do less simple
and then i even do
even less simple which inherits from
less simple
and then come in here
because this gets to the point of the
actual
question they had
so if i look at even less simple
when i look at bases
it doesn't give me the
hierarchy it gives me what it inherits
from
so if i use multiple inheritance so if i
did less simple and simple
then it's going to show me both of them
but this shows you when you do basis
this is
what directly do you inherit from it
doesn't necessarily show you the
inheritance hierarchy it is what is your
parent
and that which you know we see every
class
the parent is at least object
and that was one of the things on the
test
um or at least the example that i looked
at
so these are things that came up as
items that were on the test that i had
not
covered as much in some of these prior
ones
another caveat as this may be i said i
may do one more we'll have to see i'll
see how i feel about it or what i come
across when i go through uh doing the
certification test
uh actually probably do another i'll
probably do a couple of samples and
maybe even take the test before i do a
wrap-up
review of this series
another thing that i've noticed in
looking through taking some of the
questions
is
read them
thoroughly
there are some
that i guess i would call trick
questions
because they do something that
uh either in the name or
in
like maybe overwriting a variable or
something like that it's sort of
it looks very straightforward but if
you're not paying close attention to the
variable names and things like that then
you may you'll get confused fairly
easily
another one is to know
which we haven't spent a ton of time
i've seen some you've seen some examples
of it is when things are uh invalid
when you're gonna get
errors uh such as i probably had one up
here not too
far back yeah
kinds of things like this where you're
going to get
an error of some port sort as opposed to
the code actually running or the code
like a and that would be things like if
you do divide by zero and things like
that
knowing what
are you going to see what is it going to
tell you roughly so if i did
if i go to here and i do
1 over 0
a string of 1 over 0. well actually i
don't even have to do that i can just do
x equals one divided by zero
then i'm gonna get a division by arrow
division by zero error so those sorts of
things be sure you're so comfortable
with what's going to blow it up and what
is gonna give you something else
yeah and it and some of it is
math stuff so if i do that
then i note here that okay that's just
gonna give me zero over one um those are
the things that i think show up in sort
of understanding the exceptions they can
be stuff that we overlook a little bit
but when we get into the test those are
the kinds of things they will ask you
about and
when you look at passing uh just having
more comfort with those
and particularly this is if you're doing
if you do a lot of examples you do a lot
of coding just sort of flying through
not copying and pasting stuff but
actually
going through and writing and modifying
code
you'll run into enough of these they
will become sort of second nature to you
they'll seem like much easier questions
which goes to
going through this series is i would
think very helpful
but because we because of the topics we
cover to give you a good idea of what
needs to be in your head when you get
into the certification
but that being said there are
there is a lot to be gained by
playing around so take these uh and this
all this stuff is out in the repository
um and you can see links to the the
github repository for this uh in the
show notes
take a look at them maybe write a couple
little apps of your own that just do
some little utility things or something
like that
playing around with a lot of this stuff
so that you can get a feel for
how these things work and
really
embed it in your mind a little bit more
yeah there's one thing to hear about it
and see it it's usually a lot more a lot
gonna be retained better if you do it
and i think i've gone long enough i've
been long-winded enough this time so i'm
gonna go uh i'm gonna go play around and
see if i can get up get my certification
and then come back around and let you
guys know how it went
but
go out there have yourself a great day a
great week and we will talk to you
next time
you
Transcript Segments
0.46

[Music]

26.16

well hello and welcome back we are

28.08

continuing our series of episodes on

31.439

getting your python certification

33.6

and we're getting really close to the

35.44

end this may be the last one other than

38

sort of like a summary

39.76

and the thing that i want to swing back

41.76

around to is when we did functions

45.36

we touched on

47.2

properties of a function

49.2

and we did this with modules as well

51.52

but

52.399

i want to make sure that we go back

53.68

through those because there are some

54.879

questions on those that i found at least

56.879

in the sample test

58.879

and i think it's good to

61.039

make sure you've touched on each of

62.8

those

64.32

and there's several

65.68

so for this example um i just created

68.159

this function called myfunk it's got a

69.84

couple parameters

72.159

it prints something and let me return

73.68

something too just to be

77.119

complete

79.04

so there you go so it prints it it

80.32

returns it

81.52

so if i call my func

85.04

two comma three

86.479

then we'll see what happens

88.32

so

90.479

if i do that the first one i look at is

92.159

under score underscore str

94.88

so if we do

96.88

uh python three extra is that what i

100.079

call it

101.52

there we go

103.92

then we see that it just i called it it

106.24

did a little print it returns it if i do

108.159

it as a string

109.92

then right now since i haven't defined

111.84

it in any specific way

114.72

then it's going to give me

116.96

basically it's a you know the name and

119.759

the um

121.52

the memory address that exists at

124

so string is not terribly

126.84

interesting um generally speaking for

130.319

functions

132

that you can do let me give you a couple

133.52

of these

134.8

but another one we can do

137.599

is we can do doc

140.959

and let me do

142.4

let me do this one at a time so let's do

144

doc

148.8

and there's nothing there uh here

151.519

there's nothing there is no dock that's

153.92

available

155.2

and we haven't really talked about this

156.72

but what i can do is i can come up here

159.599

and

163.76

mention that

165.76

that

168.84

prints

170.56

a plus b

172.4

oops

174.16

b and returns it

176.7

[Music]

178.56

so now if i come through

180.959

um

182.159

oh it may be without that

185.68

sorry it's a string

187.36

so um

189.76

the string is a function oh let's do

191.92

this

192.8

actually let's get more specifically

196

so what we see here is some of these are

197.68

some of these underscores are functions

198.879

and some are attributes

200.64

um you can see here um

203.519

string is a function

205.28

but i if i call it

208

then it gives me

209.76

this

212.239

with the dock i can actually see

214.48

comments and if i do this triple

217.12

triple double quote

219.2

then that is a built-in

222.72

dock it is

225.44

built-in comments for

229.36

your your function your uh your method

232.4

if you're dealing with the client your

233.519

class

234.64

so it's one of those things we haven't

235.84

touched on when you talk about comments

237.439

and documentation but that triple quote

239.439

triple double quote which is itself sort

241.439

of difficult

242.72

allows you to do that kind of stuff

246.48

it allows you to also then have it

248.56

exposed you can come back later and do

251.04

you know documentation related stuff

252.64

through the dock

254.48

so let's pick

255.84

uh let's go here

258.32

let's do another

259.68

uh next one we'll do is let's go ahead

262.079

and do

263.44

code i think we have

265.36

done code

276.72

and

278.08

it's a

279.12

code is an object um i think i need to

284.32

get

286.32

let's see

289.199

i don't know if that's gonna work let's

290.4

try this real quick i think you could

292

get it

293.12

uh no it just gives me a code object

296.88

so it doesn't give it in a i don't get

298.96

in a string format

300.96

but what i do get is i get this code

303.84

object so i could actually when we talk

305.84

about lambdas and think lambdas and

307.36

things like that i could actually do

309.28

stuff

310.639

with that

312.479

i can actually push stuff around and

314.4

actually call things

317.12

based on that

319.199

again it's so that you can get all of

320.72

the different you can actually dissect

322.96

basically your functions

325.759

uh annotations i didn't see anything on

328.08

it but there are

329.84

i haven't really gone into annotations

331.52

too much

332.479

but you can get that if you have those

335.6

call is going to actually call it

338.96

so

340

instead of doing this way you could

342.479

actually do it as a call which makes

344.32

very little sense we've talked about

346.16

class

349.36

if we look at defaults that's one i'm

352.32

pretty sure that's up there let's see so

354.479

we did doc

357.199

so we're seeing what we did oh now we

359.12

did name

362.88

oh let's do call name

364.639

let's do that first well if we do

367.12

defaults just because i was taking that

369.36

in order there aren't any

371.52

because i didn't do it but if i do a

373.6

equals zero

375.68

b equals zero

381.039

then i can see what my default values

383.039

are

383.919

so i can see what the defaults are if

386.479

i'm trying again if i'm trying to

387.68

dynamically create stuff i can figure it

390

out through there

391.28

uh let's do call name

395.759

oh we did string we didn't do names so

397.36

if i do

399.6

let's look at name

403.36

and call name

408.56

if we look at those two

410.479

then it's going to be the same one um

413.599

it depends it basically depends on

415.039

whether or not you're within a module or

416.24

something like that then you can see

418.16

you can see things that get aliased out

421.599

but if you want to actually get the name

422.8

of the function so string is a string of

425.36

the function

427.12

the or underscore underscore str it's

429.68

the function itself it's not

432.639

you know the name

434.24

so normally you're going to want to work

435.36

with the name instead of the name or the

437.759

call name

439.039

uh the mod we've talked about module we

441.759

see defaults code

444.24

and note here this is the

446

it's the compiled function body

448.4

but you can also actually

450.96

replace stuff on the fly

453.28

um

455.599

let's do globals

460.08

and what we're going to see here

464.639

if we jump to this one is

469.44

uh starting here to

474.639

here

476.319

um these are all the different things we

477.759

can call on it and we've seen this

479.84

before with when we're looking at

482

classes

483.919

but you can see here that it's like some

485.44

of the things we've seen we've got name

486.879

a main a doc

490.24

which is yeah none

493.919

uh what package you're in

495.919

uh loader the blah blah blah blah blah

498.8

we talked about now supplications let's

500.479

do spec

501.84

and

502.879

um

505.68

so let's do

507.52

let's pick up a couple of these let's go

509.12

look at

512.32

spec

516.719

and let's look at

522.159

let's see

524.88

let's do file

529.44

so if we look at those two

533.279

uh it doesn't have

535.2

a spec attribute

542.32

um even though it

544.24

is there it's because it's not oh there

546

it is because it is none but i could

547.519

write to it uh file file file and it's

550.88

gonna show what file it's in so let's

552.959

get that

555.04

uh oh it doesn't have it

558.08

um which is interesting even though it

560.48

says here oh it's a global these are the

562.24

globals available to it

567.519

so i can take aldo so i can see

570.399

uh it's not this

573.04

if i do this

575.76

then i get to see it so i'm sorry those

577.68

are

578.48

um these are all the globals that are

580

available within that function

583.04

uh

585.279

so we've got

586.8

uh dictionary is one that we uh let's go

589.36

here dick

592.16

which is my funk so

596.399

oh

598.56

so if we do the dictionary let's take a

600.32

look at that guy

601.839

so see here it doesn't have anything uh

605.04

this is really not anything

606.8

notable of it

608.56

um

609.76

where'd it go

611.68

but it's basically for uh

614.88

if i had an additional attribute within

617.76

the function if i did

622.399

let's try like name equals

626

this function

627.76

i think then we will see that it'll show

630.079

up

631.36

nope nope it doesn't because it's not oh

632.72

because it's an attribute of the

633.68

function that we we could add to we

635.92

haven't

636.959

so it would be more like

639.6

my funk dot

642.16

um

646.4

[Music]

650.8

equals

652.16

custom value

655.04

and i think now i'll see yep there we go

656.959

so i can remember these things are all

659.279

dynamic so i can actually add stuff i

661.36

can slap all kinds of attributes onto

663.04

things

664

and so dictionary gives me that

667.68

let's see closure

674.079

be the last one

677.12

of these

679.519

whoop just do it this way

685.839

and let's take a look at that after our

687.519

little custom value and there isn't any

689.76

because what you get from closure

692

is um

698.24

uh it's bindings this would be if you

701.279

are

705.12

if you're using some sort of hints and

706.56

stuff like that and i think you're going

707.76

to end up getting what you see kw

710.399

defaults let's go ahead and do that one

714.839

whoop

716.8

there

717.68

do that that

724.88

well

730.399

and let's go and take that one in and we

732

don't have any setup there as well

734.88

and this goes into

737.6

depending on how you build out your

740.88

your function whether you have some

743.04

variable arguments and things of that

744.8

nature

746.56

you really uh the one i ran into

749.92

was

752

um

753.6

bases

754.88

and that would be

756.639

uh let me see if i can get a class

758.399

example real quick

760.56

uh let me do i think i have simple and

763.2

less simple let's take those two guys

769.92

let's add those into here

775.6

and now do

776.959

um

782.959

oh there basis i think i can do it at

785.36

the class level we're gonna find out

787.44

yes i can

788.72

oh it's an object so i need to do

793.44

let's pull ls

796.72

whoop

801.44

let me do that

805.839

whoop

808.399

dope

816.399

i can remember how i'm doing stuff

818.56

um

824.88

oh and so he doesn't have oh so i do

826.48

have to do it up at the class level

832.88

and i should see oh

839.36

oh i'm sorry i didn't actually do

841.12

inheritance my mistake so let's say less

844.16

simple inherits from simple

854.839

uh

856.48

let me remember the

862.88

let me just do it this way let's take

864.72

these guys that'll be easier

870

uh

872.16

extras

875.12

let's go here

876.56

whoop

879.199

and we're going to bring this guy and

881.6

now

883.279

let's do less simple

886.399

and now we see

888.24

that it actually has a base of

890.72

simple

892.399

before

894.079

so if i do

895.199

simple

902.48

which is what i had before

905.44

then there's nothing it's only an object

907.68

you can just see where that is our

909.519

object now if i do um and let me show

912.959

you this so if i do less simple

917.6

and then i even do

923.839

even less simple which inherits from

926.72

less simple

928.8

and then come in here

931.6

because this gets to the point of the

933.759

actual

934.88

question they had

938.16

so if i look at even less simple

940.88

when i look at bases

942.88

it doesn't give me the

945.199

hierarchy it gives me what it inherits

947.92

from

948.88

so if i use multiple inheritance so if i

951.519

did less simple and simple

954.639

then it's going to show me both of them

957.199

but this shows you when you do basis

958.959

this is

959.839

what directly do you inherit from it

962.56

doesn't necessarily show you the

966.24

inheritance hierarchy it is what is your

969.199

parent

970.639

and that which you know we see every

972.56

class

973.6

the parent is at least object

976.959

and that was one of the things on the

978.16

test

979.12

um or at least the example that i looked

981.04

at

983.04

so these are things that came up as

986.639

items that were on the test that i had

988.48

not

989.839

covered as much in some of these prior

991.519

ones

992.72

another caveat as this may be i said i

995.759

may do one more we'll have to see i'll

997.199

see how i feel about it or what i come

999.279

across when i go through uh doing the

1001.04

certification test

1002.88

uh actually probably do another i'll

1004.56

probably do a couple of samples and

1005.839

maybe even take the test before i do a

1007.92

wrap-up

1008.88

review of this series

1011.36

another thing that i've noticed in

1013.279

looking through taking some of the

1014.88

questions

1016.079

is

1016.88

read them

1018.88

thoroughly

1020.079

there are some

1022.32

that i guess i would call trick

1024.48

questions

1026.88

because they do something that

1029.839

uh either in the name or

1032.64

in

1033.679

like maybe overwriting a variable or

1035.28

something like that it's sort of

1037.28

it looks very straightforward but if

1038.799

you're not paying close attention to the

1041.039

variable names and things like that then

1042.88

you may you'll get confused fairly

1045.039

easily

1046.72

another one is to know

1050.559

which we haven't spent a ton of time

1051.919

i've seen some you've seen some examples

1053.52

of it is when things are uh invalid

1057.28

when you're gonna get

1058.72

errors uh such as i probably had one up

1061.52

here not too

1063.52

far back yeah

1064.88

kinds of things like this where you're

1066.64

going to get

1067.6

an error of some port sort as opposed to

1072.16

the code actually running or the code

1073.919

like a and that would be things like if

1075.919

you do divide by zero and things like

1077.52

that

1079.2

knowing what

1080.559

are you going to see what is it going to

1082

tell you roughly so if i did

1084.72

if i go to here and i do

1086.72

1 over 0

1089.52

a string of 1 over 0. well actually i

1092.72

don't even have to do that i can just do

1094.64

x equals one divided by zero

1098.72

then i'm gonna get a division by arrow

1100.799

division by zero error so those sorts of

1103.2

things be sure you're so comfortable

1104.48

with what's going to blow it up and what

1107.039

is gonna give you something else

1109.6

yeah and it and some of it is

1111.76

math stuff so if i do that

1114.32

then i note here that okay that's just

1116.24

gonna give me zero over one um those are

1118.96

the things that i think show up in sort

1120.559

of understanding the exceptions they can

1123.44

be stuff that we overlook a little bit

1124.96

but when we get into the test those are

1126.559

the kinds of things they will ask you

1128.32

about and

1130.559

when you look at passing uh just having

1133.2

more comfort with those

1134.88

and particularly this is if you're doing

1136.4

if you do a lot of examples you do a lot

1137.76

of coding just sort of flying through

1139.039

not copying and pasting stuff but

1141.12

actually

1142.24

going through and writing and modifying

1144.24

code

1145.6

you'll run into enough of these they

1147.039

will become sort of second nature to you

1148.799

they'll seem like much easier questions

1152.799

which goes to

1154.32

going through this series is i would

1156.559

think very helpful

1158.4

but because we because of the topics we

1160.799

cover to give you a good idea of what

1162.32

needs to be in your head when you get

1164.96

into the certification

1167.2

but that being said there are

1170.48

there is a lot to be gained by

1172.64

playing around so take these uh and this

1175.52

all this stuff is out in the repository

1177.84

um and you can see links to the the

1180.16

github repository for this uh in the

1182.48

show notes

1184.4

take a look at them maybe write a couple

1186.08

little apps of your own that just do

1188

some little utility things or something

1189.44

like that

1190.559

playing around with a lot of this stuff

1192.48

so that you can get a feel for

1196.16

how these things work and

1198.16

really

1200.32

embed it in your mind a little bit more

1202.24

yeah there's one thing to hear about it

1203.84

and see it it's usually a lot more a lot

1206.24

gonna be retained better if you do it

1209.76

and i think i've gone long enough i've

1211.28

been long-winded enough this time so i'm

1213.28

gonna go uh i'm gonna go play around and

1215.12

see if i can get up get my certification

1217.44

and then come back around and let you

1219.36

guys know how it went

1221.2

but

1222.4

go out there have yourself a great day a

1224.559

great week and we will talk to you

1226.96

next time

1243.039

you