ftp client/server for asyncio
Project description
.
.
a
i
o
f
t
p
d
o
c
u
m
e
n
t
a
t
i
o
n
m
a
s
t
e
r
f
i
l
e
,
c
r
e
a
t
e
d
b
y
s
p
h
i
n
x
-
q
u
i
c
k
s
t
a
r
t
o
n
F
r
i
A
p
r
1
7
1
6
:
2
1
:
0
3
2
0
1
5
.
Y
o
u
c
a
n
a
d
a
p
t
t
h
i
s
f
i
l
e
c
o
m
p
l
e
t
e
l
y
t
o
y
o
u
r
l
i
k
i
n
g
,
b
u
t
i
t
s
h
o
u
l
d
a
t
l
e
a
s
t
c
o
n
t
a
i
n
t
h
e
r
o
o
t
`
t
o
c
t
r
e
e
`
d
i
r
e
c
t
i
v
e
.
a
i
o
f
t
p
=
=
=
=
=
=
.
.
i
m
a
g
e
:
:
h
t
t
p
s
:
/
/
i
m
g
.
s
h
i
e
l
d
s
.
i
o
/
t
r
a
v
i
s
/
p
o
h
m
e
l
i
e
/
a
i
o
f
t
p
.
s
v
g
:
t
a
r
g
e
t
:
h
t
t
p
s
:
/
/
t
r
a
v
i
s
-
c
i
.
o
r
g
/
p
o
h
m
e
l
i
e
/
a
i
o
f
t
p
.
.
i
m
a
g
e
:
:
h
t
t
p
s
:
/
/
i
m
g
.
s
h
i
e
l
d
s
.
i
o
/
c
o
v
e
r
a
l
l
s
/
p
o
h
m
e
l
i
e
/
a
i
o
f
t
p
.
s
v
g
:
t
a
r
g
e
t
:
h
t
t
p
s
:
/
/
c
o
v
e
r
a
l
l
s
.
i
o
/
g
i
t
h
u
b
/
p
o
h
m
e
l
i
e
/
a
i
o
f
t
p
.
.
i
m
a
g
e
:
:
h
t
t
p
s
:
/
/
i
m
g
.
s
h
i
e
l
d
s
.
i
o
/
p
y
p
i
/
v
/
a
i
o
f
t
p
.
s
v
g
:
t
a
r
g
e
t
:
h
t
t
p
s
:
/
/
p
y
p
i
.
p
y
t
h
o
n
.
o
r
g
/
p
y
p
i
/
a
i
o
f
t
p
.
.
i
m
a
g
e
:
:
h
t
t
p
s
:
/
/
i
m
g
.
s
h
i
e
l
d
s
.
i
o
/
p
y
p
i
/
p
y
v
e
r
s
i
o
n
s
/
a
i
o
f
t
p
.
s
v
g
:
t
a
r
g
e
t
:
h
t
t
p
s
:
/
/
p
y
p
i
.
p
y
t
h
o
n
.
o
r
g
/
p
y
p
i
/
a
i
o
f
t
p
f
t
p
c
l
i
e
n
t
/
s
e
r
v
e
r
f
o
r
a
s
y
n
c
i
o
.
(
h
t
t
p
:
/
/
a
i
o
f
t
p
.
r
e
a
d
t
h
e
d
o
c
s
.
o
r
g
)
.
.
_
G
i
t
H
u
b
:
h
t
t
p
s
:
/
/
g
i
t
h
u
b
.
c
o
m
/
p
o
h
m
e
l
i
e
/
a
i
o
f
t
p
F
e
a
t
u
r
e
s
-
-
-
-
-
-
-
-
-
S
i
m
p
l
e
.
-
E
x
t
e
n
s
i
b
l
e
.
-
P
r
o
x
y
v
i
a
`
t
w
u
n
n
e
l
3
<
h
t
t
p
s
:
/
/
g
i
t
h
u
b
.
c
o
m
/
j
v
a
n
s
t
e
i
r
t
e
g
h
e
m
/
t
w
u
n
n
e
l
3
>
`
_
.
G
o
a
l
s
-
-
-
-
-
-
M
i
n
i
m
u
m
u
s
a
b
l
e
c
o
r
e
.
-
D
o
n
o
t
u
s
e
d
e
p
r
e
c
a
t
e
d
o
r
o
v
e
r
r
i
d
d
e
n
c
o
m
m
a
n
d
s
a
n
d
f
e
a
t
u
r
e
s
(
i
f
p
o
s
s
i
b
l
e
)
.
-
V
e
r
y
h
i
g
h
l
e
v
e
l
a
p
i
.
C
l
i
e
n
t
u
s
e
t
h
i
s
c
o
m
m
a
n
d
s
:
U
S
E
R
,
P
A
S
S
,
A
C
C
T
,
P
W
D
,
C
W
D
,
C
D
U
P
,
M
K
D
,
R
M
D
,
M
L
S
D
,
M
L
S
T
,
R
N
F
R
,
R
N
T
O
,
D
E
L
E
,
S
T
O
R
,
A
P
P
E
,
R
E
T
R
,
T
Y
P
E
,
P
A
S
V
,
A
B
O
R
,
Q
U
I
T
S
e
r
v
e
r
s
u
p
p
o
r
t
t
h
i
s
c
o
m
m
a
n
d
s
:
U
S
E
R
,
P
A
S
S
,
Q
U
I
T
,
P
W
D
,
C
W
D
,
C
D
U
P
,
M
K
D
,
R
M
D
,
M
L
S
D
,
L
I
S
T
(
b
u
t
i
t
'
s
n
o
t
r
e
c
o
m
m
e
n
d
e
d
t
o
u
s
e
i
t
,
c
a
u
s
e
i
t
h
a
s
n
o
s
t
a
n
d
a
r
d
f
o
r
m
a
t
)
,
M
L
S
T
,
R
N
F
R
,
R
N
T
O
,
D
E
L
E
,
S
T
O
R
,
R
E
T
R
,
T
Y
P
E
(
o
n
l
y
"
I
"
)
,
P
A
S
V
,
A
B
O
R
,
A
P
P
E
T
h
i
s
s
u
b
s
e
t
s
a
r
e
e
n
o
u
g
h
f
o
r
9
9
%
o
f
t
a
s
k
s
,
b
u
t
i
f
y
o
u
n
e
e
d
s
o
m
e
t
h
i
n
g
,
t
h
e
n
y
o
u
c
a
n
e
a
s
i
l
y
e
x
t
e
n
d
c
u
r
r
e
n
t
s
e
t
o
f
c
o
m
m
a
n
d
s
.
D
e
p
e
n
d
e
n
c
i
e
s
-
-
-
-
-
-
-
-
-
-
-
-
-
P
y
t
h
o
n
3
.
4
.
2
+
-
d
o
c
o
p
t
(
f
o
r
e
x
e
c
u
t
i
o
n
m
o
d
u
l
e
a
s
s
c
r
i
p
t
o
n
l
y
)
L
i
c
e
n
s
e
-
-
-
-
-
-
-
a
i
o
f
t
p
i
s
o
f
f
e
r
e
d
u
n
d
e
r
t
h
e
A
p
a
c
h
e
2
l
i
c
e
n
s
e
.
L
i
b
r
a
r
y
I
n
s
t
a
l
l
a
t
i
o
n
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
:
:
p
i
p
i
n
s
t
a
l
l
a
i
o
f
t
p
G
e
t
t
i
n
g
s
t
a
r
t
e
d
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
C
l
i
e
n
t
e
x
a
m
p
l
e
.
.
c
o
d
e
-
b
l
o
c
k
:
:
p
y
t
h
o
n
i
m
p
o
r
t
a
s
y
n
c
i
o
i
m
p
o
r
t
a
i
o
f
t
p
@
a
s
y
n
c
i
o
.
c
o
r
o
u
t
i
n
e
d
e
f
g
e
t
_
m
p
3
(
h
o
s
t
,
l
o
g
i
n
,
p
a
s
s
w
o
r
d
)
:
c
l
i
e
n
t
=
a
i
o
f
t
p
.
C
l
i
e
n
t
(
)
y
i
e
l
d
f
r
o
m
c
l
i
e
n
t
.
c
o
n
n
e
c
t
(
h
o
s
t
)
y
i
e
l
d
f
r
o
m
c
l
i
e
n
t
.
l
o
g
i
n
(
l
o
g
i
n
,
p
a
s
s
w
o
r
d
)
f
o
r
p
a
t
h
,
i
n
f
o
i
n
(
y
i
e
l
d
f
r
o
m
c
l
i
e
n
t
.
l
i
s
t
(
r
e
c
u
r
s
i
v
e
=
T
r
u
e
)
)
:
i
f
i
n
f
o
[
"
t
y
p
e
"
]
=
=
"
f
i
l
e
"
a
n
d
p
a
t
h
.
s
u
f
f
i
x
=
=
"
.
m
p
3
"
:
y
i
e
l
d
f
r
o
m
c
l
i
e
n
t
.
d
o
w
n
l
o
a
d
(
p
a
t
h
)
l
o
o
p
=
a
s
y
n
c
i
o
.
g
e
t
_
e
v
e
n
t
_
l
o
o
p
(
)
t
a
s
k
s
=
(
g
e
t
_
m
p
3
(
"
s
e
r
v
e
r
1
.
c
o
m
"
,
"
l
o
g
i
n
"
,
"
p
a
s
s
w
o
r
d
"
)
)
,
g
e
t
_
m
p
3
(
"
s
e
r
v
e
r
2
.
c
o
m
"
,
"
l
o
g
i
n
"
,
"
p
a
s
s
w
o
r
d
"
)
)
,
g
e
t
_
m
p
3
(
"
s
e
r
v
e
r
3
.
c
o
m
"
,
"
l
o
g
i
n
"
,
"
p
a
s
s
w
o
r
d
"
)
)
,
)
l
o
o
p
.
r
u
n
_
u
n
t
i
l
_
c
o
m
p
l
e
t
e
(
a
s
y
n
c
i
o
.
w
a
i
t
(
t
a
s
k
s
)
)
l
o
o
p
.
c
l
o
s
e
(
)
S
e
r
v
e
r
e
x
a
m
p
l
e
.
.
c
o
d
e
-
b
l
o
c
k
:
:
p
y
t
h
o
n
i
m
p
o
r
t
a
s
y
n
c
i
o
i
m
p
o
r
t
a
i
o
f
t
p
l
o
o
p
=
a
s
y
n
c
i
o
.
g
e
t
_
e
v
e
n
t
_
l
o
o
p
(
)
s
e
r
v
e
r
=
a
i
o
f
t
p
.
S
e
r
v
e
r
(
)
l
o
o
p
.
r
u
n
_
u
n
t
i
l
_
c
o
m
p
l
e
t
e
(
s
e
r
v
e
r
.
s
t
a
r
t
(
N
o
n
e
,
8
0
2
1
)
)
t
r
y
:
l
o
o
p
.
r
u
n
_
f
o
r
e
v
e
r
(
)
e
x
c
e
p
t
K
e
y
b
o
a
r
d
I
n
t
e
r
r
u
p
t
:
s
e
r
v
e
r
.
c
l
o
s
e
(
)
l
o
o
p
.
r
u
n
_
u
n
t
i
l
_
c
o
m
p
l
e
t
e
(
s
e
r
v
e
r
.
w
a
i
t
_
c
l
o
s
e
d
(
)
)
l
o
o
p
.
c
l
o
s
e
(
)
O
r
j
u
s
t
u
s
e
s
i
m
p
l
e
s
e
r
v
e
r
.
.
c
o
d
e
-
b
l
o
c
k
:
:
s
h
e
l
l
p
y
t
h
o
n
-
m
a
i
o
f
t
p
-
-
h
e
l
p
.
a
i
o
f
t
p
d
o
c
u
m
e
n
t
a
t
i
o
n
m
a
s
t
e
r
f
i
l
e
,
c
r
e
a
t
e
d
b
y
s
p
h
i
n
x
-
q
u
i
c
k
s
t
a
r
t
o
n
F
r
i
A
p
r
1
7
1
6
:
2
1
:
0
3
2
0
1
5
.
Y
o
u
c
a
n
a
d
a
p
t
t
h
i
s
f
i
l
e
c
o
m
p
l
e
t
e
l
y
t
o
y
o
u
r
l
i
k
i
n
g
,
b
u
t
i
t
s
h
o
u
l
d
a
t
l
e
a
s
t
c
o
n
t
a
i
n
t
h
e
r
o
o
t
`
t
o
c
t
r
e
e
`
d
i
r
e
c
t
i
v
e
.
a
i
o
f
t
p
=
=
=
=
=
=
.
.
i
m
a
g
e
:
:
h
t
t
p
s
:
/
/
i
m
g
.
s
h
i
e
l
d
s
.
i
o
/
t
r
a
v
i
s
/
p
o
h
m
e
l
i
e
/
a
i
o
f
t
p
.
s
v
g
:
t
a
r
g
e
t
:
h
t
t
p
s
:
/
/
t
r
a
v
i
s
-
c
i
.
o
r
g
/
p
o
h
m
e
l
i
e
/
a
i
o
f
t
p
.
.
i
m
a
g
e
:
:
h
t
t
p
s
:
/
/
i
m
g
.
s
h
i
e
l
d
s
.
i
o
/
c
o
v
e
r
a
l
l
s
/
p
o
h
m
e
l
i
e
/
a
i
o
f
t
p
.
s
v
g
:
t
a
r
g
e
t
:
h
t
t
p
s
:
/
/
c
o
v
e
r
a
l
l
s
.
i
o
/
g
i
t
h
u
b
/
p
o
h
m
e
l
i
e
/
a
i
o
f
t
p
.
.
i
m
a
g
e
:
:
h
t
t
p
s
:
/
/
i
m
g
.
s
h
i
e
l
d
s
.
i
o
/
p
y
p
i
/
v
/
a
i
o
f
t
p
.
s
v
g
:
t
a
r
g
e
t
:
h
t
t
p
s
:
/
/
p
y
p
i
.
p
y
t
h
o
n
.
o
r
g
/
p
y
p
i
/
a
i
o
f
t
p
.
.
i
m
a
g
e
:
:
h
t
t
p
s
:
/
/
i
m
g
.
s
h
i
e
l
d
s
.
i
o
/
p
y
p
i
/
p
y
v
e
r
s
i
o
n
s
/
a
i
o
f
t
p
.
s
v
g
:
t
a
r
g
e
t
:
h
t
t
p
s
:
/
/
p
y
p
i
.
p
y
t
h
o
n
.
o
r
g
/
p
y
p
i
/
a
i
o
f
t
p
f
t
p
c
l
i
e
n
t
/
s
e
r
v
e
r
f
o
r
a
s
y
n
c
i
o
.
(
h
t
t
p
:
/
/
a
i
o
f
t
p
.
r
e
a
d
t
h
e
d
o
c
s
.
o
r
g
)
.
.
_
G
i
t
H
u
b
:
h
t
t
p
s
:
/
/
g
i
t
h
u
b
.
c
o
m
/
p
o
h
m
e
l
i
e
/
a
i
o
f
t
p
F
e
a
t
u
r
e
s
-
-
-
-
-
-
-
-
-
S
i
m
p
l
e
.
-
E
x
t
e
n
s
i
b
l
e
.
-
P
r
o
x
y
v
i
a
`
t
w
u
n
n
e
l
3
<
h
t
t
p
s
:
/
/
g
i
t
h
u
b
.
c
o
m
/
j
v
a
n
s
t
e
i
r
t
e
g
h
e
m
/
t
w
u
n
n
e
l
3
>
`
_
.
G
o
a
l
s
-
-
-
-
-
-
M
i
n
i
m
u
m
u
s
a
b
l
e
c
o
r
e
.
-
D
o
n
o
t
u
s
e
d
e
p
r
e
c
a
t
e
d
o
r
o
v
e
r
r
i
d
d
e
n
c
o
m
m
a
n
d
s
a
n
d
f
e
a
t
u
r
e
s
(
i
f
p
o
s
s
i
b
l
e
)
.
-
V
e
r
y
h
i
g
h
l
e
v
e
l
a
p
i
.
C
l
i
e
n
t
u
s
e
t
h
i
s
c
o
m
m
a
n
d
s
:
U
S
E
R
,
P
A
S
S
,
A
C
C
T
,
P
W
D
,
C
W
D
,
C
D
U
P
,
M
K
D
,
R
M
D
,
M
L
S
D
,
M
L
S
T
,
R
N
F
R
,
R
N
T
O
,
D
E
L
E
,
S
T
O
R
,
A
P
P
E
,
R
E
T
R
,
T
Y
P
E
,
P
A
S
V
,
A
B
O
R
,
Q
U
I
T
S
e
r
v
e
r
s
u
p
p
o
r
t
t
h
i
s
c
o
m
m
a
n
d
s
:
U
S
E
R
,
P
A
S
S
,
Q
U
I
T
,
P
W
D
,
C
W
D
,
C
D
U
P
,
M
K
D
,
R
M
D
,
M
L
S
D
,
L
I
S
T
(
b
u
t
i
t
'
s
n
o
t
r
e
c
o
m
m
e
n
d
e
d
t
o
u
s
e
i
t
,
c
a
u
s
e
i
t
h
a
s
n
o
s
t
a
n
d
a
r
d
f
o
r
m
a
t
)
,
M
L
S
T
,
R
N
F
R
,
R
N
T
O
,
D
E
L
E
,
S
T
O
R
,
R
E
T
R
,
T
Y
P
E
(
o
n
l
y
"
I
"
)
,
P
A
S
V
,
A
B
O
R
,
A
P
P
E
T
h
i
s
s
u
b
s
e
t
s
a
r
e
e
n
o
u
g
h
f
o
r
9
9
%
o
f
t
a
s
k
s
,
b
u
t
i
f
y
o
u
n
e
e
d
s
o
m
e
t
h
i
n
g
,
t
h
e
n
y
o
u
c
a
n
e
a
s
i
l
y
e
x
t
e
n
d
c
u
r
r
e
n
t
s
e
t
o
f
c
o
m
m
a
n
d
s
.
D
e
p
e
n
d
e
n
c
i
e
s
-
-
-
-
-
-
-
-
-
-
-
-
-
P
y
t
h
o
n
3
.
4
.
2
+
-
d
o
c
o
p
t
(
f
o
r
e
x
e
c
u
t
i
o
n
m
o
d
u
l
e
a
s
s
c
r
i
p
t
o
n
l
y
)
L
i
c
e
n
s
e
-
-
-
-
-
-
-
a
i
o
f
t
p
i
s
o
f
f
e
r
e
d
u
n
d
e
r
t
h
e
A
p
a
c
h
e
2
l
i
c
e
n
s
e
.
L
i
b
r
a
r
y
I
n
s
t
a
l
l
a
t
i
o
n
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
:
:
p
i
p
i
n
s
t
a
l
l
a
i
o
f
t
p
G
e
t
t
i
n
g
s
t
a
r
t
e
d
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
C
l
i
e
n
t
e
x
a
m
p
l
e
.
.
c
o
d
e
-
b
l
o
c
k
:
:
p
y
t
h
o
n
i
m
p
o
r
t
a
s
y
n
c
i
o
i
m
p
o
r
t
a
i
o
f
t
p
@
a
s
y
n
c
i
o
.
c
o
r
o
u
t
i
n
e
d
e
f
g
e
t
_
m
p
3
(
h
o
s
t
,
l
o
g
i
n
,
p
a
s
s
w
o
r
d
)
:
c
l
i
e
n
t
=
a
i
o
f
t
p
.
C
l
i
e
n
t
(
)
y
i
e
l
d
f
r
o
m
c
l
i
e
n
t
.
c
o
n
n
e
c
t
(
h
o
s
t
)
y
i
e
l
d
f
r
o
m
c
l
i
e
n
t
.
l
o
g
i
n
(
l
o
g
i
n
,
p
a
s
s
w
o
r
d
)
f
o
r
p
a
t
h
,
i
n
f
o
i
n
(
y
i
e
l
d
f
r
o
m
c
l
i
e
n
t
.
l
i
s
t
(
r
e
c
u
r
s
i
v
e
=
T
r
u
e
)
)
:
i
f
i
n
f
o
[
"
t
y
p
e
"
]
=
=
"
f
i
l
e
"
a
n
d
p
a
t
h
.
s
u
f
f
i
x
=
=
"
.
m
p
3
"
:
y
i
e
l
d
f
r
o
m
c
l
i
e
n
t
.
d
o
w
n
l
o
a
d
(
p
a
t
h
)
l
o
o
p
=
a
s
y
n
c
i
o
.
g
e
t
_
e
v
e
n
t
_
l
o
o
p
(
)
t
a
s
k
s
=
(
g
e
t
_
m
p
3
(
"
s
e
r
v
e
r
1
.
c
o
m
"
,
"
l
o
g
i
n
"
,
"
p
a
s
s
w
o
r
d
"
)
)
,
g
e
t
_
m
p
3
(
"
s
e
r
v
e
r
2
.
c
o
m
"
,
"
l
o
g
i
n
"
,
"
p
a
s
s
w
o
r
d
"
)
)
,
g
e
t
_
m
p
3
(
"
s
e
r
v
e
r
3
.
c
o
m
"
,
"
l
o
g
i
n
"
,
"
p
a
s
s
w
o
r
d
"
)
)
,
)
l
o
o
p
.
r
u
n
_
u
n
t
i
l
_
c
o
m
p
l
e
t
e
(
a
s
y
n
c
i
o
.
w
a
i
t
(
t
a
s
k
s
)
)
l
o
o
p
.
c
l
o
s
e
(
)
S
e
r
v
e
r
e
x
a
m
p
l
e
.
.
c
o
d
e
-
b
l
o
c
k
:
:
p
y
t
h
o
n
i
m
p
o
r
t
a
s
y
n
c
i
o
i
m
p
o
r
t
a
i
o
f
t
p
l
o
o
p
=
a
s
y
n
c
i
o
.
g
e
t
_
e
v
e
n
t
_
l
o
o
p
(
)
s
e
r
v
e
r
=
a
i
o
f
t
p
.
S
e
r
v
e
r
(
)
l
o
o
p
.
r
u
n
_
u
n
t
i
l
_
c
o
m
p
l
e
t
e
(
s
e
r
v
e
r
.
s
t
a
r
t
(
N
o
n
e
,
8
0
2
1
)
)
t
r
y
:
l
o
o
p
.
r
u
n
_
f
o
r
e
v
e
r
(
)
e
x
c
e
p
t
K
e
y
b
o
a
r
d
I
n
t
e
r
r
u
p
t
:
s
e
r
v
e
r
.
c
l
o
s
e
(
)
l
o
o
p
.
r
u
n
_
u
n
t
i
l
_
c
o
m
p
l
e
t
e
(
s
e
r
v
e
r
.
w
a
i
t
_
c
l
o
s
e
d
(
)
)
l
o
o
p
.
c
l
o
s
e
(
)
O
r
j
u
s
t
u
s
e
s
i
m
p
l
e
s
e
r
v
e
r
.
.
c
o
d
e
-
b
l
o
c
k
:
:
s
h
e
l
l
p
y
t
h
o
n
-
m
a
i
o
f
t
p
-
-
h
e
l
p
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
aioftp-0.3.0.tar.gz
(40.8 kB
view hashes)
Built Distribution
aioftp-0.3.0-py3-none-any.whl
(27.4 kB
view hashes)