IEEE.org
|
IEEE Xplore Digital Library
|
IEEE Standards
|
IEEE Spectrum
|
More Sites
Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Open at RIT
Accessibility
tex2html
Commits
72328b2e
Commit
72328b2e
authored
Jun 22, 2021
by
Suhas CV
Browse files
docker build
parent
2599acca
Changes
868
Expand all
Hide whitespace changes
Inline
Side-by-side
venv/lib/python3.8/site-packages/click/exceptions.py
deleted
100644 → 0
View file @
2599acca
import
os
import
typing
as
t
from
gettext
import
gettext
as
_
from
gettext
import
ngettext
from
._compat
import
get_text_stderr
from
.utils
import
echo
if
t
.
TYPE_CHECKING
:
from
.core
import
Context
from
.core
import
Parameter
def
_join_param_hints
(
param_hint
:
t
.
Optional
[
t
.
Union
[
t
.
Sequence
[
str
],
str
]]
)
->
t
.
Optional
[
str
]:
if
param_hint
is
not
None
and
not
isinstance
(
param_hint
,
str
):
return
" / "
.
join
(
repr
(
x
)
for
x
in
param_hint
)
return
param_hint
class
ClickException
(
Exception
):
"""An exception that Click can handle and show to the user."""
#: The exit code for this exception.
exit_code
=
1
def
__init__
(
self
,
message
:
str
)
->
None
:
super
().
__init__
(
message
)
self
.
message
=
message
def
format_message
(
self
)
->
str
:
return
self
.
message
def
__str__
(
self
)
->
str
:
return
self
.
message
def
show
(
self
,
file
:
t
.
Optional
[
t
.
IO
]
=
None
)
->
None
:
if
file
is
None
:
file
=
get_text_stderr
()
echo
(
_
(
"Error: {message}"
).
format
(
message
=
self
.
format_message
()),
file
=
file
)
class
UsageError
(
ClickException
):
"""An internal exception that signals a usage error. This typically
aborts any further handling.
:param message: the error message to display.
:param ctx: optionally the context that caused this error. Click will
fill in the context automatically in some situations.
"""
exit_code
=
2
def
__init__
(
self
,
message
:
str
,
ctx
:
t
.
Optional
[
"Context"
]
=
None
)
->
None
:
super
().
__init__
(
message
)
self
.
ctx
=
ctx
self
.
cmd
=
self
.
ctx
.
command
if
self
.
ctx
else
None
def
show
(
self
,
file
:
t
.
Optional
[
t
.
IO
]
=
None
)
->
None
:
if
file
is
None
:
file
=
get_text_stderr
()
color
=
None
hint
=
""
if
(
self
.
ctx
is
not
None
and
self
.
ctx
.
command
.
get_help_option
(
self
.
ctx
)
is
not
None
):
hint
=
_
(
"Try '{command} {option}' for help."
).
format
(
command
=
self
.
ctx
.
command_path
,
option
=
self
.
ctx
.
help_option_names
[
0
]
)
hint
=
f
"
{
hint
}
\n
"
if
self
.
ctx
is
not
None
:
color
=
self
.
ctx
.
color
echo
(
f
"
{
self
.
ctx
.
get_usage
()
}
\n
{
hint
}
"
,
file
=
file
,
color
=
color
)
echo
(
_
(
"Error: {message}"
).
format
(
message
=
self
.
format_message
()),
file
=
file
,
color
=
color
,
)
class
BadParameter
(
UsageError
):
"""An exception that formats out a standardized error message for a
bad parameter. This is useful when thrown from a callback or type as
Click will attach contextual information to it (for instance, which
parameter it is).
.. versionadded:: 2.0
:param param: the parameter object that caused this error. This can
be left out, and Click will attach this info itself
if possible.
:param param_hint: a string that shows up as parameter name. This
can be used as alternative to `param` in cases
where custom validation should happen. If it is
a string it's used as such, if it's a list then
each item is quoted and separated.
"""
def
__init__
(
self
,
message
:
str
,
ctx
:
t
.
Optional
[
"Context"
]
=
None
,
param
:
t
.
Optional
[
"Parameter"
]
=
None
,
param_hint
:
t
.
Optional
[
str
]
=
None
,
)
->
None
:
super
().
__init__
(
message
,
ctx
)
self
.
param
=
param
self
.
param_hint
=
param_hint
def
format_message
(
self
)
->
str
:
if
self
.
param_hint
is
not
None
:
param_hint
=
self
.
param_hint
elif
self
.
param
is
not
None
:
param_hint
=
self
.
param
.
get_error_hint
(
self
.
ctx
)
# type: ignore
else
:
return
_
(
"Invalid value: {message}"
).
format
(
message
=
self
.
message
)
return
_
(
"Invalid value for {param_hint}: {message}"
).
format
(
param_hint
=
_join_param_hints
(
param_hint
),
message
=
self
.
message
)
class
MissingParameter
(
BadParameter
):
"""Raised if click required an option or argument but it was not
provided when invoking the script.
.. versionadded:: 4.0
:param param_type: a string that indicates the type of the parameter.
The default is to inherit the parameter type from
the given `param`. Valid values are ``'parameter'``,
``'option'`` or ``'argument'``.
"""
def
__init__
(
self
,
message
:
t
.
Optional
[
str
]
=
None
,
ctx
:
t
.
Optional
[
"Context"
]
=
None
,
param
:
t
.
Optional
[
"Parameter"
]
=
None
,
param_hint
:
t
.
Optional
[
str
]
=
None
,
param_type
:
t
.
Optional
[
str
]
=
None
,
)
->
None
:
super
().
__init__
(
message
or
""
,
ctx
,
param
,
param_hint
)
self
.
param_type
=
param_type
def
format_message
(
self
)
->
str
:
if
self
.
param_hint
is
not
None
:
param_hint
:
t
.
Optional
[
str
]
=
self
.
param_hint
elif
self
.
param
is
not
None
:
param_hint
=
self
.
param
.
get_error_hint
(
self
.
ctx
)
# type: ignore
else
:
param_hint
=
None
param_hint
=
_join_param_hints
(
param_hint
)
param_hint
=
f
"
{
param_hint
}
"
if
param_hint
else
""
param_type
=
self
.
param_type
if
param_type
is
None
and
self
.
param
is
not
None
:
param_type
=
self
.
param
.
param_type_name
msg
=
self
.
message
if
self
.
param
is
not
None
:
msg_extra
=
self
.
param
.
type
.
get_missing_message
(
self
.
param
)
if
msg_extra
:
if
msg
:
msg
+=
f
".
{
msg_extra
}
"
else
:
msg
=
msg_extra
msg
=
f
"
{
msg
}
"
if
msg
else
""
# Translate param_type for known types.
if
param_type
==
"argument"
:
missing
=
_
(
"Missing argument"
)
elif
param_type
==
"option"
:
missing
=
_
(
"Missing option"
)
elif
param_type
==
"parameter"
:
missing
=
_
(
"Missing parameter"
)
else
:
missing
=
_
(
"Missing {param_type}"
).
format
(
param_type
=
param_type
)
return
f
"
{
missing
}{
param_hint
}
.
{
msg
}
"
def
__str__
(
self
)
->
str
:
if
not
self
.
message
:
param_name
=
self
.
param
.
name
if
self
.
param
else
None
return
_
(
"Missing parameter: {param_name}"
).
format
(
param_name
=
param_name
)
else
:
return
self
.
message
class
NoSuchOption
(
UsageError
):
"""Raised if click attempted to handle an option that does not
exist.
.. versionadded:: 4.0
"""
def
__init__
(
self
,
option_name
:
str
,
message
:
t
.
Optional
[
str
]
=
None
,
possibilities
:
t
.
Optional
[
t
.
Sequence
[
str
]]
=
None
,
ctx
:
t
.
Optional
[
"Context"
]
=
None
,
)
->
None
:
if
message
is
None
:
message
=
_
(
"No such option: {name}"
).
format
(
name
=
option_name
)
super
().
__init__
(
message
,
ctx
)
self
.
option_name
=
option_name
self
.
possibilities
=
possibilities
def
format_message
(
self
)
->
str
:
if
not
self
.
possibilities
:
return
self
.
message
possibility_str
=
", "
.
join
(
sorted
(
self
.
possibilities
))
suggest
=
ngettext
(
"Did you mean {possibility}?"
,
"(Possible options: {possibilities})"
,
len
(
self
.
possibilities
),
).
format
(
possibility
=
possibility_str
,
possibilities
=
possibility_str
)
return
f
"
{
self
.
message
}
{
suggest
}
"
class
BadOptionUsage
(
UsageError
):
"""Raised if an option is generally supplied but the use of the option
was incorrect. This is for instance raised if the number of arguments
for an option is not correct.
.. versionadded:: 4.0
:param option_name: the name of the option being used incorrectly.
"""
def
__init__
(
self
,
option_name
:
str
,
message
:
str
,
ctx
:
t
.
Optional
[
"Context"
]
=
None
)
->
None
:
super
().
__init__
(
message
,
ctx
)
self
.
option_name
=
option_name
class
BadArgumentUsage
(
UsageError
):
"""Raised if an argument is generally supplied but the use of the argument
was incorrect. This is for instance raised if the number of values
for an argument is not correct.
.. versionadded:: 6.0
"""
class
FileError
(
ClickException
):
"""Raised if a file cannot be opened."""
def
__init__
(
self
,
filename
:
str
,
hint
:
t
.
Optional
[
str
]
=
None
)
->
None
:
if
hint
is
None
:
hint
=
_
(
"unknown error"
)
super
().
__init__
(
hint
)
self
.
ui_filename
=
os
.
fsdecode
(
filename
)
self
.
filename
=
filename
def
format_message
(
self
)
->
str
:
return
_
(
"Could not open file {filename!r}: {message}"
).
format
(
filename
=
self
.
ui_filename
,
message
=
self
.
message
)
class
Abort
(
RuntimeError
):
"""An internal signalling exception that signals Click to abort."""
class
Exit
(
RuntimeError
):
"""An exception that indicates that the application should exit with some
status code.
:param code: the status code to exit with.
"""
__slots__
=
(
"exit_code"
,)
def
__init__
(
self
,
code
:
int
=
0
)
->
None
:
self
.
exit_code
=
code
venv/lib/python3.8/site-packages/click/formatting.py
deleted
100644 → 0
View file @
2599acca
import
typing
as
t
from
contextlib
import
contextmanager
from
gettext
import
gettext
as
_
from
._compat
import
term_len
from
.parser
import
split_opt
# Can force a width. This is used by the test system
FORCED_WIDTH
:
t
.
Optional
[
int
]
=
None
def
measure_table
(
rows
:
t
.
Iterable
[
t
.
Tuple
[
str
,
str
]])
->
t
.
Tuple
[
int
,
...]:
widths
:
t
.
Dict
[
int
,
int
]
=
{}
for
row
in
rows
:
for
idx
,
col
in
enumerate
(
row
):
widths
[
idx
]
=
max
(
widths
.
get
(
idx
,
0
),
term_len
(
col
))
return
tuple
(
y
for
x
,
y
in
sorted
(
widths
.
items
()))
def
iter_rows
(
rows
:
t
.
Iterable
[
t
.
Tuple
[
str
,
str
]],
col_count
:
int
)
->
t
.
Iterator
[
t
.
Tuple
[
str
,
...]]:
for
row
in
rows
:
yield
row
+
(
""
,)
*
(
col_count
-
len
(
row
))
def
wrap_text
(
text
:
str
,
width
:
int
=
78
,
initial_indent
:
str
=
""
,
subsequent_indent
:
str
=
""
,
preserve_paragraphs
:
bool
=
False
,
)
->
str
:
"""A helper function that intelligently wraps text. By default, it
assumes that it operates on a single paragraph of text but if the
`preserve_paragraphs` parameter is provided it will intelligently
handle paragraphs (defined by two empty lines).
If paragraphs are handled, a paragraph can be prefixed with an empty
line containing the ``
\\
b`` character (``
\\
x08``) to indicate that
no rewrapping should happen in that block.
:param text: the text that should be rewrapped.
:param width: the maximum width for the text.
:param initial_indent: the initial indent that should be placed on the
first line as a string.
:param subsequent_indent: the indent string that should be placed on
each consecutive line.
:param preserve_paragraphs: if this flag is set then the wrapping will
intelligently handle paragraphs.
"""
from
._textwrap
import
TextWrapper
text
=
text
.
expandtabs
()
wrapper
=
TextWrapper
(
width
,
initial_indent
=
initial_indent
,
subsequent_indent
=
subsequent_indent
,
replace_whitespace
=
False
,
)
if
not
preserve_paragraphs
:
return
wrapper
.
fill
(
text
)
p
:
t
.
List
[
t
.
Tuple
[
int
,
bool
,
str
]]
=
[]
buf
:
t
.
List
[
str
]
=
[]
indent
=
None
def
_flush_par
()
->
None
:
if
not
buf
:
return
if
buf
[
0
].
strip
()
==
"
\b
"
:
p
.
append
((
indent
or
0
,
True
,
"
\n
"
.
join
(
buf
[
1
:])))
else
:
p
.
append
((
indent
or
0
,
False
,
" "
.
join
(
buf
)))
del
buf
[:]
for
line
in
text
.
splitlines
():
if
not
line
:
_flush_par
()
indent
=
None
else
:
if
indent
is
None
:
orig_len
=
term_len
(
line
)
line
=
line
.
lstrip
()
indent
=
orig_len
-
term_len
(
line
)
buf
.
append
(
line
)
_flush_par
()
rv
=
[]
for
indent
,
raw
,
text
in
p
:
with
wrapper
.
extra_indent
(
" "
*
indent
):
if
raw
:
rv
.
append
(
wrapper
.
indent_only
(
text
))
else
:
rv
.
append
(
wrapper
.
fill
(
text
))
return
"
\n\n
"
.
join
(
rv
)
class
HelpFormatter
:
"""This class helps with formatting text-based help pages. It's
usually just needed for very special internal cases, but it's also
exposed so that developers can write their own fancy outputs.
At present, it always writes into memory.
:param indent_increment: the additional increment for each level.
:param width: the width for the text. This defaults to the terminal
width clamped to a maximum of 78.
"""
def
__init__
(
self
,
indent_increment
:
int
=
2
,
width
:
t
.
Optional
[
int
]
=
None
,
max_width
:
t
.
Optional
[
int
]
=
None
,
)
->
None
:
import
shutil
self
.
indent_increment
=
indent_increment
if
max_width
is
None
:
max_width
=
80
if
width
is
None
:
width
=
FORCED_WIDTH
if
width
is
None
:
width
=
max
(
min
(
shutil
.
get_terminal_size
().
columns
,
max_width
)
-
2
,
50
)
self
.
width
=
width
self
.
current_indent
=
0
self
.
buffer
:
t
.
List
[
str
]
=
[]
def
write
(
self
,
string
:
str
)
->
None
:
"""Writes a unicode string into the internal buffer."""
self
.
buffer
.
append
(
string
)
def
indent
(
self
)
->
None
:
"""Increases the indentation."""
self
.
current_indent
+=
self
.
indent_increment
def
dedent
(
self
)
->
None
:
"""Decreases the indentation."""
self
.
current_indent
-=
self
.
indent_increment
def
write_usage
(
self
,
prog
:
str
,
args
:
str
=
""
,
prefix
:
t
.
Optional
[
str
]
=
None
)
->
None
:
"""Writes a usage line into the buffer.
:param prog: the program name.
:param args: whitespace separated list of arguments.
:param prefix: The prefix for the first line. Defaults to
``"Usage: "``.
"""
if
prefix
is
None
:
prefix
=
f
"
{
_
(
'Usage
:
')
}
"
usage_prefix
=
f
"
{
prefix
:
>
{
self
.
current_indent
}}{
prog
}
"
text_width
=
self
.
width
-
self
.
current_indent
if
text_width
>=
(
term_len
(
usage_prefix
)
+
20
):
# The arguments will fit to the right of the prefix.
indent
=
" "
*
term_len
(
usage_prefix
)
self
.
write
(
wrap_text
(
args
,
text_width
,
initial_indent
=
usage_prefix
,
subsequent_indent
=
indent
,
)
)
else
:
# The prefix is too long, put the arguments on the next line.
self
.
write
(
usage_prefix
)
self
.
write
(
"
\n
"
)
indent
=
" "
*
(
max
(
self
.
current_indent
,
term_len
(
prefix
))
+
4
)
self
.
write
(
wrap_text
(
args
,
text_width
,
initial_indent
=
indent
,
subsequent_indent
=
indent
)
)
self
.
write
(
"
\n
"
)
def
write_heading
(
self
,
heading
:
str
)
->
None
:
"""Writes a heading into the buffer."""
self
.
write
(
f
"
{
''
:
>
{
self
.
current_indent
}}{
heading
}
:
\n
"
)
def
write_paragraph
(
self
)
->
None
:
"""Writes a paragraph into the buffer."""
if
self
.
buffer
:
self
.
write
(
"
\n
"
)
def
write_text
(
self
,
text
:
str
)
->
None
:
"""Writes re-indented text into the buffer. This rewraps and
preserves paragraphs.
"""
indent
=
" "
*
self
.
current_indent
self
.
write
(
wrap_text
(
text
,
self
.
width
,
initial_indent
=
indent
,
subsequent_indent
=
indent
,
preserve_paragraphs
=
True
,
)
)
self
.
write
(
"
\n
"
)
def
write_dl
(
self
,
rows
:
t
.
Sequence
[
t
.
Tuple
[
str
,
str
]],
col_max
:
int
=
30
,
col_spacing
:
int
=
2
,
)
->
None
:
"""Writes a definition list into the buffer. This is how options
and commands are usually formatted.
:param rows: a list of two item tuples for the terms and values.
:param col_max: the maximum width of the first column.
:param col_spacing: the number of spaces between the first and
second column.
"""
rows
=
list
(
rows
)
widths
=
measure_table
(
rows
)
if
len
(
widths
)
!=
2
:
raise
TypeError
(
"Expected two columns for definition list"
)
first_col
=
min
(
widths
[
0
],
col_max
)
+
col_spacing
for
first
,
second
in
iter_rows
(
rows
,
len
(
widths
)):
self
.
write
(
f
"
{
''
:
>
{
self
.
current_indent
}}{
first
}
"
)
if
not
second
:
self
.
write
(
"
\n
"
)
continue
if
term_len
(
first
)
<=
first_col
-
col_spacing
:
self
.
write
(
" "
*
(
first_col
-
term_len
(
first
)))
else
:
self
.
write
(
"
\n
"
)
self
.
write
(
" "
*
(
first_col
+
self
.
current_indent
))
text_width
=
max
(
self
.
width
-
first_col
-
2
,
10
)
wrapped_text
=
wrap_text
(
second
,
text_width
,
preserve_paragraphs
=
True
)
lines
=
wrapped_text
.
splitlines
()
if
lines
:
self
.
write
(
f
"
{
lines
[
0
]
}
\n
"
)
for
line
in
lines
[
1
:]:
self
.
write
(
f
"
{
''
:
>
{
first_col
+
self
.
current_indent
}}{
line
}
\n
"
)
else
:
self
.
write
(
"
\n
"
)
@
contextmanager
def
section
(
self
,
name
:
str
)
->
t
.
Iterator
[
None
]:
"""Helpful context manager that writes a paragraph, a heading,
and the indents.
:param name: the section name that is written as heading.
"""
self
.
write_paragraph
()
self
.
write_heading
(
name
)
self
.
indent
()
try
:
yield
finally
:
self
.
dedent
()
@
contextmanager
def
indentation
(
self
)
->
t
.
Iterator
[
None
]:
"""A context manager that increases the indentation."""
self
.
indent
()
try
:
yield
finally
:
self
.
dedent
()
def
getvalue
(
self
)
->
str
:
"""Returns the buffer contents."""
return
""
.
join
(
self
.
buffer
)
def
join_options
(
options
:
t
.
Sequence
[
str
])
->
t
.
Tuple
[
str
,
bool
]:
"""Given a list of option strings this joins them in the most appropriate
way and returns them in the form ``(formatted_string,
any_prefix_is_slash)`` where the second item in the tuple is a flag that
indicates if any of the option prefixes was a slash.
"""
rv
=
[]
any_prefix_is_slash
=
False
for
opt
in
options
:
prefix
=
split_opt
(
opt
)[
0
]
if
prefix
==
"/"
:
any_prefix_is_slash
=
True
rv
.
append
((
len
(
prefix
),
opt
))