Compare commits

..

1 Commits

Author SHA1 Message Date
18386242861 9170e72bbc brach2
5 years ago

2
.idea/.gitignore vendored

@ -1,2 +0,0 @@
# Default ignored files
/workspace.xml

@ -1,6 +0,0 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.6" project-jdk-type="Python SDK" />
</project>

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/疫情数据采集分析及可视化.iml" filepath="$PROJECT_DIR$/.idea/疫情数据采集分析及可视化.iml" />
</modules>
</component>
</project>

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="TestRunnerService">
<option name="PROJECT_TEST_RUNNER" value="Twisted Trial" />
</component>
</module>

@ -1,758 +0,0 @@
"""Append module search paths for third-party packages to sys.path.
****************************************************************
* This module is automatically imported during initialization. *
****************************************************************
In earlier versions of Python (up to 1.5a3), scripts or modules that
needed to use site-specific modules would place ``import site''
somewhere near the top of their code. Because of the automatic
import, this is no longer necessary (but code that does it still
works).
This will append site-specific paths to the module search path. On
Unix, it starts with sys.prefix and sys.exec_prefix (if different) and
appends lib/python<version>/site-packages as well as lib/site-python.
It also supports the Debian convention of
lib/python<version>/dist-packages. On other platforms (mainly Mac and
Windows), it uses just sys.prefix (and sys.exec_prefix, if different,
but this is unlikely). The resulting directories, if they exist, are
appended to sys.path, and also inspected for path configuration files.
FOR DEBIAN, this sys.path is augmented with directories in /usr/local.
Local addons go into /usr/local/lib/python<version>/site-packages
(resp. /usr/local/lib/site-python), Debian addons install into
/usr/{lib,share}/python<version>/dist-packages.
A path configuration file is a file whose name has the form
<package>.pth; its contents are additional directories (one per line)
to be added to sys.path. Non-existing directories (or
non-directories) are never added to sys.path; no directory is added to
sys.path more than once. Blank lines and lines beginning with
'#' are skipped. Lines starting with 'import' are executed.
For example, suppose sys.prefix and sys.exec_prefix are set to
/usr/local and there is a directory /usr/local/lib/python2.X/site-packages
with three subdirectories, foo, bar and spam, and two path
configuration files, foo.pth and bar.pth. Assume foo.pth contains the
following:
# foo package configuration
foo
bar
bletch
and bar.pth contains:
# bar package configuration
bar
Then the following directories are added to sys.path, in this order:
/usr/local/lib/python2.X/site-packages/bar
/usr/local/lib/python2.X/site-packages/foo
Note that bletch is omitted because it doesn't exist; bar precedes foo
because bar.pth comes alphabetically before foo.pth; and spam is
omitted because it is not mentioned in either path configuration file.
After these path manipulations, an attempt is made to import a module
named sitecustomize, which can perform arbitrary additional
site-specific customizations. If this import fails with an
ImportError exception, it is silently ignored.
"""
import sys
import os
try:
import __builtin__ as builtins
except ImportError:
import builtins
try:
set
except NameError:
from sets import Set as set
# Prefixes for site-packages; add additional prefixes like /usr/local here
PREFIXES = [sys.prefix, sys.exec_prefix]
# Enable per user site-packages directory
# set it to False to disable the feature or True to force the feature
ENABLE_USER_SITE = None
# for distutils.commands.install
USER_SITE = None
USER_BASE = None
_is_64bit = (getattr(sys, 'maxsize', None) or getattr(sys, 'maxint')) > 2**32
_is_pypy = hasattr(sys, 'pypy_version_info')
_is_jython = sys.platform[:4] == 'java'
if _is_jython:
ModuleType = type(os)
def makepath(*paths):
dir = os.path.join(*paths)
if _is_jython and (dir == '__classpath__' or
dir.startswith('__pyclasspath__')):
return dir, dir
dir = os.path.abspath(dir)
return dir, os.path.normcase(dir)
def abs__file__():
"""Set all module' __file__ attribute to an absolute path"""
for m in sys.modules.values():
if ((_is_jython and not isinstance(m, ModuleType)) or
hasattr(m, '__loader__')):
# only modules need the abspath in Jython. and don't mess
# with a PEP 302-supplied __file__
continue
f = getattr(m, '__file__', None)
if f is None:
continue
m.__file__ = os.path.abspath(f)
def removeduppaths():
""" Remove duplicate entries from sys.path along with making them
absolute"""
# This ensures that the initial path provided by the interpreter contains
# only absolute pathnames, even if we're running from the build directory.
L = []
known_paths = set()
for dir in sys.path:
# Filter out duplicate paths (on case-insensitive file systems also
# if they only differ in case); turn relative paths into absolute
# paths.
dir, dircase = makepath(dir)
if not dircase in known_paths:
L.append(dir)
known_paths.add(dircase)
sys.path[:] = L
return known_paths
# XXX This should not be part of site.py, since it is needed even when
# using the -S option for Python. See http://www.python.org/sf/586680
def addbuilddir():
"""Append ./build/lib.<platform> in case we're running in the build dir
(especially for Guido :-)"""
from distutils.util import get_platform
s = "build/lib.%s-%.3s" % (get_platform(), sys.version)
if hasattr(sys, 'gettotalrefcount'):
s += '-pydebug'
s = os.path.join(os.path.dirname(sys.path[-1]), s)
sys.path.append(s)
def _init_pathinfo():
"""Return a set containing all existing directory entries from sys.path"""
d = set()
for dir in sys.path:
try:
if os.path.isdir(dir):
dir, dircase = makepath(dir)
d.add(dircase)
except TypeError:
continue
return d
def addpackage(sitedir, name, known_paths):
"""Add a new path to known_paths by combining sitedir and 'name' or execute
sitedir if it starts with 'import'"""
if known_paths is None:
_init_pathinfo()
reset = 1
else:
reset = 0
fullname = os.path.join(sitedir, name)
try:
f = open(fullname, "rU")
except IOError:
return
try:
for line in f:
if line.startswith("#"):
continue
if line.startswith("import"):
exec(line)
continue
line = line.rstrip()
dir, dircase = makepath(sitedir, line)
if not dircase in known_paths and os.path.exists(dir):
sys.path.append(dir)
known_paths.add(dircase)
finally:
f.close()
if reset:
known_paths = None
return known_paths
def addsitedir(sitedir, known_paths=None):
"""Add 'sitedir' argument to sys.path if missing and handle .pth files in
'sitedir'"""
if known_paths is None:
known_paths = _init_pathinfo()
reset = 1
else:
reset = 0
sitedir, sitedircase = makepath(sitedir)
if not sitedircase in known_paths:
sys.path.append(sitedir) # Add path component
try:
names = os.listdir(sitedir)
except os.error:
return
names.sort()
for name in names:
if name.endswith(os.extsep + "pth"):
addpackage(sitedir, name, known_paths)
if reset:
known_paths = None
return known_paths
def addsitepackages(known_paths, sys_prefix=sys.prefix, exec_prefix=sys.exec_prefix):
"""Add site-packages (and possibly site-python) to sys.path"""
prefixes = [os.path.join(sys_prefix, "local"), sys_prefix]
if exec_prefix != sys_prefix:
prefixes.append(os.path.join(exec_prefix, "local"))
for prefix in prefixes:
if prefix:
if sys.platform in ('os2emx', 'riscos') or _is_jython:
sitedirs = [os.path.join(prefix, "Lib", "site-packages")]
elif _is_pypy:
sitedirs = [os.path.join(prefix, 'site-packages')]
elif sys.platform == 'darwin' and prefix == sys_prefix:
if prefix.startswith("/System/Library/Frameworks/"): # Apple's Python
sitedirs = [os.path.join("/Library/Python", sys.version[:3], "site-packages"),
os.path.join(prefix, "Extras", "lib", "python")]
else: # any other Python distros on OSX work this way
sitedirs = [os.path.join(prefix, "lib",
"python" + sys.version[:3], "site-packages")]
elif os.sep == '/':
sitedirs = [os.path.join(prefix,
"lib",
"python" + sys.version[:3],
"site-packages"),
os.path.join(prefix, "lib", "site-python"),
os.path.join(prefix, "python" + sys.version[:3], "lib-dynload")]
lib64_dir = os.path.join(prefix, "lib64", "python" + sys.version[:3], "site-packages")
if (os.path.exists(lib64_dir) and
os.path.realpath(lib64_dir) not in [os.path.realpath(p) for p in sitedirs]):
if _is_64bit:
sitedirs.insert(0, lib64_dir)
else:
sitedirs.append(lib64_dir)
try:
# sys.getobjects only available in --with-pydebug build
sys.getobjects
sitedirs.insert(0, os.path.join(sitedirs[0], 'debug'))
except AttributeError:
pass
# Debian-specific dist-packages directories:
sitedirs.append(os.path.join(prefix, "local/lib",
"python" + sys.version[:3],
"dist-packages"))
if sys.version[0] == '2':
sitedirs.append(os.path.join(prefix, "lib",
"python" + sys.version[:3],
"dist-packages"))
else:
sitedirs.append(os.path.join(prefix, "lib",
"python" + sys.version[0],
"dist-packages"))
sitedirs.append(os.path.join(prefix, "lib", "dist-python"))
else:
sitedirs = [prefix, os.path.join(prefix, "lib", "site-packages")]
if sys.platform == 'darwin':
# for framework builds *only* we add the standard Apple
# locations. Currently only per-user, but /Library and
# /Network/Library could be added too
if 'Python.framework' in prefix:
home = os.environ.get('HOME')
if home:
sitedirs.append(
os.path.join(home,
'Library',
'Python',
sys.version[:3],
'site-packages'))
for sitedir in sitedirs:
if os.path.isdir(sitedir):
addsitedir(sitedir, known_paths)
return None
def check_enableusersite():
"""Check if user site directory is safe for inclusion
The function tests for the command line flag (including environment var),
process uid/gid equal to effective uid/gid.
None: Disabled for security reasons
False: Disabled by user (command line option)
True: Safe and enabled
"""
if hasattr(sys, 'flags') and getattr(sys.flags, 'no_user_site', False):
return False
if hasattr(os, "getuid") and hasattr(os, "geteuid"):
# check process uid == effective uid
if os.geteuid() != os.getuid():
return None
if hasattr(os, "getgid") and hasattr(os, "getegid"):
# check process gid == effective gid
if os.getegid() != os.getgid():
return None
return True
def addusersitepackages(known_paths):
"""Add a per user site-package to sys.path
Each user has its own python directory with site-packages in the
home directory.
USER_BASE is the root directory for all Python versions
USER_SITE is the user specific site-packages directory
USER_SITE/.. can be used for data.
"""
global USER_BASE, USER_SITE, ENABLE_USER_SITE
env_base = os.environ.get("PYTHONUSERBASE", None)
def joinuser(*args):
return os.path.expanduser(os.path.join(*args))
#if sys.platform in ('os2emx', 'riscos'):
# # Don't know what to put here
# USER_BASE = ''
# USER_SITE = ''
if os.name == "nt":
base = os.environ.get("APPDATA") or "~"
if env_base:
USER_BASE = env_base
else:
USER_BASE = joinuser(base, "Python")
USER_SITE = os.path.join(USER_BASE,
"Python" + sys.version[0] + sys.version[2],
"site-packages")
else:
if env_base:
USER_BASE = env_base
else:
USER_BASE = joinuser("~", ".local")
USER_SITE = os.path.join(USER_BASE, "lib",
"python" + sys.version[:3],
"site-packages")
if ENABLE_USER_SITE and os.path.isdir(USER_SITE):
addsitedir(USER_SITE, known_paths)
if ENABLE_USER_SITE:
for dist_libdir in ("lib", "local/lib"):
user_site = os.path.join(USER_BASE, dist_libdir,
"python" + sys.version[:3],
"dist-packages")
if os.path.isdir(user_site):
addsitedir(user_site, known_paths)
return known_paths
def setBEGINLIBPATH():
"""The OS/2 EMX port has optional extension modules that do double duty
as DLLs (and must use the .DLL file extension) for other extensions.
The library search path needs to be amended so these will be found
during module import. Use BEGINLIBPATH so that these are at the start
of the library search path.
"""
dllpath = os.path.join(sys.prefix, "Lib", "lib-dynload")
libpath = os.environ['BEGINLIBPATH'].split(';')
if libpath[-1]:
libpath.append(dllpath)
else:
libpath[-1] = dllpath
os.environ['BEGINLIBPATH'] = ';'.join(libpath)
def setquit():
"""Define new built-ins 'quit' and 'exit'.
These are simply strings that display a hint on how to exit.
"""
if os.sep == ':':
eof = 'Cmd-Q'
elif os.sep == '\\':
eof = 'Ctrl-Z plus Return'
else:
eof = 'Ctrl-D (i.e. EOF)'
class Quitter(object):
def __init__(self, name):
self.name = name
def __repr__(self):
return 'Use %s() or %s to exit' % (self.name, eof)
def __call__(self, code=None):
# Shells like IDLE catch the SystemExit, but listen when their
# stdin wrapper is closed.
try:
sys.stdin.close()
except:
pass
raise SystemExit(code)
builtins.quit = Quitter('quit')
builtins.exit = Quitter('exit')
class _Printer(object):
"""interactive prompt objects for printing the license text, a list of
contributors and the copyright notice."""
MAXLINES = 23
def __init__(self, name, data, files=(), dirs=()):
self.__name = name
self.__data = data
self.__files = files
self.__dirs = dirs
self.__lines = None
def __setup(self):
if self.__lines:
return
data = None
for dir in self.__dirs:
for filename in self.__files:
filename = os.path.join(dir, filename)
try:
fp = open(filename, "rU")
data = fp.read()
fp.close()
break
except IOError:
pass
if data:
break
if not data:
data = self.__data
self.__lines = data.split('\n')
self.__linecnt = len(self.__lines)
def __repr__(self):
self.__setup()
if len(self.__lines) <= self.MAXLINES:
return "\n".join(self.__lines)
else:
return "Type %s() to see the full %s text" % ((self.__name,)*2)
def __call__(self):
self.__setup()
prompt = 'Hit Return for more, or q (and Return) to quit: '
lineno = 0
while 1:
try:
for i in range(lineno, lineno + self.MAXLINES):
print(self.__lines[i])
except IndexError:
break
else:
lineno += self.MAXLINES
key = None
while key is None:
try:
key = raw_input(prompt)
except NameError:
key = input(prompt)
if key not in ('', 'q'):
key = None
if key == 'q':
break
def setcopyright():
"""Set 'copyright' and 'credits' in __builtin__"""
builtins.copyright = _Printer("copyright", sys.copyright)
if _is_jython:
builtins.credits = _Printer(
"credits",
"Jython is maintained by the Jython developers (www.jython.org).")
elif _is_pypy:
builtins.credits = _Printer(
"credits",
"PyPy is maintained by the PyPy developers: http://pypy.org/")
else:
builtins.credits = _Printer("credits", """\
Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
for supporting Python development. See www.python.org for more information.""")
here = os.path.dirname(os.__file__)
builtins.license = _Printer(
"license", "See http://www.python.org/%.3s/license.html" % sys.version,
["LICENSE.txt", "LICENSE"],
[os.path.join(here, os.pardir), here, os.curdir])
class _Helper(object):
"""Define the built-in 'help'.
This is a wrapper around pydoc.help (with a twist).
"""
def __repr__(self):
return "Type help() for interactive help, " \
"or help(object) for help about object."
def __call__(self, *args, **kwds):
import pydoc
return pydoc.help(*args, **kwds)
def sethelper():
builtins.help = _Helper()
def aliasmbcs():
"""On Windows, some default encodings are not provided by Python,
while they are always available as "mbcs" in each locale. Make
them usable by aliasing to "mbcs" in such a case."""
if sys.platform == 'win32':
import locale, codecs
enc = locale.getdefaultlocale()[1]
if enc.startswith('cp'): # "cp***" ?
try:
codecs.lookup(enc)
except LookupError:
import encodings
encodings._cache[enc] = encodings._unknown
encodings.aliases.aliases[enc] = 'mbcs'
def setencoding():
"""Set the string encoding used by the Unicode implementation. The
default is 'ascii', but if you're willing to experiment, you can
change this."""
encoding = "ascii" # Default value set by _PyUnicode_Init()
if 0:
# Enable to support locale aware default string encodings.
import locale
loc = locale.getdefaultlocale()
if loc[1]:
encoding = loc[1]
if 0:
# Enable to switch off string to Unicode coercion and implicit
# Unicode to string conversion.
encoding = "undefined"
if encoding != "ascii":
# On Non-Unicode builds this will raise an AttributeError...
sys.setdefaultencoding(encoding) # Needs Python Unicode build !
def execsitecustomize():
"""Run custom site specific code, if available."""
try:
import sitecustomize
except ImportError:
pass
def virtual_install_main_packages():
f = open(os.path.join(os.path.dirname(__file__), 'orig-prefix.txt'))
sys.real_prefix = f.read().strip()
f.close()
pos = 2
hardcoded_relative_dirs = []
if sys.path[0] == '':
pos += 1
if _is_jython:
paths = [os.path.join(sys.real_prefix, 'Lib')]
elif _is_pypy:
if sys.version_info > (3, 2):
cpyver = '%d' % sys.version_info[0]
elif sys.pypy_version_info >= (1, 5):
cpyver = '%d.%d' % sys.version_info[:2]
else:
cpyver = '%d.%d.%d' % sys.version_info[:3]
paths = [os.path.join(sys.real_prefix, 'lib_pypy'),
os.path.join(sys.real_prefix, 'lib-python', cpyver)]
if sys.pypy_version_info < (1, 9):
paths.insert(1, os.path.join(sys.real_prefix,
'lib-python', 'modified-%s' % cpyver))
hardcoded_relative_dirs = paths[:] # for the special 'darwin' case below
#
# This is hardcoded in the Python executable, but relative to sys.prefix:
for path in paths[:]:
plat_path = os.path.join(path, 'plat-%s' % sys.platform)
if os.path.exists(plat_path):
paths.append(plat_path)
elif sys.platform == 'win32':
paths = [os.path.join(sys.real_prefix, 'Lib'), os.path.join(sys.real_prefix, 'DLLs')]
else:
paths = [os.path.join(sys.real_prefix, 'lib', 'python'+sys.version[:3])]
hardcoded_relative_dirs = paths[:] # for the special 'darwin' case below
lib64_path = os.path.join(sys.real_prefix, 'lib64', 'python'+sys.version[:3])
if os.path.exists(lib64_path):
if _is_64bit:
paths.insert(0, lib64_path)
else:
paths.append(lib64_path)
# This is hardcoded in the Python executable, but relative to
# sys.prefix. Debian change: we need to add the multiarch triplet
# here, which is where the real stuff lives. As per PEP 421, in
# Python 3.3+, this lives in sys.implementation, while in Python 2.7
# it lives in sys.
try:
arch = getattr(sys, 'implementation', sys)._multiarch
except AttributeError:
# This is a non-multiarch aware Python. Fallback to the old way.
arch = sys.platform
plat_path = os.path.join(sys.real_prefix, 'lib',
'python'+sys.version[:3],
'plat-%s' % arch)
if os.path.exists(plat_path):
paths.append(plat_path)
# This is hardcoded in the Python executable, but
# relative to sys.prefix, so we have to fix up:
for path in list(paths):
tk_dir = os.path.join(path, 'lib-tk')
if os.path.exists(tk_dir):
paths.append(tk_dir)
# These are hardcoded in the Apple's Python executable,
# but relative to sys.prefix, so we have to fix them up:
if sys.platform == 'darwin':
hardcoded_paths = [os.path.join(relative_dir, module)
for relative_dir in hardcoded_relative_dirs
for module in ('plat-darwin', 'plat-mac', 'plat-mac/lib-scriptpackages')]
for path in hardcoded_paths:
if os.path.exists(path):
paths.append(path)
sys.path.extend(paths)
def force_global_eggs_after_local_site_packages():
"""
Force easy_installed eggs in the global environment to get placed
in sys.path after all packages inside the virtualenv. This
maintains the "least surprise" result that packages in the
virtualenv always mask global packages, never the other way
around.
"""
egginsert = getattr(sys, '__egginsert', 0)
for i, path in enumerate(sys.path):
if i > egginsert and path.startswith(sys.prefix):
egginsert = i
sys.__egginsert = egginsert + 1
def virtual_addsitepackages(known_paths):
force_global_eggs_after_local_site_packages()
return addsitepackages(known_paths, sys_prefix=sys.real_prefix)
def fixclasspath():
"""Adjust the special classpath sys.path entries for Jython. These
entries should follow the base virtualenv lib directories.
"""
paths = []
classpaths = []
for path in sys.path:
if path == '__classpath__' or path.startswith('__pyclasspath__'):
classpaths.append(path)
else:
paths.append(path)
sys.path = paths
sys.path.extend(classpaths)
def execusercustomize():
"""Run custom user specific code, if available."""
try:
import usercustomize
except ImportError:
pass
def main():
global ENABLE_USER_SITE
virtual_install_main_packages()
abs__file__()
paths_in_sys = removeduppaths()
if (os.name == "posix" and sys.path and
os.path.basename(sys.path[-1]) == "Modules"):
addbuilddir()
if _is_jython:
fixclasspath()
GLOBAL_SITE_PACKAGES = not os.path.exists(os.path.join(os.path.dirname(__file__), 'no-global-site-packages.txt'))
if not GLOBAL_SITE_PACKAGES:
ENABLE_USER_SITE = False
if ENABLE_USER_SITE is None:
ENABLE_USER_SITE = check_enableusersite()
paths_in_sys = addsitepackages(paths_in_sys)
paths_in_sys = addusersitepackages(paths_in_sys)
if GLOBAL_SITE_PACKAGES:
paths_in_sys = virtual_addsitepackages(paths_in_sys)
if sys.platform == 'os2emx':
setBEGINLIBPATH()
setquit()
setcopyright()
sethelper()
aliasmbcs()
setencoding()
execsitecustomize()
if ENABLE_USER_SITE:
execusercustomize()
# Remove sys.setdefaultencoding() so that users cannot change the
# encoding after initialization. The test for presence is needed when
# this module is run as a script, because this code is executed twice.
if hasattr(sys, "setdefaultencoding"):
del sys.setdefaultencoding
main()
def _script():
help = """\
%s [--user-base] [--user-site]
Without arguments print some useful information
With arguments print the value of USER_BASE and/or USER_SITE separated
by '%s'.
Exit codes with --user-base or --user-site:
0 - user site directory is enabled
1 - user site directory is disabled by user
2 - uses site directory is disabled by super user
or for security reasons
>2 - unknown error
"""
args = sys.argv[1:]
if not args:
print("sys.path = [")
for dir in sys.path:
print(" %r," % (dir,))
print("]")
def exists(path):
if os.path.isdir(path):
return "exists"
else:
return "doesn't exist"
print("USER_BASE: %r (%s)" % (USER_BASE, exists(USER_BASE)))
print("USER_SITE: %r (%s)" % (USER_SITE, exists(USER_BASE)))
print("ENABLE_USER_SITE: %r" % ENABLE_USER_SITE)
sys.exit(0)
buffer = []
if '--user-base' in args:
buffer.append(USER_BASE)
if '--user-site' in args:
buffer.append(USER_SITE)
if buffer:
print(os.pathsep.join(buffer))
if ENABLE_USER_SITE:
sys.exit(0)
elif ENABLE_USER_SITE is False:
sys.exit(1)
elif ENABLE_USER_SITE is None:
sys.exit(2)
else:
sys.exit(3)
else:
import textwrap
print(textwrap.dedent(help % (sys.argv[0], os.pathsep)))
sys.exit(10)
if __name__ == '__main__':
_script()

@ -1,2 +0,0 @@
# Default ignored files
/workspace.xml

@ -1,6 +0,0 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.6 (新冠疫情)" project-jdk-type="Python SDK" />
<component name="PyCharmProfessionalAdvertiser">
<option name="shown" value="true" />
</component>
</project>

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/新冠疫情.iml" filepath="$PROJECT_DIR$/.idea/新冠疫情.iml" />
</modules>
</component>
</project>

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
</component>
</project>

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/venv" />
</content>
<orderEntry type="jdk" jdkName="Python 3.6 (新冠疫情)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -1,7 +0,0 @@
#数据库配置
user='root'
password='root'
host='127.0.0.1'
port=3306
db='xinguan'

@ -1,85 +0,0 @@
import time
from flask import Flask, render_template, jsonify,request
from models import GetFromDB
app=Flask(__name__)
@app.route("/query_province_topn/",methods=['POST'])
def query_province_topn():
db=GetFromDB()
results=db.query_province_topn('2020-08-07',5)
data=jsonify(pub_dates=str(results[0][2]),areas=[x[0] for x in results],curcofirms=[x[1] for x in results])
return data
@app.route("/chinaInfo/",methods=['POST'])
def searchProvinceConfirmed():
print("------------------------------------")
db=GetFromDB()
results=db.searchProvinceConfirmed('2020-08-07')
data=jsonify(areas=[x[0] for x in results],confirmed=[x[1] for x in results])
return data
@app.route("/chinaSummary/",methods=['POST'])
def chinasummary():
db=GetFromDB()
nowtime=time.strftime('%Y-%m-%d',time.localtime(time.time()))
results=db.searchSummaryChina(nowtime)
results=results[0]
#获取各省份疫情数据
provinces=db.searchProvinceConfirmed(nowtime)
#获取前5个确诊人数最多的省份
top5data=db.query_province_topn(nowtime,5)
#获取前8个无症状感染者最多的省份
asymp=db.query_province_asymp(nowtime)
data=jsonify(curConfirm=results[1],curConfirmRelative=results[2],
confirmed=results[9],confirmedRelative=results[10],
cured=results[13],curedRelative=results[14],died=results[15],
diedRelative=results[16],updateTime=nowtime,area=[x[0] for x in provinces],
proconfirmed=[x[1] for x in provinces],suspect=results[5],suspectRelative=results[6],
top5province=[x[0] for x in top5data],top5confirmed=[x[1] for x in top5data],
asymptomacNum=[x[1] for x in asymp],asymptomaticArea=[x[0] for x in asymp],
proconfirmedRelative=[x[2] for x in provinces],prodied=[x[3] for x in provinces])
return data
@app.route("/globalInfo/",methods=['POST'])
def GlobalInfomation():
nowtime=time.strftime('%Y-%m-%d',time.localtime(time.time()))
db = GetFromDB()
results=db.searchForeignInformation(nowtime)
#由于查询到的数据中没有中国的信息,因此需要查询中国的信息加到世界信息中
country = [x[3] for x in results]
country.append("中国")
confirmed = [x[0] for x in results]
confirmed.append(db.searchSummaryChina('2020-08-10')[0][1])
top10data=db.query_top10(nowtime)
summaryData=db.querySummaryForeign(nowtime)[0]
newAddData=db.query_newadd()
data=jsonify(country=country, confirmed=confirmed,died=[x[1] for x in results],
crued=[x[2] for x in results],curConfirm=[x[4] for x in results],
confirmedRelative=[x[5] for x in results],updateTime=nowtime,
TotalConfirmed=summaryData[1],TotalCurConfirm=summaryData[2],
TotalconfirmRelative=summaryData[3],TotalCrued=summaryData[4],
TotalDied=summaryData[6],TotalDiedRelative=summaryData[7],
TotalCruedRelative=summaryData[5],TotalcurConfirmRelative=summaryData[9],
top10confirmed=[x[0] for x in top10data],top10curconfirm=[x[1] for x in top10data],
top10country=[x[2] for x in top10data],newAddconfirmed=[x[0] for x in newAddData],
newAddTime=[x[2][0:10] for x in newAddData])
return data
@app.route("/")
def hello():
return render_template('/index.html')
@app.route("/index")
def helloindex():
return render_template('/index.html')
@app.route("/foreign/")
def foreign():
return render_template('foreign.html')
if __name__=='__main__':
app.run(host='192.168.1.30')

@ -1,89 +0,0 @@
from flask import jsonify
import pymysql
import config
#从数据库中获取数据传给前段
class GetFromDB():
def __init__(self):
self.conn=pymysql.connect(
host=config.host,
user=config.user,
password=config.password,
port=config.port,
db=config.db
)
self.cursor=self.conn.cursor()
def __del__(self):
self.cursor.close()
self.conn.close()
#连接数据库
def __connect(self):
#判断连接是否还存活
pass
#查询现存最多的几个省份
def query_province_topn(self,date,num):
thedate=date+"%"
sql='select area,curConfirm,pub_date from ProvinceTable where pub_date like "%s" order by curConfirm desc limit %d'%(thedate,num)
self.cursor.execute(sql)
results=self.cursor.fetchall()
return results
#查询无症状感染者最多的8个省份
def query_province_asymp(self,date):
nowdate=date+"%"
sql='select area,asymptomatic from ProvinceTable where pub_date like "%s" order by asymptomatic desc limit 8'%(nowdate)
self.cursor.execute(sql)
results=self.cursor.fetchall()
return results
#查询各省的确诊人数
def searchProvinceConfirmed(self,date):
thedate = date + "%"
sql='select area,confirmed,confirmedRelative,died from ProvinceTable where pub_date like "%s"'%(thedate)
self.cursor.execute(sql)
return self.cursor.fetchall()
#查询各国现存确诊和累计确诊,死亡人数等相关信息
def searchForeignInformation(self,date):
thedate = date + "%"
sql='select confirmed,died,crued,country,curConfirm,confirmedRelative from ForeignCountry where pub_date like "%s"'%(thedate)
self.cursor.execute(sql)
return self.cursor.fetchall()
#查询国内疫情概况
def searchSummaryChina(self,date):
thedate = date + "%"
sql='select * from InsideChina where updateTime like "%s"'%(thedate)
self.cursor.execute(sql)
return self.cursor.fetchall()
#查询世界各国的疫情信息
def query_foreignInfo(self,date):
thedate=date+"%"
sql='select * from ForeignCountry where pub_date like "%s"'%(thedate)
self.cursor.execute(sql)
return self.cursor.fetchall()
def querySummaryForeign(self,date):
thedate=date+"%"
sql='select * from OutsideChina where updateTime like "%s"'%(thedate)
self.cursor.execute(sql)
return self.cursor.fetchall()
#新增国家top10
def query_top10(self,date):
thedate=date+"%"
sql='select confirmed,confirmedRelative,country from ForeignCountry where pub_date like "%s" order by confirmed desc limit 10'%(thedate)
self.cursor.execute(sql)
return self.cursor.fetchall()
#查询现有新增和累计新增
def query_newadd(self):
sql='select confirmedRelative,curConfirmRelative,updateTime from OutsideChina'
self.cursor.execute(sql)
return self.cursor.fetchall()

@ -1,35 +0,0 @@
.t_common .tit_common {
background: #f3f0f0;
height: 0.7rem;
line-height: 0.7rem;
/* padding-left:0.1rem; */
}
/* .t_common .tit_common .tit_icon {
display: inline-block;
width: 0.1rem;
height: 0.32rem;
background: rgb(56, 128, 220);
vertical-align: middle;
margin: 0 0.15rem 0 0.3rem;
} */
.t_common .tit_common .tit_con {
display: inline-block;
height: 0.7rem;
line-height: 0.7rem;
/* vertical-align: middle; */
font-family: MicrosoftYaHei-Bold;
font-size: 0.28rem;
color: #233E6A;
letter-spacing: 1px;
font-weight: 900;
/* position:absolute; */
/* left:0.45rem; */
/* top:0; */
/* font-size: 0.28rem; */
/* height:0.7rem; */
/* line-height:0.7rem; */
}

@ -1,515 +0,0 @@
@charset "UTF-8";
* { margin: 0; padding: 0;}
body{font-size:0.12rem;background-color:#fff;margin:0;}
#container{max-width:750px;margin:auto;}
a{text-decoration:none;}
li{list-style:none;}
.clearfix:after{content:'';display:block;clear:both;}
/* top */
.top {
width:100%;
height:auto;
position:relative;
}
.top .t_img {
width:100%;
display: block;
}
.top p{
position:absolute;
left:18%;
top:28%;
color:#fff;
font-size:0.5rem;
background:rgb(52,120,246);
padding: 0.1rem 0.3rem;
margin: 0;
}
.top span {
position: absolute;
left: 10%;
top: 53%;
color: #fff;
font-size:0.3rem;
background:rgb(101,201,122);
padding: 0.1rem 0.3rem;
margin: 0;
}
.top .logo_text {
position: absolute;
width:100%;
height:1rem;
color: #fff;
bottom:0;
left:0;
}
.top .logo_text .content {
height:100%;
text-align:center;
}
.top .logo_text .content img{
height:100%;
vertical-align: middle;
}
.top .logo_text .content div{
display:inline-block;
vertical-align: middle;
}
/* middle */
.middle_con {
width:100%;
height:auto;
}
.middle_con .wrap {
-webkit-tap-highlight-color:rgba(0, 0, 0, 0);
width:100%;
}
.middle_con .wrap .scroll_wrap {
width:88%;
margin:0.3rem auto 0;
height: 0.32rem;
position: relative;
font-size: 0.25rem;
/* border:1px solid blue; */
}
.middle_con .wrap .scroll_wrap div {
position: absolute;
top:0;
text-align:center;
}
.middle_con .wrap .scroll_wrap div.scroll_img{
left:0;
width:0.26rem;
height: 0.32rem;
/* border:1px solid red; */
}
.middle_con .wrap .scroll_wrap div.scroll_img img{
position: absolute;
top:50%;
left:0;
width:0.26rem;
height:0.26rem;
margin-top:-0.17rem;
}
.middle_con .wrap .scroll_wrap div.scroll_mar{
left:0.35rem;
right:1.18rem;
height:0.32rem;
line-height:0.32rem;
font-weight: bolder;
color:#333;
}
.middle_con .wrap .scroll_wrap div.scroll_detail{
width:1.1rem;
right:0;
height:0.32rem;
line-height:0.32rem;
color:rgb(56, 128, 220);
font-weight:bolder;
}
.middle_con .wrap .scroll_wrap div.scroll_detail a{
display:inline-block;
width:100%;
}
.middle_con .wrap .tabs {
margin: 0.2rem 0 0.3rem 0;
text-align: center;
cursor: pointer;
}
.middle_con .wrap .tabs .tabs_wrap{
border:1px solid rgb(56, 128, 220);
display: inline-block;
border-radius: 0.15rem;
overflow: hidden;
}
.middle_con .wrap .tabs .tabs_wrap span {
display:inline-block;
padding: 0.2rem 0.35rem;
font-size:0.25rem;
background: #fff;
color:rgb(56, 128, 220);
}
.middle_con .wrap .tabs .tabs_wrap span.sty {
background:rgb(56, 128, 220);
color:#fff;
}
.middle_con .wrap .tabs_content {
width:100%;
height:20rem;
position: relative;
}
.middle_con .wrap .tabs_content .tabs_list {
width:92%;
display: none;
position: absolute;
top: 0;
left: 0;
padding:0 4%;
}
/* 疫情概览 */
.tabs_list.gailan .gl_tips {
color:rgb(128, 133, 134);
font-size:0.25rem;
}
/* detail4 */
.tabs_list.gailan .detail4 {
height:1.4rem;
display:flex;
justify-content: space-between;
align-items: center;
padding-bottom: 0.3rem;
border-bottom: 1px solid #dfdddd;
margin-top:0.2rem;
}
.tabs_list.gailan .detail4 .list4 p {
text-align:center;
}
.tabs_list.gailan .detail4 .list4 .num{
font-size:0.45rem;
}
.tabs_list.gailan .detail4 .list4 .color1 {
color:rgb(234, 51, 35);
}
.tabs_list.gailan .detail4 .list4 .color2 {
color: rgb(231, 161, 60);
}
.tabs_list.gailan .detail4 .list4 .color3 {
color: rgb(204, 208, 210);
}
.tabs_list.gailan .detail4 .list4 .num.color4 {
color: rgb(104, 202, 125);
}
.tabs_list.gailan .detail4 .list4 .text {
text-align: center;
font-size:0.3rem;
color:rgb(63, 79, 98);
}
/* analyze */
.tabs_list.gailan .analyze div {
display:flex;
justify-content: flex-start;
align-items: flex-start;
margin: 0.25rem 0;
}
.tabs_list.gailan .analyze div .list_img {
margin:0.05rem 0.2rem 0 0;
width:0.2rem;
display:inline-block;
}
.tabs_list.gailan .analyze div p {
margin:0;
font-size:0.25rem;
}
/* map */
.tabs_list.gailan .map {
margin-top: 0.5rem;
}
/* china table */
.table_t{
margin-top:0.4rem;
margin-bottom:0.1rem;
}
.tabs_list.gailan .table_pro {
width:100%;
height:auto;
}
.table_pro .title {
width:100%;
height:0.6rem;
color:#000;
}
.table_pro .title span{
float:left;
height:0.6rem;
line-height:0.6rem;
text-align:center;
font-size:0.25rem;
font-weight:bolder;
width:20%;
}
.table_pro .title span.t_area{
width:40%;
background:rgb(227, 231, 243);
}
.table_pro .title span.t_confirm {
background: rgb(243, 186, 176);
}
.table_pro .title span.t_dead {
background: rgb(180, 192, 213);
}
.table_pro .title span.t_heal {
background: rgb(102, 204, 153);
}
.table_pro .content {
width:100%;
}
.table_pro .content .c_line{
width:100%;
}
.table_pro .content .c_line .line_first{
width:100%;
height:0.6rem;
background:rgb(247, 247, 247);
}
.table_pro .content .c_line .line_first >span {
float:left;
width: 20%;
height:0.6rem;
line-height:0.6rem;
font-size:0.25rem;
font-weight:bolder;
background:rgb(247, 247, 247);
text-align:center;
box-sizing:border-box;
border-bottom:1px solid #eee;
}
.table_pro .content .c_line .line_first >span.c_area {
width: 40%;
text-align: left;
text-indent: 10px;
}
.table_pro .content .c_line .line_first >span.c_area img{
width: 6%;
}
.table_pro .content .c_line .line_hide {
width:100%;
/* height:0.6rem; */
display:none;
}
.table_pro .content .c_line .line_hide .hide_content{
width:100%;
height:0.6rem;
line-height:0.6rem;
}
.table_pro .content .c_line .line_hide .hide_content >span {
float: left;
width: 20%;
height: 0.6rem;
line-height: 0.6rem;
text-align:center;
box-sizing:border-box;
border-bottom:1px solid #eee;
font-size:14px !important;
}
.table_pro .content .c_line .line_hide .hide_content >span.c_area {
width: 40%;
}
.table_pro .rotate {
-moz-transform: rotate(90deg);
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
}
/* 最新动态 */
.tabs_list.dongtai {
width:100%;
}
.tabs_list.dongtai .main{
width:100%;
}
.cbp_tmtimeline {
margin: 0;
padding: 0;
list-style: none;
position: relative;
}
/* The line */
.cbp_tmtimeline:before {
content: '';
position: absolute;
top: 0;
bottom: 0;
width: 10px;
background: #afdcf8;
left: 20%;
margin-left: -10px;
}
.cbp_tmtimeline>li {
position: relative;
}
/* 时间 */
.cbp_tmtimeline>li .cbp_tmtime {
display: block;
width: 25%;
padding-right: 100px;
position: absolute;
}
.cbp_tmtimeline>li .cbp_tmtime span {
display: block;
text-align: right;
}
.cbp_tmtimeline>li .cbp_tmtime span:first-child {
font-size: 0.2rem;
color: #bdd0db;
}
.cbp_tmtimeline>li .cbp_tmtime span:last-child {
font-size: 2.9em;
color: #3594cb;
}
.cbp_tmtimeline>li:nth-child(odd) .cbp_tmtime span:last-child {
color: #6cbfee;
}
/* 内容 */
.cbp_tmtimeline>li .cbp_tmlabel {
margin: 0 0 15px 25%;
background: #3594cb;
color: #fff;
padding: 2em;
font-size: 1.2em;
font-weight: 300;
line-height: 1.4;
position: relative;
border-radius: 5px;
}
.cbp_tmtimeline>li:nth-child(odd) .cbp_tmlabel {
background: #6cbfee;
}
.cbp_tmtimeline>li .cbp_tmlabel h2 {
margin-top: 0px;
padding: 0 0 10px 0;
border-bottom: 1px solid rgba(255, 255, 255, 0.4);
font-size: 0.3rem;
}
/* The triangle */
.cbp_tmtimeline>li .cbp_tmlabel:after {
right: 100%;
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
border-right-color: #3594cb;
border-width: 10px;
top: 10px;
}
.cbp_tmtimeline>li:nth-child(odd) .cbp_tmlabel:after {
border-right-color: #6cbfee;
}
/* Example Media Queries */
@media screen and (max-width: 65.375em) {
.cbp_tmtimeline>li .cbp_tmtime span:last-child {
font-size: 0.35rem
}
}
@media screen and (max-width: 47.2em) {
.cbp_tmtimeline:before {
display: none;
}
.cbp_tmtimeline>li .cbp_tmtime {
width: 100%;
position: relative;
padding: 0 0 15px 0;
}
.cbp_tmtimeline>li .cbp_tmtime span {
text-align: left;
}
.cbp_tmtimeline>li .cbp_tmlabel {
margin: 0 0 20px 0;
font-weight: 400;
font-size: 95%;
}
.cbp_tmtimeline>li .cbp_tmlabel:after {
right: auto;
left: 20px;
border-right-color: transparent;
border-bottom-color: #3594cb;
top: -20px;
}
.cbp_tmtimeline>li:nth-child(odd) .cbp_tmlabel:after {
border-right-color: transparent;
border-bottom-color: #6cbfee;
}
}
/* 防护知识 */
.fhzs .tit {
width:100%;
font-size:0.32rem;
margin-bottom:0.25rem;
font-weight:bolder;
}
.fhzs .fhhz,
.fhzs .fhbl,
.fhzs .fhnl {
width:100%;
background:rgb(250, 250, 250);
margin-bottom:0.2rem;
}
.fhzs .fhnl {
margin-bottom:0.4rem;
}
.fhzs .fhhz span,
.fhzs .fhbl span,
.fhzs .fhnl span {
height:0.8rem;
line-height:0.8rem;
text-indent: 0.2rem;
display: block;
font-size:0.25rem;
}
.fhzs .fhnl p{
height: 0.8rem;
margin-left: 0.2rem;
}
.fhzs .fhfg {
width:100%;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

@ -1,636 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<!--如果是IE 就以标准渲染-->
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<!-- 视窗——————响应式布局 -->
<meta name='viewport' content='width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0'>
<!--当前页面的三要素-->
<title>实时疫情</title>
<meta name="description" content="关键词、关键字">
<meta name="keywords" content="描述">
<link rel="icon" href="{{url_for('static',filename='images/favicon.ico')}}" type="image/x-icon" />
<!-- 引入CSS文件 -->
<link rel="stylesheet" type="text/css" href="{{url_for('static',filename='css/index.css')}}">
<!-- 公共样式 -->
<link rel="stylesheet" type="text/css" href="{{ url_for('static',filename='css/common.css')}}">
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
<script
src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js">
</script>
<script src={{url_for('static',filename='js/china.js')}}></script>
<script type='text/javascript' src='{{ url_for("static",filename="js/echarts.js")}}'></script>
<script type='text/javascript' src='{{ url_for("static",filename="js/china.js")}}'></script>
<script type='text/javascript' src='{{ url_for("static",filename="js/world.js")}}'></script>
<script type="text/javascript",src=" {{url_for('static',filename='js/jquery-3.2.1.js')}}"></script>
</head>
<body>
<div id='container' class='container'>
<div class="top">
<img src="{{url_for('static',filename='images/wuhan.jpeg')}}" alt="" width="100%" class="t_img">
</div>
<div class="middle middle_con">
<div class='wrap'>
<div class="scroll_wrap">
<div class="scroll_img">
<img src="{{url_for('static',filename='images/news.png')}}" alt="">
</div>
<div class="scroll_mar">
<marquee behavior="scroll" direction="left">
华科生产实习新冠疫情监测与分析 第三组
</marquee>
</div>
<div class="scroll_detail"><a href="https://voice.baidu.com/act/newpneumonia/newpneumonia/">数据来源</a></div>
</div>
<div class="tabs">
<span class="tabs_wrap">
<span >国内疫情</span>
<span class="sty">国外疫情</span>
</span>
</div>
<div class="tabs_content">
<!-- 国内疫情 -->
<div class="tabs_list gailan">
<!-- gl_tips -->
<p class="gl_tips">截止<span id="nowtime">2020-02-02 11:52</span>全国数据统计</p>
<!-- detail4 -->
<div class="detail4">
<div class="list4">
<p class="color1">较昨日<span class="add_num1">110</span></p>
<p class="num num1 color1">0</p>
<div class="text">确诊病例</div>
</div>
<div class="list4">
<p class="color2">较昨日+<span class="add_num2">110</span></p>
<p class="num num2 color2">0</p>
<div class="text">现存确诊</div>
</div>
<div class="list4">
<p class="color3">较昨日+<span class="add_num3">110</span></p>
<p class="num num3 color3">0</p>
<div class="text">死亡人数</div>
</div>
<div class="list4">
<p class="color4">较昨日+<span class="add_num4">110</span></p>
<p class="num num4 color4">0</p>
<div class="text">治愈人数</div>
</div>
</div>
<!-- map -->
<div class="map t_common">
<div class="map_tit tit_common">
<!-- <span class="tit_icon"></span> -->
<span class="tit_con">&nbsp;&nbsp;全球累计确诊</span>
</div>
<div class="map_con" id="map_echarts" style="width:100%;height:300px;">
</div>
</div>
<p><br> </p>
<div class="map t_common">
<div class="map_tit tit_common">
<span class="tit_con">当前确诊人数最多的10个国家</span>
<div class="map_con" id="top10chart" style="width:100%;height:300px;"></div>
</div>
</div>
<div id="echarts1" style="width:100%;height:4rem;margin-bottom:0.4rem;"></div>
<p><br> </p>
<div class="map t_common">
<div class="map_tit tit_common">
<span class="tit_con">全球确诊人数变化</span>
<div class="map_con" id="asymptomaticLoc" style="width:100%;height:300px;"></div>
</div>
</div>
<div id="echarts2" style="width:100%;height:4rem;margin-bottom:0.4rem;"></div>
<p><br> </p>
<!-- table -->
<!-- 全国表格 -->
<div class="china table_t t_common">
<div class="tit_common">
<!-- <span class="tit_icon"></span> -->
<span class="tit_con">&nbsp;&nbsp;全球数据统计</span>
</div>
</div>
<div class="china table_pro">
<div class="title">
<span class="t_area">国家</span>
<span class="t_confirm">累计确诊</span>
<span class="t_dead">新增</span>
<span class="t_heal">死亡</span>
</div>
<ul class="content">
</ul>
</div>
</div>
<!-- 国外疫情 -->
<div class="tabs_list dongtai">
<div class="main">
<ul class="cbp_tmtimeline">
<!-- 这里是最新动态 -->
</ul>
</div>
</div>
<!-- 防护知识 -->
<div class="tabs_list fhzs">
</div>
</div>
</div>
</div>
</div><!-- container结束 -->
<script>
//在国内,国外疫情,防护知识间切换
var ospan = document.querySelectorAll('.middle_con .wrap .tabs .tabs_wrap span');
var num_op = 0;
var tabs_list = document.querySelectorAll('.middle_con .wrap .tabs_content .tabs_list');
tabs_list[0].style.display = 'block';
for (var i = 0; i < ospan.length; i++) {
ospan[i].index = i;
//一级标题:滑入事件
ospan[i].onclick = function () {
//一级标题style变化
ospan[num_op].className = '';
this.className = 'sty';
//二级内容block变化
tabs_list[num_op].style.display = '';
tabs_list[this.index].style.display = 'block';
num_op = this.index;
window.location.href="/index";
}
};
//绘制全球疫情地图
var myChart = echarts.init(document.getElementById('map_echarts'));
option = {
title: {
text:'世界累计确诊图',
subtitle:'2020-08-10',
left: 'center',
top: 'top'
},
tooltip: {
trigger: 'item',
transitionDuration: 0.2,
formatter: function (params) {
var value = params.value;
return "确诊人数:"+value;
}
},
dataRange:{
x:'left',
y:'bottom',
splitList:[
{start:10000000,label:'>1000000',color:'#990000'},
{start:1000000,end:10000000,label:'1000000-1000000',color:'#FF6600'},
{start:100000,end:1000000,label:'100000-1000000',color:'#FF6699'},
{start:10000,end:100000,label:'10000-100000',color:'#FF99CC'},
{start:1000,end:10000,label:'1000-10000',color:'#FFCC00'},
{start:100,end:1000,label:'100-1000',color:'#FFFF00'},
{start:0,end:100,label:'0-100',color:'#FFFFCC'},
],
textStyle:{
color:'#3899FF'
},
selectMode:'false'
},
series: [
{
name: 'World Population (2010)',
type: 'map',
mapType: 'world',
roam: true,
itemStyle:{
emphasis:{label:{show:true}}
},
status:"true",
nameMap: {
"Afghanistan": "阿富汗",
"Angola": "安哥拉",
"Albania": "阿尔巴尼亚",
"Algeria": "阿尔及利亚",
"Argentina": "阿根廷",
"Armenia": "亚美尼亚",
"Australia": "澳大利亚",
"Austria": "奥地利",
"Azerbaijan": "阿塞拜疆",
"Bahamas": "巴哈马",
"Bangladesh": "孟加拉国",
"Belgium": "比利时",
"Benin": "贝宁",
"Burkina Faso": "布基纳法索",
"Burundi": "布隆迪",
"Bulgaria": "保加利亚",
"Bosnia and Herz.": "波斯尼亚和黑塞哥维那",
"Belarus": "白俄罗斯",
"Belize": "伯利兹",
"Bermuda": "百慕大群岛",
"Bolivia": "玻利维亚",
"Brazil": "巴西",
"Brunei": "文莱",
"Bhutan": "不丹",
"Botswana": "博茨瓦纳",
"Cambodia": "柬埔寨",
"Cameroon": "喀麦隆",
"Canada": "加拿大",
"Central African Rep.": "中非共和国",
"Chad": "乍得",
"Chile": "智利",
"China": "中国",
"Colombia": "哥伦比亚",
"Congo": "刚果",
"Costa Rica": "哥斯达黎加",
"Côte d'Ivoire": "科特迪瓦",
"Croatia": "克罗地亚",
"Cuba": "古巴",
"Cyprus": "塞浦路斯",
"Czech Rep.": "捷克共和国",
"Dem. Rep. Korea": "韩国",
"Dem. Rep. Congo": "刚果(金)",
"Denmark": "丹麦",
"Djibouti": "吉布提",
"Dominican Rep.": "多米尼加共和国",
"Ecuador": "厄瓜多尔",
"Egypt": "埃及",
"El Salvador": "萨尔瓦多",
"Eq. Guinea": "赤道几内亚",
"Eritrea": "厄立特里亚",
"Estonia": "爱沙尼亚",
"Ethiopia": "埃塞俄比亚",
"Falkland Is.": "福克兰群岛",
"Fiji": "斐济",
"Finland": "芬兰",
"France": "法国",
"French Guiana": "法属圭亚那",
"Fr. S. Antarctic Lands": "法属南部领地",
"Gabon": "加蓬",
"Gambia": "冈比亚",
"Germany": "德国",
"Georgia": "佐治亚州",
"Ghana": "加纳",
"Greece": "希腊",
"Greenland": "格陵兰岛",
"Guatemala": "危地马拉",
"Guinea": "几内亚",
"Guinea-Bissau": "几内亚比绍",
"Guyana": "圭亚那",
"Haiti": "海地",
"Heard I. and McDonald Is.": "赫德岛和麦克唐纳群岛",
"Honduras": "洪都拉斯",
"Hungary": "匈牙利",
"Iceland": "冰岛",
"India": "印度",
"Indonesia": "印度尼西亚",
"Iran": "伊朗",
"Iraq": "伊拉克",
"Ireland": "爱尔兰",
"Israel": "以色列",
"Italy": "意大利",
"Ivory Coast": "象牙海岸",
"Jamaica": "牙买加",
"Japan": "日本",
"Jordan": "乔丹",
"Kashmir": "克什米尔",
"Kazakhstan": "哈萨克斯坦",
"Kenya": "肯尼亚",
"Kosovo": "科索沃",
"Kuwait": "科威特",
"Kyrgyzstan": "吉尔吉斯斯坦",
"Laos": "老挝",
"Lao PDR": "老挝人民民主共和国",
"Latvia": "拉脱维亚",
"Lebanon": "黎巴嫩",
"Lesotho": "莱索托",
"Liberia": "利比里亚",
"Libya": "利比亚",
"Lithuania": "立陶宛",
"Luxembourg": "卢森堡",
"Madagascar": "马达加斯加",
"Macedonia": "马其顿",
"Malawi": "马拉维",
"Malaysia": "马来西亚",
"Mali": "马里",
"Mauritania": "毛里塔尼亚",
"Mexico": "墨西哥",
"Moldova": "摩尔多瓦",
"Mongolia": "蒙古国",
"Montenegro": "黑山",
"Morocco": "摩洛哥",
"Mozambique": "莫桑比克",
"Myanmar": "缅甸",
"Namibia": "纳米比亚",
"Netherlands": "荷兰",
"New Caledonia": "新喀里多尼亚",
"New Zealand": "新西兰",
"Nepal": "尼泊尔",
"Nicaragua": "尼加拉瓜",
"Niger": "尼日尔",
"Nigeria": "尼日利亚",
"Korea": "朝鲜",
"Northern Cyprus": "北塞浦路斯",
"Norway": "挪威",
"Oman": "阿曼",
"Pakistan": "巴基斯坦",
"Panama": "巴拿马",
"Papua New Guinea": "巴布亚新几内亚",
"Paraguay": "巴拉圭",
"Peru": "秘鲁",
"Republic of the Congo": "刚果共和国",
"Philippines": "菲律宾",
"Poland": "波兰",
"Portugal": "葡萄牙",
"Puerto Rico": "波多黎各",
"Qatar": "卡塔尔",
"Republic of Serbia": "塞尔维亚共和国",
"Romania": "罗马尼亚",
"Russia": "俄罗斯",
"Rwanda": "卢旺达",
"Samoa": "萨摩亚",
"Saudi Arabia": "沙特阿拉伯",
"Senegal": "塞内加尔",
"Serbia": "塞尔维亚",
"Sierra Leone": "塞拉利昂",
"Slovakia": "斯洛伐克",
"Slovenia": "斯洛文尼亚",
"Solomon Is.": "所罗门群岛",
"Somaliland": "索马里兰",
"Somalia": "索马里",
"South Africa": "南非",
"S. Geo. and S. Sandw. Is.": "南乔治亚和南桑德威奇群岛",
"S. Sudan": "南苏丹",
"Spain": "西班牙",
"Sri Lanka": "斯里兰卡",
"Sudan": "苏丹",
"Suriname": "苏里南",
"Swaziland": "斯威士兰",
"Sweden": "瑞典",
"Switzerland": "瑞士",
"Syria": "叙利亚",
"Tajikistan": "塔吉克斯坦",
"Tanzania": "坦桑尼亚",
"Thailand": "泰国",
"Timor-Leste": "东帝汶",
"Togo": "多哥",
"Trinidad and Tobago": "特立尼达和多巴哥",
"Tunisia": "突尼斯",
"Turkey": "土耳其",
"Turkmenistan": "土库曼斯坦",
"Uganda": "乌干达",
"Ukraine": "乌克兰",
"United Arab Emirates": "阿拉伯联合酋长国",
"United Kingdom": "大不列颠联合王国",
"United Republic of Tanzania": "坦桑尼亚联合共和国",
"United States": "美国",
"United States of America": "美利坚合众国",
"Uruguay": "乌拉圭",
"Uzbekistan": "乌兹别克斯坦",
"Vanuatu": "瓦努阿图",
"Venezuela": "委内瑞拉",
"Vietnam": "越南",
"West Bank": "西岸",
"W. Sahara": "西撒哈拉",
"Yemen": "也门",
"Zambia": "赞比亚",
"Zimbabwe": "津巴布韦"
},
data: [],
}
]
};
//绘制前10个确诊人数最多的国家
var top10chart=echarts.init(document.getElementById('top10chart'));
var top10option={
title:{
},
tooltip:{
trigger:"axis",
},
legend:{
itemWith:15,
itemHeight:15,
data:['累计确诊','新增确诊']
},
xAxis:{
type:'category',
data:[],
splitLine:{
show:true,
},
axisLabel:{interval: 0}
},
yAxis:{
splitLine:{
show:false,
}
},
series:[{
name:'累计确诊',
type:'bar',
stack:'累计',
data:[],
},{
name:'新增确诊',
type:'bar',
stack:'新增',
data:[],
}
]
};
//绘制全球确诊人数增长曲线
var totalAdd=echarts.init(document.getElementById('asymptomaticLoc'));
Addoption={
title:{
},
tooltip:{
trigger:'axis',
},
legend:{
data:[],
},
toolbox:{
show:true,
feture:{
dataZoom:{
yAxisIndex:'none',
},
dataView:{readOnly:false},
magicType:{type:['line','bar']},
restore:{},
saveAsImage:{}
},
},
xAxis:{
type:'category',
boundaryGap:false,
data:[],
axisLabel:{interval: 0}
},
yAxis:{
type:'value',
axisLabel:{
formatter:'{value}'
}
},
series:[
{
name:'累计新增',
type:'line',
data:[],
markPoint:{
data:[
{type:'max',name:'最大值'},
{type:'min',name:'最小值'}
]
},
markLine:{
data:[
{type:'average',name:'平均值'}
]
}
},
]
};
function eachchina(province,confirmed,curconfirm,died) {
var str = '';
if (province.length!=0) {
for (var i = 0, len = province.length; i < len; i++) {
str += `<li class="c_line">
<div class="line_first">
<span class="c_area">
<img src="{{url_for('static',filename='images/arrow.png')}}">`;
str += `<div style="display:inline-block;margin-left:0.1rem;">` + province[i] + `</div>`;
str += `</span>`;
str += `<span class="c_confirm">` + confirmed[i] + `</span>`;
str += `<span class="c_dead">` + curconfirm[i] + `</span>`;
str += `<span class="c_heal">` + died[i] + `</span>`;
str += `</div>`;
str += `</li>`;
}
return str;
}
}
$.ajax({
cache:false,
type:'POST',
async:false,
url:'/globalInfo',
error:function(request){
alert('false');
},
success:function(results){
$("#nowtime").html(results.updateTime);
$(".num1").html(results.TotalConfirmed); //确诊病例
$(".add_num1").html(results.TotalcurConfirmRelative);//新增
$(".num2").html(results.TotalCurConfirm); //现存确诊
$(".add_num2").html(results.TotalconfirmRelative); //新增
$(".num3").html(results.TotalDied); //死亡人数
$(".add_num3").html(results.TotalDiedRelative); //新增死亡人数
$(".num4").html(results.TotalCrued); //治愈人数
$(".add_num4").html(results.TotalCruedRelative); //新增治愈人数
confirmed=results.confirmed;
foreignName=results.country;
for(i=0;i<confirmed.length;i++){
option.series[0].data.push({name:foreignName[i],value:confirmed[i]});
}
//获取各国疫情信息进行表格填充
curConfirmedRelative=results.confirmedRelative;
died=results.died;
$(".china.table_pro .content").html(eachchina(foreignName,confirmed,curConfirmedRelative,died));
top10confirmed=results.top10confirmed;
top10curconfirm=results.top10curconfirm;
top10country=results.top10country;
for(i=0;i<10;i++){
top10option.xAxis.data.push(top10country[i]);
top10option.series[0].data.push(top10confirmed[i]);
top10option.series[1].data.push(top10curconfirm[i]);
}
newAddconfirmed=results.newAddconfirmed;
newAddTime=results.newAddTime;
for(i=0;i<newAddTime.length;i++){
Addoption.xAxis.data.push(newAddTime[i]);
Addoption.series[0].data.push(newAddconfirmed[i]);
}
myChart.setOption(option);
top10chart.setOption(top10option);
totalAdd.setOption(Addoption);
}
});
</script>
<!-- 引入响应式布局的rem根标签 -->
<script>
(function(win,doc){
var docEl = doc.documentElement || document.body;//获取HTML标签
var container = doc.getElementById('container');//container元素
//判断是移动端设备还是PC,移动 就采用'orientationchange',横竖屏事件PC端就采用onresize窗口改变时间
var resize = 'onorientationchange' in win ? 'orientationchange':'resize';
function rem(){
docEl.style.fontSize= 100*(container.clientWidth/750)+'px';
}
//监听'DOMContent事件:DOM加载完成执行,如果DOMContent事件那么执行rem函数
doc.addEventListener('DOMContentLoaded',rem,false);
//win下监听resize事件,如果resize事件那么执行rem函数
win.addEventListener(resize,rem,false);
})(window,document);
</script>
</body>
</html>

@ -1,439 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<!--如果是IE 就以标准渲染-->
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<!-- 视窗——————响应式布局 -->
<meta name='viewport' content='width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0'>
<!--当前页面的三要素-->
<title>实时疫情</title>
<meta name="description" content="关键词、关键字">
<meta name="keywords" content="描述">
<link rel="icon" href="{{url_for('static',filename='images/favicon.ico')}}" type="image/x-icon" />
<!-- 引入CSS文件 -->
<link rel="stylesheet" type="text/css" href="{{url_for('static',filename='css/index.css')}}">
<!-- 公共样式 -->
<link rel="stylesheet" type="text/css" href="{{ url_for('static',filename='css/common.css')}}">
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
<script src={{url_for('static',filename='js/update.js')}}></script>
<script
src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js">
</script>
<script src={{url_for('static',filename='js/china.js')}}></script>
<script type='text/javascript' src='{{ url_for("static",filename="js/echarts.js")}}'></script>
<script type='text/javascript' src='{{ url_for("static",filename="js/china.js")}}'></script>
<script type="text/javascript",src=" {{url_for('static',filename='js/jquery-3.2.1.js')}}"></script>
</head>
<body>
<div id='container' class='container'>
<div class="top">
<img src="{{url_for('static',filename='images/wuhan.jpeg')}}" alt="" width="100%" class="t_img">
</div>
<div class="middle middle_con">
<div class='wrap'>
<div class="scroll_wrap">
<div class="scroll_img">
<img src="{{url_for('static',filename='images/news.png')}}" alt="">
</div>
<div class="scroll_mar">
<marquee behavior="scroll" direction="left">
华科生产实习新冠疫情监测与分析 第三组
</marquee>
</div>
<div class="scroll_detail"><a href="https://voice.baidu.com/act/newpneumonia/newpneumonia/">数据来源</a></div>
</div>
<div class="tabs">
<span class="tabs_wrap">
<span class="sty">国内疫情</span>
<span >国外疫情</span>
</span>
</div>
<div class="tabs_content">
<!-- 国内疫情 -->
<div class="tabs_list gailan">
<!-- gl_tips -->
<p class="gl_tips">截止<span id="nowtime">2020-02-02 11:52</span>全国数据统计</p>
<!-- detail4 -->
<div class="detail4">
<div class="list4">
<p class="color1">较昨日+<span class="add_num1">110</span></p>
<p class="num num1 color1">0</p>
<div class="text">确诊病例</div>
</div>
<div class="list4">
<p class="color2">较昨日<span class="add_num2">110</span></p>
<p class="num num2 color2">0</p>
<div class="text">现存确诊</div>
</div>
<div class="list4">
<p class="color3">较昨日+<span class="add_num3">110</span></p>
<p class="num num3 color3">0</p>
<div class="text">死亡人数</div>
</div>
<div class="list4">
<p class="color4">较昨日+<span class="add_num4">110</span></p>
<p class="num num4 color4">0</p>
<div class="text">治愈人数</div>
</div>
<div class="list4">
<p class="color5">较昨日+<span class="add_num5">110</span></p>
<p class="num num5 color5">0</p>
<div class="text">疑似病例</div>
</div>
</div>
<!-- map -->
<div class="map t_common">
<div class="map_tit tit_common">
<!-- <span class="tit_icon"></span> -->
<span class="tit_con">&nbsp;&nbsp;全国累计确诊</span>
</div>
<div class="map_con" id="map_echarts" style="width:100%;height:300px;">
</div>
</div>
<p><br> </p>
<div class="map t_common">
<div class="map_tit tit_common">
<span class="tit_con">当前确诊人数最多的5个省份</span>
<div class="map_con" id="top5chart" style="width:100%;height:300px;"></div>
</div>
</div>
<p><br> </p>
<div id="echarts1" style="width:100%;height:4rem;margin-bottom:0.4rem;"></div>
<div class="map t_common">
<div class="map_tit tit_common">
<span class="tit_con">全国无症状感染者分布</span>
<div class="map_con" id="asymptomaticLoc" style="width:100%;height:300px;"></div>
</div>
</div>
<p><br> </p>
<div id="echarts2" style="width:100%;height:4rem;margin-bottom:0.4rem;"></div>
<!-- table -->
<!-- 全国表格 -->
<div class="china table_t t_common">
<div class="tit_common">
<!-- <span class="tit_icon"></span> -->
<span class="tit_con">&nbsp;&nbsp;全国数据统计</span>
</div>
</div>
<div class="china table_pro">
<div class="title">
<span class="t_area">地区</span>
<span class="t_confirm">累计确诊</span>
<span class="t_dead">新增</span>
<span class="t_heal">死亡</span>
</div>
<ul class="content">
</ul>
</div>
</div>
<!-- 国外疫情 -->
<div class="tabs_list dongtai">
<div class="main">
<ul class="cbp_tmtimeline">
<!-- 这里是最新动态 -->
</ul>
</div>
</div>
<!-- 防护知识 -->
<div class="tabs_list fhzs">
</div>
</div>
</div>
</div>
</div><!-- container结束 -->
<script>
//在国内,国外疫情,防护知识间切换
console.log("+++++++++++++++++++++++++++++");
var ospan = document.querySelectorAll('.middle_con .wrap .tabs .tabs_wrap span');
console.log(ospan.length);
var num_op = 0;
var tabs_list = document.querySelectorAll('.middle_con .wrap .tabs_content .tabs_list');
console.log(tabs_list.length);
tabs_list[0].style.display = 'block';
for (var i = 0; i < ospan.length; i++) {
ospan[i].index = i;
//一级标题:滑入事件
ospan[i].onclick = function () {
//一级标题style变化
ospan[num_op].className = '';
this.className = 'sty';
//二级内容block变化
tabs_list[num_op].style.display = '';
tabs_list[this.index].style.display = 'block';
num_op = this.index;
window.location.href="/foreign";
}
};
//绘制全国疫情地图
var dataList=[]
var myChart = echarts.init(document.getElementById('map_echarts'));
option = {
tooltip: {
formatter:function(params,ticket, callback){
return params.seriesName+'<br />'+params.name+''+params.value
}//数据格式化
},
visualMap: {
min: 0,
max: 100000,
left: 10,
bottom: 40,
itemWidth: 5, //图元的宽
itemHeight: 5, //图元的高
itemGap: 5, //两个图元之间的间隔距离
textStyle: {
fontSize: 9, //图元字体大小
},
pieces: [{
gt: 10000,
label: "> 10000",
color: "#7f1100"
}, {
gte: 1000,
lte: 10000,
label: "1000 - 10000",
color: "#ff5428"
}, {
gte: 500,
lt: 1000,
label: "500 - 1000",
color: "#ff8c71"
}, {
gt: 100,
lt: 500,
label: "100 - 500",
color: "#ffd768"
}, {
gt: 0,
lt: 100,
label: "0 - 100",
color: "rgb(253,235,207)"
}],
show: true
},
geo: {
map: 'china',
roam: false,//不开启缩放和平移
zoom:1.23,//视角缩放比例
label: {
normal: {
show: true,
fontSize:'10',
color: 'rgba(0,0,0,0.7)'
}
},
itemStyle: {
normal:{
borderColor: 'rgba(0, 0, 0, 0.2)'
},
emphasis:{
areaColor: '#F3B329',//鼠标选择区域颜色
shadowOffsetX: 0,
shadowOffsetY: 0,
shadowBlur: 20,
borderWidth: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
},
series : [
{
name: '确诊人数',
type: 'map',
geoIndex: 0,
data:dataList
}
]
};
//绘制前5个确诊人数最多的省份
var top5chart=echarts.init(document.getElementById("top5chart"));
top5option={
title:{
},
tooltip:{
trigger:'item',
formatter:'{a}<br/>{b}:{c}({d}%)',
},
legend:{
orient:'vertical',
left:'left',
data:[],
},
series:[
{
name:'访问来源',
type:'pie',
radius:'55%',
center:['50%','60%'],
data:[],
emphasis:{
itemStyle:{
shadowBlur:10,
shadowOffsetX:0,
shadowColor:'rgba(0,0,0,0.5)'
}
}
}
],
};
//绘制全国无症状感染者分布
var asymptomatic=echarts.init(document.getElementById("asymptomaticLoc"));
sympoption={
title:{
},
xAxis:{
type:'category',
data:[]
},
yAxis:{
type:'value',
},
series:[{
data:[],
type:'bar',
showBackground:true,
backgroundStyle:{
color:'rgb(220,220,0.8)'
}
}]
};
function eachchina(province,confirmed,curconfirm,died) {
var str = '';
if (province.length!=0) {
for (var i = 0, len = province.length; i < len; i++) {
str += `<li class="c_line">
<div class="line_first">
<span class="c_area">
<img src="{{url_for('static',filename='images/arrow.png')}}">`;
str += `<div style="display:inline-block;margin-left:0.1rem;">` + province[i] + `</div>`;
str += `</span>`;
str += `<span class="c_confirm">` + confirmed[i] + `</span>`;
str += `<span class="c_dead">` + curconfirm[i] + `</span>`;
str += `<span class="c_heal">` + died[i] + `</span>`;
str += `</div>`;
str += `</li>`;
}
return str;
}
}
$.ajax({
cache:false,
type:'POST',
async:false,
url:'/chinaSummary',
error:function(request){
alert('false');
},
success:function(results){
$("#nowtime").html(results.updateTime);
$(".num1").html(results.confirmed); //确诊病例
$(".add_num1").html(results.confirmedRelative); //新增确诊病例
$(".num2").html(results.curConfirm); //疑似病例
$(".add_num2").html(results.curConfirmRelative); //新增疑似病例
$(".num3").html(results.died); //死亡人数
$(".add_num3").html(results.diedRelative); //新增死亡人数
$(".num4").html(results.cured); //治愈人数
$(".add_num4").html(results.curedRelative); //新增治愈人数
$(".num5").html(results.suspect); //治愈人数
$(".add_num5").html(results.suspectRelative); //新增治愈人数
top5option.title.subtext=results.updateTime;
cityName=results.area;
proconfirmed=results.proconfirmed;
for(i=0;i<cityName.length;i++){
option.series[0].data.push({name:cityName[i],value:proconfirmed[i]});
}
top5province=results.top5province;
top5confirmed=results.top5confirmed;
proconfirmedRelative=results.proconfirmedRelative;
prodied=results.prodied;
for(i=0;i<top5province.length;i++){
top5option.series[0].data.push({name:top5province[i],value:top5confirmed[i]});
top5option.legend.data.push(top5province[i]);
}
asymptomaticNum=results.asymptomacNum;
asymptomaticArea=results.asymptomaticArea;
for(i=0;i<asymptomaticNum.length;i++){
sympoption.xAxis.data.push(asymptomaticArea[i]);
sympoption.series[0].data.push(asymptomaticNum[i]);
}
myChart.setOption(option);
top5chart.setOption(top5option);
asymptomatic.setOption(sympoption);
$(".china.table_pro .content").html(eachchina(cityName,proconfirmed,proconfirmedRelative,prodied));
}
});
</script>
<!-- 引入响应式布局的rem根标签 -->
<script>
(function(win,doc){
var docEl = doc.documentElement || document.body;//获取HTML标签
var container = doc.getElementById('container');//container元素
//判断是移动端设备还是PC,移动 就采用'orientationchange',横竖屏事件PC端就采用onresize窗口改变时间
var resize = 'onorientationchange' in win ? 'orientationchange':'resize';
function rem(){
docEl.style.fontSize= 100*(container.clientWidth/750)+'px';
}
//监听'DOMContent事件:DOM加载完成执行,如果DOMContent事件那么执行rem函数
doc.addEventListener('DOMContentLoaded',rem,false);
//win下监听resize事件,如果resize事件那么执行rem函数
win.addEventListener(resize,rem,false);
})(window,document);
</script>
</body>
</html>

@ -1,76 +0,0 @@
# This file must be used with "source bin/activate" *from bash*
# you cannot run it directly
deactivate () {
# reset old environment variables
if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then
PATH="${_OLD_VIRTUAL_PATH:-}"
export PATH
unset _OLD_VIRTUAL_PATH
fi
if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then
PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}"
export PYTHONHOME
unset _OLD_VIRTUAL_PYTHONHOME
fi
# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands. Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
hash -r
fi
if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then
PS1="${_OLD_VIRTUAL_PS1:-}"
export PS1
unset _OLD_VIRTUAL_PS1
fi
unset VIRTUAL_ENV
if [ ! "$1" = "nondestructive" ] ; then
# Self destruct!
unset -f deactivate
fi
}
# unset irrelevant variables
deactivate nondestructive
VIRTUAL_ENV="/home/xudong/桌面/生产实习/疫情数据采集分析及可视化/数据分析和可视化/新冠疫情/venv"
export VIRTUAL_ENV
_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/bin:$PATH"
export PATH
# unset PYTHONHOME if set
# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
# could use `if (set -u; : $PYTHONHOME) ;` in bash
if [ -n "${PYTHONHOME:-}" ] ; then
_OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}"
unset PYTHONHOME
fi
if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
_OLD_VIRTUAL_PS1="${PS1:-}"
if [ "x(venv) " != x ] ; then
PS1="(venv) ${PS1:-}"
else
if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
# special case for Aspen magic directories
# see http://www.zetadev.com/software/aspen/
PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1"
else
PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
fi
fi
export PS1
fi
# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands. Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
hash -r
fi

@ -1,37 +0,0 @@
# This file must be used with "source bin/activate.csh" *from csh*.
# You cannot run it directly.
# Created by Davide Di Blasi <davidedb@gmail.com>.
# Ported to Python 3.3 venv by Andrew Svetlov <andrew.svetlov@gmail.com>
alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate'
# Unset irrelevant variables.
deactivate nondestructive
setenv VIRTUAL_ENV "/home/xudong/桌面/生产实习/疫情数据采集分析及可视化/数据分析和可视化/新冠疫情/venv"
set _OLD_VIRTUAL_PATH="$PATH"
setenv PATH "$VIRTUAL_ENV/bin:$PATH"
set _OLD_VIRTUAL_PROMPT="$prompt"
if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then
if ("venv" != "") then
set env_name = "venv"
else
if (`basename "VIRTUAL_ENV"` == "__") then
# special case for Aspen magic directories
# see http://www.zetadev.com/software/aspen/
set env_name = `basename \`dirname "$VIRTUAL_ENV"\``
else
set env_name = `basename "$VIRTUAL_ENV"`
endif
endif
set prompt = "[$env_name] $prompt"
unset env_name
endif
alias pydoc python -m pydoc
rehash

@ -1,75 +0,0 @@
# This file must be used with ". bin/activate.fish" *from fish* (http://fishshell.org)
# you cannot run it directly
function deactivate -d "Exit virtualenv and return to normal shell environment"
# reset old environment variables
if test -n "$_OLD_VIRTUAL_PATH"
set -gx PATH $_OLD_VIRTUAL_PATH
set -e _OLD_VIRTUAL_PATH
end
if test -n "$_OLD_VIRTUAL_PYTHONHOME"
set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME
set -e _OLD_VIRTUAL_PYTHONHOME
end
if test -n "$_OLD_FISH_PROMPT_OVERRIDE"
functions -e fish_prompt
set -e _OLD_FISH_PROMPT_OVERRIDE
functions -c _old_fish_prompt fish_prompt
functions -e _old_fish_prompt
end
set -e VIRTUAL_ENV
if test "$argv[1]" != "nondestructive"
# Self destruct!
functions -e deactivate
end
end
# unset irrelevant variables
deactivate nondestructive
set -gx VIRTUAL_ENV "/home/xudong/桌面/生产实习/疫情数据采集分析及可视化/数据分析和可视化/新冠疫情/venv"
set -gx _OLD_VIRTUAL_PATH $PATH
set -gx PATH "$VIRTUAL_ENV/bin" $PATH
# unset PYTHONHOME if set
if set -q PYTHONHOME
set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME
set -e PYTHONHOME
end
if test -z "$VIRTUAL_ENV_DISABLE_PROMPT"
# fish uses a function instead of an env var to generate the prompt.
# save the current fish_prompt function as the function _old_fish_prompt
functions -c fish_prompt _old_fish_prompt
# with the original prompt function renamed, we can override with our own.
function fish_prompt
# Save the return status of the last command
set -l old_status $status
# Prompt override?
if test -n "(venv) "
printf "%s%s" "(venv) " (set_color normal)
else
# ...Otherwise, prepend env
set -l _checkbase (basename "$VIRTUAL_ENV")
if test $_checkbase = "__"
# special case for Aspen magic directories
# see http://www.zetadev.com/software/aspen/
printf "%s[%s]%s " (set_color -b blue white) (basename (dirname "$VIRTUAL_ENV")) (set_color normal)
else
printf "%s(%s)%s" (set_color -b blue white) (basename "$VIRTUAL_ENV") (set_color normal)
end
end
# Restore the return status of the previous command.
echo "exit $old_status" | .
_old_fish_prompt
end
set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV"
end

@ -1,19 +0,0 @@
Copyright 2005-2020 SQLAlchemy authors and contributors <see AUTHORS file>.
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

@ -1,195 +0,0 @@
Metadata-Version: 2.1
Name: SQLAlchemy
Version: 1.3.18
Summary: Database Abstraction Library
Home-page: http://www.sqlalchemy.org
Author: Mike Bayer
Author-email: mike_mp@zzzcomputing.com
License: MIT
Project-URL: Documentation, https://docs.sqlalchemy.org
Project-URL: Issue Tracker, https://github.com/sqlalchemy/sqlalchemy/
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Database :: Front-Ends
Classifier: Operating System :: OS Independent
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
Provides-Extra: mssql
Requires-Dist: pyodbc ; extra == 'mssql'
Provides-Extra: mssql_pymssql
Requires-Dist: pymssql ; extra == 'mssql_pymssql'
Provides-Extra: mssql_pyodbc
Requires-Dist: pyodbc ; extra == 'mssql_pyodbc'
Provides-Extra: mysql
Requires-Dist: mysqlclient ; extra == 'mysql'
Provides-Extra: oracle
Requires-Dist: cx-oracle ; extra == 'oracle'
Provides-Extra: postgresql
Requires-Dist: psycopg2 ; extra == 'postgresql'
Provides-Extra: postgresql_pg8000
Requires-Dist: pg8000 ; extra == 'postgresql_pg8000'
Provides-Extra: postgresql_psycopg2binary
Requires-Dist: psycopg2-binary ; extra == 'postgresql_psycopg2binary'
Provides-Extra: postgresql_psycopg2cffi
Requires-Dist: psycopg2cffi ; extra == 'postgresql_psycopg2cffi'
Provides-Extra: pymysql
Requires-Dist: pymysql ; extra == 'pymysql'
SQLAlchemy
==========
The Python SQL Toolkit and Object Relational Mapper
Introduction
-------------
SQLAlchemy is the Python SQL toolkit and Object Relational Mapper
that gives application developers the full power and
flexibility of SQL. SQLAlchemy provides a full suite
of well known enterprise-level persistence patterns,
designed for efficient and high-performing database
access, adapted into a simple and Pythonic domain
language.
Major SQLAlchemy features include:
* An industrial strength ORM, built
from the core on the identity map, unit of work,
and data mapper patterns. These patterns
allow transparent persistence of objects
using a declarative configuration system.
Domain models
can be constructed and manipulated naturally,
and changes are synchronized with the
current transaction automatically.
* A relationally-oriented query system, exposing
the full range of SQL's capabilities
explicitly, including joins, subqueries,
correlation, and most everything else,
in terms of the object model.
Writing queries with the ORM uses the same
techniques of relational composition you use
when writing SQL. While you can drop into
literal SQL at any time, it's virtually never
needed.
* A comprehensive and flexible system
of eager loading for related collections and objects.
Collections are cached within a session,
and can be loaded on individual access, all
at once using joins, or by query per collection
across the full result set.
* A Core SQL construction system and DBAPI
interaction layer. The SQLAlchemy Core is
separate from the ORM and is a full database
abstraction layer in its own right, and includes
an extensible Python-based SQL expression
language, schema metadata, connection pooling,
type coercion, and custom types.
* All primary and foreign key constraints are
assumed to be composite and natural. Surrogate
integer primary keys are of course still the
norm, but SQLAlchemy never assumes or hardcodes
to this model.
* Database introspection and generation. Database
schemas can be "reflected" in one step into
Python structures representing database metadata;
those same structures can then generate
CREATE statements right back out - all within
the Core, independent of the ORM.
SQLAlchemy's philosophy:
* SQL databases behave less and less like object
collections the more size and performance start to
matter; object collections behave less and less like
tables and rows the more abstraction starts to matter.
SQLAlchemy aims to accommodate both of these
principles.
* An ORM doesn't need to hide the "R". A relational
database provides rich, set-based functionality
that should be fully exposed. SQLAlchemy's
ORM provides an open-ended set of patterns
that allow a developer to construct a custom
mediation layer between a domain model and
a relational schema, turning the so-called
"object relational impedance" issue into
a distant memory.
* The developer, in all cases, makes all decisions
regarding the design, structure, and naming conventions
of both the object model as well as the relational
schema. SQLAlchemy only provides the means
to automate the execution of these decisions.
* With SQLAlchemy, there's no such thing as
"the ORM generated a bad query" - you
retain full control over the structure of
queries, including how joins are organized,
how subqueries and correlation is used, what
columns are requested. Everything SQLAlchemy
does is ultimately the result of a developer-
initiated decision.
* Don't use an ORM if the problem doesn't need one.
SQLAlchemy consists of a Core and separate ORM
component. The Core offers a full SQL expression
language that allows Pythonic construction
of SQL constructs that render directly to SQL
strings for a target database, returning
result sets that are essentially enhanced DBAPI
cursors.
* Transactions should be the norm. With SQLAlchemy's
ORM, nothing goes to permanent storage until
commit() is called. SQLAlchemy encourages applications
to create a consistent means of delineating
the start and end of a series of operations.
* Never render a literal value in a SQL statement.
Bound parameters are used to the greatest degree
possible, allowing query optimizers to cache
query plans effectively and making SQL injection
attacks a non-issue.
Documentation
-------------
Latest documentation is at:
http://www.sqlalchemy.org/docs/
Installation / Requirements
---------------------------
Full documentation for installation is at
`Installation <http://www.sqlalchemy.org/docs/intro.html#installation>`_.
Getting Help / Development / Bug reporting
------------------------------------------
Please refer to the `SQLAlchemy Community Guide <http://www.sqlalchemy.org/support.html>`_.
Code of Conduct
---------------
Above all, SQLAlchemy places great emphasis on polite, thoughtful, and
constructive communication between users and developers.
Please see our current Code of Conduct at
`Code of Conduct <http://www.sqlalchemy.org/codeofconduct.html>`_.
License
-------
SQLAlchemy is distributed under the `MIT license
<http://www.opensource.org/licenses/mit-license.php>`_.

@ -1,406 +0,0 @@
SQLAlchemy-1.3.18.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
SQLAlchemy-1.3.18.dist-info/LICENSE,sha256=WG4lA_RQxK6BaWDKMtQTuCDHQWJpdWvZThIkXGD4WXI,1100
SQLAlchemy-1.3.18.dist-info/METADATA,sha256=aHr-eAiuvV5zFSTKaXBH3t29xWscWA8pwdxr9efrXjc,7341
SQLAlchemy-1.3.18.dist-info/RECORD,,
SQLAlchemy-1.3.18.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
SQLAlchemy-1.3.18.dist-info/WHEEL,sha256=kRpTOiUzoWO2GDfCevceK0ME-mjr5hdBNCWO78h60mA,112
SQLAlchemy-1.3.18.dist-info/top_level.txt,sha256=rp-ZgB7D8G11ivXON5VGPjupT1voYmWqkciDt5Uaw_Q,11
sqlalchemy/__init__.py,sha256=qkLae-iReieZQJHQA7Zk8hEJ3z4bglh9J6oDWiJcjL8,4789
sqlalchemy/__pycache__/__init__.cpython-36.pyc,,
sqlalchemy/__pycache__/events.cpython-36.pyc,,
sqlalchemy/__pycache__/exc.cpython-36.pyc,,
sqlalchemy/__pycache__/inspection.cpython-36.pyc,,
sqlalchemy/__pycache__/interfaces.cpython-36.pyc,,
sqlalchemy/__pycache__/log.cpython-36.pyc,,
sqlalchemy/__pycache__/processors.cpython-36.pyc,,
sqlalchemy/__pycache__/schema.cpython-36.pyc,,
sqlalchemy/__pycache__/types.cpython-36.pyc,,
sqlalchemy/connectors/__init__.py,sha256=78tsbgw8Kh1tPCC2te-KV7DqeE7gRzUE2Qq64XIoUkU,278
sqlalchemy/connectors/__pycache__/__init__.cpython-36.pyc,,
sqlalchemy/connectors/__pycache__/mxodbc.cpython-36.pyc,,
sqlalchemy/connectors/__pycache__/pyodbc.cpython-36.pyc,,
sqlalchemy/connectors/__pycache__/zxJDBC.cpython-36.pyc,,
sqlalchemy/connectors/mxodbc.py,sha256=h_fyp3zVvJ22bBhHl0296MtieO977XHVhbugT9sYrFo,5352
sqlalchemy/connectors/pyodbc.py,sha256=lYpVUKpfYnkSzu5-Bj3KNng_ZGoItv8efYRf0JJhz2A,5738
sqlalchemy/connectors/zxJDBC.py,sha256=wJlwdsmRov3naSY71JvifytEC4lPqO5_eiF_K9UDb3E,1878
sqlalchemy/cprocessors.cpython-36m-x86_64-linux-gnu.so,sha256=AWFfQsAvmvOt3yHBc0PUgAct1HdTefEd2f6jQwxwyDU,58048
sqlalchemy/cresultproxy.cpython-36m-x86_64-linux-gnu.so,sha256=hqDVco-I8Pbf5UKM6k6CXTMcOBg5sf39NU2fYtX6W6Y,69120
sqlalchemy/cutils.cpython-36m-x86_64-linux-gnu.so,sha256=g6i8QNo6USt-e8dv2KAku24ela7PjQ8bFRBpgg8E3qc,36712
sqlalchemy/databases/__init__.py,sha256=IywgDc8lo4rrxtHR7u1S1ttUMTKrKpYS3wwnd8bISQA,819
sqlalchemy/databases/__pycache__/__init__.cpython-36.pyc,,
sqlalchemy/dialects/__init__.py,sha256=2Cra66jK1L9BzcAJUhVaJXR0vPG06L3MI6GEh-b69KI,1909
sqlalchemy/dialects/__pycache__/__init__.cpython-36.pyc,,
sqlalchemy/dialects/firebird/__init__.py,sha256=xiywqBgVlgc1yaV-IlwJdgLXhAb9ise-B-vfcoFzQLw,1152
sqlalchemy/dialects/firebird/__pycache__/__init__.cpython-36.pyc,,
sqlalchemy/dialects/firebird/__pycache__/base.cpython-36.pyc,,
sqlalchemy/dialects/firebird/__pycache__/fdb.cpython-36.pyc,,
sqlalchemy/dialects/firebird/__pycache__/kinterbasdb.cpython-36.pyc,,
sqlalchemy/dialects/firebird/base.py,sha256=JhCY_X5rRIQK_HniJ2YxDX1NO-_LvXLImmxGvCzLsyM,30316
sqlalchemy/dialects/firebird/fdb.py,sha256=kQQ3atPmEdsgxqtYBRZwg0HGitQiS5-VtL2f13WDWpI,4079
sqlalchemy/dialects/firebird/kinterbasdb.py,sha256=X7UfqENJaVFJaQj_7dK7NyxmGU8bvAfKkv5m2lQl4rs,6437
sqlalchemy/dialects/mssql/__init__.py,sha256=OMkEnG7PSHt4ee_P0DKfhXG1jLh5nzRuvxqKLfYLPO8,1812
sqlalchemy/dialects/mssql/__pycache__/__init__.cpython-36.pyc,,
sqlalchemy/dialects/mssql/__pycache__/adodbapi.cpython-36.pyc,,
sqlalchemy/dialects/mssql/__pycache__/base.cpython-36.pyc,,
sqlalchemy/dialects/mssql/__pycache__/information_schema.cpython-36.pyc,,
sqlalchemy/dialects/mssql/__pycache__/mxodbc.cpython-36.pyc,,
sqlalchemy/dialects/mssql/__pycache__/provision.cpython-36.pyc,,
sqlalchemy/dialects/mssql/__pycache__/pymssql.cpython-36.pyc,,
sqlalchemy/dialects/mssql/__pycache__/pyodbc.cpython-36.pyc,,
sqlalchemy/dialects/mssql/__pycache__/zxjdbc.cpython-36.pyc,,
sqlalchemy/dialects/mssql/adodbapi.py,sha256=u8QnHUI6C5nImuzyuk25D6oiBAQRjspM5SGjLySse1s,2719
sqlalchemy/dialects/mssql/base.py,sha256=VAB7y5zJsJjleoL5k0Q13tKX1KVGx3H18ENDB-eGs1A,90825
sqlalchemy/dialects/mssql/information_schema.py,sha256=plSgus0f7PsR28oTB8y4-UkXU43rTxh0ltaFRvua9-A,5639
sqlalchemy/dialects/mssql/mxodbc.py,sha256=geB0M9CAYo0AbPgiGLhWEGmx76B5SNGcQJ_PDl5yJMw,4616
sqlalchemy/dialects/mssql/provision.py,sha256=0WXdFXwePVPYVrV3mmbbiAkuj-Tv5Rr-i3aizbD6Z7w,2786
sqlalchemy/dialects/mssql/pymssql.py,sha256=mcCcdFNgy-J0_IH3LFbYNHMMg2rM8-a2O3cS9qFT7Xo,4784
sqlalchemy/dialects/mssql/pyodbc.py,sha256=k340ol4_2gy2OynxNCVBF6eLYkAcMmaanSfAr2Ocj-g,14908
sqlalchemy/dialects/mssql/zxjdbc.py,sha256=zxUozig0SWOlC6JuqzuyG6ojI55oI44P1RkaToWYul4,2311
sqlalchemy/dialects/mysql/__init__.py,sha256=9mlm4mqt_CxcbFh9KC38Srw0_OnvrSluBmOcaWoOlV8,2056
sqlalchemy/dialects/mysql/__pycache__/__init__.cpython-36.pyc,,
sqlalchemy/dialects/mysql/__pycache__/base.cpython-36.pyc,,
sqlalchemy/dialects/mysql/__pycache__/cymysql.cpython-36.pyc,,
sqlalchemy/dialects/mysql/__pycache__/dml.cpython-36.pyc,,
sqlalchemy/dialects/mysql/__pycache__/enumerated.cpython-36.pyc,,
sqlalchemy/dialects/mysql/__pycache__/gaerdbms.cpython-36.pyc,,
sqlalchemy/dialects/mysql/__pycache__/json.cpython-36.pyc,,
sqlalchemy/dialects/mysql/__pycache__/mysqlconnector.cpython-36.pyc,,
sqlalchemy/dialects/mysql/__pycache__/mysqldb.cpython-36.pyc,,
sqlalchemy/dialects/mysql/__pycache__/oursql.cpython-36.pyc,,
sqlalchemy/dialects/mysql/__pycache__/provision.cpython-36.pyc,,
sqlalchemy/dialects/mysql/__pycache__/pymysql.cpython-36.pyc,,
sqlalchemy/dialects/mysql/__pycache__/pyodbc.cpython-36.pyc,,
sqlalchemy/dialects/mysql/__pycache__/reflection.cpython-36.pyc,,
sqlalchemy/dialects/mysql/__pycache__/types.cpython-36.pyc,,
sqlalchemy/dialects/mysql/__pycache__/zxjdbc.cpython-36.pyc,,
sqlalchemy/dialects/mysql/base.py,sha256=wESkOIPtMWZ1IAWhbp7541QQGCC_tQ0QV-B25Ab-Fr4,102084
sqlalchemy/dialects/mysql/cymysql.py,sha256=iZIQWKba3Ap6N6Af5MEtCgHN4SoHSUKFJwD_3gktsME,2245
sqlalchemy/dialects/mysql/dml.py,sha256=yq9Kgm2IvLkt0_Uw1RGsuyjNQVgpWIWMFd2Ntm_R65Y,4764
sqlalchemy/dialects/mysql/enumerated.py,sha256=9hhAfnVzvFjXKEShwqp52XT6Kaq8aw4uD7CD6doPd6k,11307
sqlalchemy/dialects/mysql/gaerdbms.py,sha256=khU9l7SolzCyhF7d7q1iBn_OhPj3gw3IqGGtzomsugo,3375
sqlalchemy/dialects/mysql/json.py,sha256=AJ_-DkzgByPy-3XQhXms2JiTM7MxGr2Le6E4k2-eT50,2050
sqlalchemy/dialects/mysql/mysqlconnector.py,sha256=2piMPvg48daNXr2XzpLwmMm1VYVs9mw0AJ43OLXQgvI,7889
sqlalchemy/dialects/mysql/mysqldb.py,sha256=aSkj-xdGYIhPlH2sOvGOo0qrbX3lkR1r8RX-84Rxe4Q,8383
sqlalchemy/dialects/mysql/oursql.py,sha256=GzFBpEZGwWnLPVmC4IlU5_Y9gZvc-8-44-s6Xo2BXpg,8086
sqlalchemy/dialects/mysql/provision.py,sha256=sJ7IpiIB1Eb9AdRK3loRlsCHKzzsFGJzMgICyRrkFpY,1269
sqlalchemy/dialects/mysql/pymysql.py,sha256=8-V0VEWKOv1ooPQgRnm2Piqkk1lAqVDq16wZQB-xq58,2440
sqlalchemy/dialects/mysql/pyodbc.py,sha256=0UdZSRnCF-0EWsX36Azrvc15xE87YEzyJSSGQJqVx0U,3470
sqlalchemy/dialects/mysql/reflection.py,sha256=FgrerZD3x-KkXh5XbfYrPfNf_zNKFUVSRqW9Lv2iKjI,18267
sqlalchemy/dialects/mysql/types.py,sha256=sOIRc3hnpuYVOQZyDadJjigJvA3rjaz66yD4_dAibS4,24601
sqlalchemy/dialects/mysql/zxjdbc.py,sha256=u-jcqk3ZnpuPv89Hv3iEiCEhN0Ck4J48OLSYChZ3H-s,3970
sqlalchemy/dialects/oracle/__init__.py,sha256=0800ZWZlvJfZ8qd_K4OfDEUq0TnAL7WkvaJPkMLiRDU,1257
sqlalchemy/dialects/oracle/__pycache__/__init__.cpython-36.pyc,,
sqlalchemy/dialects/oracle/__pycache__/base.cpython-36.pyc,,
sqlalchemy/dialects/oracle/__pycache__/cx_oracle.cpython-36.pyc,,
sqlalchemy/dialects/oracle/__pycache__/provision.cpython-36.pyc,,
sqlalchemy/dialects/oracle/__pycache__/zxjdbc.cpython-36.pyc,,
sqlalchemy/dialects/oracle/base.py,sha256=0Oy_V7VNaPfyiSfMI9enlFgozpkzokQTynWhBc_myXc,76312
sqlalchemy/dialects/oracle/cx_oracle.py,sha256=dZT9x1zkopNAk0SYbn8X06mDXZo2Z34qXmR2fwOYVFU,44915
sqlalchemy/dialects/oracle/provision.py,sha256=zpAooUqZY741vrjplNkxV2v3uf4kbZb3r_LfH9dKkJw,3862
sqlalchemy/dialects/oracle/zxjdbc.py,sha256=eBqslfHL08YaEUzZ32-faQo9nxLCR3s8IadVAI200FY,8207
sqlalchemy/dialects/postgresql/__init__.py,sha256=G0qS6NaThvmq48RH378d90vBbfglrgKt_LxuGyq8UAM,2461
sqlalchemy/dialects/postgresql/__pycache__/__init__.cpython-36.pyc,,
sqlalchemy/dialects/postgresql/__pycache__/array.cpython-36.pyc,,
sqlalchemy/dialects/postgresql/__pycache__/base.cpython-36.pyc,,
sqlalchemy/dialects/postgresql/__pycache__/dml.cpython-36.pyc,,
sqlalchemy/dialects/postgresql/__pycache__/ext.cpython-36.pyc,,
sqlalchemy/dialects/postgresql/__pycache__/hstore.cpython-36.pyc,,
sqlalchemy/dialects/postgresql/__pycache__/json.cpython-36.pyc,,
sqlalchemy/dialects/postgresql/__pycache__/pg8000.cpython-36.pyc,,
sqlalchemy/dialects/postgresql/__pycache__/provision.cpython-36.pyc,,
sqlalchemy/dialects/postgresql/__pycache__/psycopg2.cpython-36.pyc,,
sqlalchemy/dialects/postgresql/__pycache__/psycopg2cffi.cpython-36.pyc,,
sqlalchemy/dialects/postgresql/__pycache__/pygresql.cpython-36.pyc,,
sqlalchemy/dialects/postgresql/__pycache__/pypostgresql.cpython-36.pyc,,
sqlalchemy/dialects/postgresql/__pycache__/ranges.cpython-36.pyc,,
sqlalchemy/dialects/postgresql/__pycache__/zxjdbc.cpython-36.pyc,,
sqlalchemy/dialects/postgresql/array.py,sha256=XrpqVaX2xvF8poI5CyD6gIq-3XgoSqIEeBwU_BSA41I,12043
sqlalchemy/dialects/postgresql/base.py,sha256=NLV1hQ6_EjepNJIYzXU6p4tW7w3YSuHACXh7h2h1zMs,125581
sqlalchemy/dialects/postgresql/dml.py,sha256=JWLLh1Z9Kuu6TgReIFMKqOHoQBwc0xDqzIwRLik7Yoc,7790
sqlalchemy/dialects/postgresql/ext.py,sha256=-lBaLXWbzapvozj1I8yP47GGtTmjXYPjnInJOTuHHTU,6905
sqlalchemy/dialects/postgresql/hstore.py,sha256=p62Vdg4REY-p4B3Y6dsIekj85vqMqEVj2DWUn8Z6Iig,12443
sqlalchemy/dialects/postgresql/json.py,sha256=MihPxRbtlVN54ya9EaDGHiB3IS2icpXmQVb7Vwol-e0,10132
sqlalchemy/dialects/postgresql/pg8000.py,sha256=bQI9hm4lr4JshUlFWSDpAYBWXsMCsgWyETkSZPDexJg,9722
sqlalchemy/dialects/postgresql/provision.py,sha256=E8LOoSNSWUlx77ihNLQfW9csAxsmL-qleiLPbVlSlVw,2008
sqlalchemy/dialects/postgresql/psycopg2.py,sha256=2H7YaVaNkitKwYlHztS5iAX5kjAvu2tHHevpbfAUgJ8,35979
sqlalchemy/dialects/postgresql/psycopg2cffi.py,sha256=8X5uLoW2am61rqwYs0agfngZ8awYia7AAnbgWwDF27w,1657
sqlalchemy/dialects/postgresql/pygresql.py,sha256=eyRnGRlqeEbiwYbhcazQUkyHnB4yCeh9c7nhnQyPJ8E,8129
sqlalchemy/dialects/postgresql/pypostgresql.py,sha256=9giPOxOzVlJHc7r4g-YsVsFWONZQQjIi_mVWzKopI2c,2915
sqlalchemy/dialects/postgresql/ranges.py,sha256=vvc2NmQsprM81VZeO1zukk4D_T3GTWJ_MoFa7E2chHE,4478
sqlalchemy/dialects/postgresql/zxjdbc.py,sha256=YMtRIy1IbMVMQKMxa_gORzXHbkEVxiJVBpeg4IFuYvM,1415
sqlalchemy/dialects/sqlite/__init__.py,sha256=EvPKdQyHTkXlziZo6wYrJ2D1V8Pa52zK5kb2I59uX4s,1042
sqlalchemy/dialects/sqlite/__pycache__/__init__.cpython-36.pyc,,
sqlalchemy/dialects/sqlite/__pycache__/base.cpython-36.pyc,,
sqlalchemy/dialects/sqlite/__pycache__/json.cpython-36.pyc,,
sqlalchemy/dialects/sqlite/__pycache__/provision.cpython-36.pyc,,
sqlalchemy/dialects/sqlite/__pycache__/pysqlcipher.cpython-36.pyc,,
sqlalchemy/dialects/sqlite/__pycache__/pysqlite.cpython-36.pyc,,
sqlalchemy/dialects/sqlite/base.py,sha256=LdlrRVtUyv6qa0Y5gvF5II4jPJpMGdYxXA5D_XMLKm4,74427
sqlalchemy/dialects/sqlite/json.py,sha256=IwhCnGL_BKtASpm0-OzeNByp3qtkcLZgAeBGY_EPUvM,2292
sqlalchemy/dialects/sqlite/provision.py,sha256=PEmgxbdz67KsONOEhFVQFLX3s4BXWKLb2gvNgj0gn9M,2591
sqlalchemy/dialects/sqlite/pysqlcipher.py,sha256=RwePrdk3xrEg2c0vpFQSos6823EKEHJKrF-jgo7mYrE,4692
sqlalchemy/dialects/sqlite/pysqlite.py,sha256=wDRcXcw8JFnGjbeu4qAeEp1vK8M_z86vY8Ls4AOSzEI,20983
sqlalchemy/dialects/sybase/__init__.py,sha256=W9wFI2eRTBJVLaoplH5esmiITkz9LiNa-nDhiG8DwpM,1363
sqlalchemy/dialects/sybase/__pycache__/__init__.cpython-36.pyc,,
sqlalchemy/dialects/sybase/__pycache__/base.cpython-36.pyc,,
sqlalchemy/dialects/sybase/__pycache__/mxodbc.cpython-36.pyc,,
sqlalchemy/dialects/sybase/__pycache__/pyodbc.cpython-36.pyc,,
sqlalchemy/dialects/sybase/__pycache__/pysybase.cpython-36.pyc,,
sqlalchemy/dialects/sybase/base.py,sha256=spYtmJV718RW-IUzKx11N8_k9GEKM95qeXVMK0ZtmBQ,31789
sqlalchemy/dialects/sybase/mxodbc.py,sha256=LqEEcLRrXuLICWLpg2ePgczZhuGzU20JsO2j_W3M2Ho,902
sqlalchemy/dialects/sybase/pyodbc.py,sha256=013aGwoG1C19S_v4lPSZj4ComdPrdlwSMH8F7pjyMS8,2120
sqlalchemy/dialects/sybase/pysybase.py,sha256=7iF-t7qfR5VGNeYzHkDoPNthUAJGSAIjeLwXrC5BJQE,3313
sqlalchemy/engine/__init__.py,sha256=CjXWOFx_xr80vy2D5CpCvM-V-riKSPfTxB8RlEVNv1g,24711
sqlalchemy/engine/__pycache__/__init__.cpython-36.pyc,,
sqlalchemy/engine/__pycache__/base.cpython-36.pyc,,
sqlalchemy/engine/__pycache__/default.cpython-36.pyc,,
sqlalchemy/engine/__pycache__/interfaces.cpython-36.pyc,,
sqlalchemy/engine/__pycache__/reflection.cpython-36.pyc,,
sqlalchemy/engine/__pycache__/result.cpython-36.pyc,,
sqlalchemy/engine/__pycache__/strategies.cpython-36.pyc,,
sqlalchemy/engine/__pycache__/threadlocal.cpython-36.pyc,,
sqlalchemy/engine/__pycache__/url.cpython-36.pyc,,
sqlalchemy/engine/__pycache__/util.cpython-36.pyc,,
sqlalchemy/engine/base.py,sha256=QuUCd96nnOium4BOEYrI8-1j5nuv7Z9XLf_LguCVNq0,87378
sqlalchemy/engine/default.py,sha256=6Wqqc6RitlULXEAoQgXkruEzbsGJsCFtpYgsHhnS7fw,55080
sqlalchemy/engine/interfaces.py,sha256=AzkS3nGoNk3VI85GPiDFb7ugSmPdWTYpMHI9MmC0AdQ,46993
sqlalchemy/engine/reflection.py,sha256=Ccbz18UE3XJrGShy5ZSa6S-PZTkIfn-WTVsOsuwTktg,34561
sqlalchemy/engine/result.py,sha256=1-nFJlpdlJFODmmGaQrRF1R3UDS3X8EUEhGHtPHLs4A,54716
sqlalchemy/engine/strategies.py,sha256=BuDOCGp6TMAej65TOresW9VHW2VfS60hx-rH4WfDPis,9847
sqlalchemy/engine/threadlocal.py,sha256=EsPbaSO4S8WU4beLAyZ22iHV5YfxXt4ZejxuSMTu6pI,4764
sqlalchemy/engine/url.py,sha256=7_mhgZkeWj7ZTVJvyEVFF5BAh5XzILKl_Sgi_jqAAoY,9445
sqlalchemy/engine/util.py,sha256=wDnfhJyQyxToapCC1jw6FRyW006dnChVIXYBIavzGF4,2421
sqlalchemy/event/__init__.py,sha256=BuOhHzdZQnfPwXK3cvVUbsGJ7vhwwRzN673a8ImEPlA,596
sqlalchemy/event/__pycache__/__init__.cpython-36.pyc,,
sqlalchemy/event/__pycache__/api.cpython-36.pyc,,
sqlalchemy/event/__pycache__/attr.cpython-36.pyc,,
sqlalchemy/event/__pycache__/base.cpython-36.pyc,,
sqlalchemy/event/__pycache__/legacy.cpython-36.pyc,,
sqlalchemy/event/__pycache__/registry.cpython-36.pyc,,
sqlalchemy/event/api.py,sha256=FeyGUN3Gtwh3g7JQTlDnn1zuILSWd-lEwb4Rvk7Eez0,7085
sqlalchemy/event/attr.py,sha256=k4tXlwyPpXaAFyHp11nk7I9ZV4yEFgNpESGMt9Er1BQ,13853
sqlalchemy/event/base.py,sha256=stD9Z3dWlFTDSFqcViREtgf4c8omBs2rvyeFEOXwi1g,9753
sqlalchemy/event/legacy.py,sha256=T9ZOjmibgXCOqW2XADc1nsXxbS159ZYl2ueRUEfsZrU,5904
sqlalchemy/event/registry.py,sha256=xA0dKdRoyE7mz3m4uhQDZ7nxC0LVWfPDOxjzxpPX0m8,8243
sqlalchemy/events.py,sha256=9bqwboee0EO6IatWPk62STGCDXmrecanjBW-VLDOLlU,53112
sqlalchemy/exc.py,sha256=WNQ5g9bO6KL6XIdXYi4Lm2KqYEXEQmLdbK9PJLMiffA,17403
sqlalchemy/ext/__init__.py,sha256=A8EjxtBgEW-qCJX0qqqo3OUJQe9sjjBYPYw5dN866bE,322
sqlalchemy/ext/__pycache__/__init__.cpython-36.pyc,,
sqlalchemy/ext/__pycache__/associationproxy.cpython-36.pyc,,
sqlalchemy/ext/__pycache__/automap.cpython-36.pyc,,
sqlalchemy/ext/__pycache__/baked.cpython-36.pyc,,
sqlalchemy/ext/__pycache__/compiler.cpython-36.pyc,,
sqlalchemy/ext/__pycache__/horizontal_shard.cpython-36.pyc,,
sqlalchemy/ext/__pycache__/hybrid.cpython-36.pyc,,
sqlalchemy/ext/__pycache__/indexable.cpython-36.pyc,,
sqlalchemy/ext/__pycache__/instrumentation.cpython-36.pyc,,
sqlalchemy/ext/__pycache__/mutable.cpython-36.pyc,,
sqlalchemy/ext/__pycache__/orderinglist.cpython-36.pyc,,
sqlalchemy/ext/__pycache__/serializer.cpython-36.pyc,,
sqlalchemy/ext/associationproxy.py,sha256=8TpfZ8gA3X0lI7eDqVex7wySKxjcqcaIJJlM0qkRpTU,49768
sqlalchemy/ext/automap.py,sha256=4g3HrD-jyJ1LctT3O4iTNLAYVPrP4OwdMCruQrXbLiI,42157
sqlalchemy/ext/baked.py,sha256=7fjqFZhTGXe5C1cDw4Y-ldO8hWLzCxYacUDsx5TzXSo,21989
sqlalchemy/ext/compiler.py,sha256=q5kP9F7PaReG7HEx1H5P0EuwN0mJ25Uk-KutMfuj-JY,17147
sqlalchemy/ext/declarative/__init__.py,sha256=7c0OfggXwiLSVvehkwJJDDunv3AuY6Kq-4eMuNT-VNA,902
sqlalchemy/ext/declarative/__pycache__/__init__.cpython-36.pyc,,
sqlalchemy/ext/declarative/__pycache__/api.cpython-36.pyc,,
sqlalchemy/ext/declarative/__pycache__/base.cpython-36.pyc,,
sqlalchemy/ext/declarative/__pycache__/clsregistry.cpython-36.pyc,,
sqlalchemy/ext/declarative/api.py,sha256=9clomjjILIdqQGE8x2kgZdRxjfRfM27WbdjMoSs7mNE,27636
sqlalchemy/ext/declarative/base.py,sha256=vAVhpcwXCXFhQ_Yl-yL6D1ypnmogue4AW4CHgCXgQQI,32093
sqlalchemy/ext/declarative/clsregistry.py,sha256=Nvxdt0KmYDIscE7V9tUEpDauf4EEc6dFZLiS2Cx0Cdo,12049
sqlalchemy/ext/horizontal_shard.py,sha256=fBwLdomhyoa5iBVRaealC5TUzcm64Qx8QXTVGIf3SaA,9138
sqlalchemy/ext/hybrid.py,sha256=JCyVxtk3ZSTGsIXFCjiNY4OxXGA_K4r9FRBhTGF6FJE,40325
sqlalchemy/ext/indexable.py,sha256=pj8WNfIe_YsOIqFsel_93sMzTNsA9Rg03mGs11UNA3E,11254
sqlalchemy/ext/instrumentation.py,sha256=7pxb7SDAnFvtHUxXnx8rqg4XKCadnWDGOBzFQHqeBS8,14351
sqlalchemy/ext/mutable.py,sha256=qPhBEnRCj3GuRUF1a44J9jEdcvfsDCcgeGzZN_eSOHM,31820
sqlalchemy/ext/orderinglist.py,sha256=sOdhObx8L8E7-LV2nSwRFOYFJK5hcz-g7K8gNKKewms,13900
sqlalchemy/ext/serializer.py,sha256=ece4dfFCNbKgg-PbzDG_vZXM3C04w-C1REpF9h6INgQ,5784
sqlalchemy/inspection.py,sha256=d4_LstciZQ766aPV5E8DlVI922f7eZ5L4rSMOCECyB4,3031
sqlalchemy/interfaces.py,sha256=F8zw_dufYkf7zfc2bxb00AZUmOuSr5zoiWqx3GCNWNk,12740
sqlalchemy/log.py,sha256=9K0QmnWqg4YTKdHkcJpudvdNsY2m9LmH5MKxj9INqlU,6705
sqlalchemy/orm/__init__.py,sha256=duBKN1IeiDeFTwomZkrq3vTu8WAxvRgmOfs4k1rzgpc,9938
sqlalchemy/orm/__pycache__/__init__.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/attributes.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/base.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/collections.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/dependency.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/deprecated_interfaces.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/descriptor_props.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/dynamic.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/evaluator.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/events.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/exc.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/identity.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/instrumentation.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/interfaces.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/loading.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/mapper.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/path_registry.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/persistence.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/properties.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/query.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/relationships.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/scoping.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/session.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/state.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/strategies.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/strategy_options.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/sync.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/unitofwork.cpython-36.pyc,,
sqlalchemy/orm/__pycache__/util.cpython-36.pyc,,
sqlalchemy/orm/attributes.py,sha256=F7bOBInY4KWB4erAeH3ImmUMJlyuDm4uNin1Qa6bD4Q,67867
sqlalchemy/orm/base.py,sha256=8X7-3ZM5MYSAz1n_CYlIM2spYEELf_u9ZRdDqtuNYAE,15317
sqlalchemy/orm/collections.py,sha256=CLeCvvSuoMpn7ms-2l0PUNADiUTjHvNAcuZz4-XJg_c,52683
sqlalchemy/orm/dependency.py,sha256=02Jyovdu-dyQ6umen79zeggcYnocRk4QW4zT2StA4vs,46556
sqlalchemy/orm/deprecated_interfaces.py,sha256=NoUlf7eCwxS2QB-IC_Gr1d6IplYpvXWSHuftu0gzvV0,20763
sqlalchemy/orm/descriptor_props.py,sha256=S0EJbqAQFsMxGF7gMdZwjsZn4NACa-sinwWeV3XGqOs,28377
sqlalchemy/orm/dynamic.py,sha256=GcrMj7Uwvmh2CD-OatPExTvY0H6DtysBcQfX89dwgs8,14666
sqlalchemy/orm/evaluator.py,sha256=clC6Tf6Ppv-xwmDTAcNh5axOqrvrnzC5Jq7rowPo3kA,5441
sqlalchemy/orm/events.py,sha256=dV_-UqtxyN-1mJvRhZOAoBvjl7SM_5Aq0kXI3Pdm5fw,104408
sqlalchemy/orm/exc.py,sha256=G_szgGYDr2ojIaYk9-qAjQA6B3d5Kbi0tVTIgq5HHbs,6616
sqlalchemy/orm/identity.py,sha256=7Jhn-byH1e-K7xihNaYEpQLEkUaTuvykR3seXY7ahgU,10436
sqlalchemy/orm/instrumentation.py,sha256=b1CcLwYzBa_ppCimxruTDEdoUNuCp8M5lP3WxEdSOf4,18131
sqlalchemy/orm/interfaces.py,sha256=7hJtC3irDY9htapLJdjzxKCCja8MBrJobOYn5UTG-NA,25851
sqlalchemy/orm/loading.py,sha256=oITlYdKbQoqgfa8gZSxUukS4tdbYwffOW0NBaedXsdw,33847
sqlalchemy/orm/mapper.py,sha256=Na8nmNbm110CzQ4-jleDDEe18BATT_rup63QJCIoGcY,129890
sqlalchemy/orm/path_registry.py,sha256=AT4cnr3fvxo44FthmyKjzX7LTHrfdgOotr8jStycWXY,13764
sqlalchemy/orm/persistence.py,sha256=nHp_TCPOfBQiNYj5s8Q3L0zesHQrcJ2WbUK87JPhPXI,65927
sqlalchemy/orm/properties.py,sha256=xIKHjXzA42KL-FtoFWuUe_9xsos3zSbZ8vHEuAPzV5k,12695
sqlalchemy/orm/query.py,sha256=Khjrei-efY5Oau1-XE0t8PVd1qzOoEjdE5Q5QguRJ3k,180125
sqlalchemy/orm/relationships.py,sha256=40MEVBPMpSMDgw6UX87NIoVg9ZGWfzqiteI-Xa7t20s,137488
sqlalchemy/orm/scoping.py,sha256=F-RHAC3Ynw3kl_kwfalr8dGoiN50oyunXUGL0Tyz3U4,6414
sqlalchemy/orm/session.py,sha256=CM-KKA5iWl6ozqsV0-iEoFQqBe4XP4OIdIVbiEvuV_4,131284
sqlalchemy/orm/state.py,sha256=ZCEcx38aRsD3aCWF1XUiaGajFcYUjlDWK4sXfzsDe58,30794
sqlalchemy/orm/strategies.py,sha256=NW6dJ99XhmSy-6qhH8w_OaWkLad9aEtqn1NRQui4jI8,87320
sqlalchemy/orm/strategy_options.py,sha256=8iu1MWfb3-3_HbVDW4h8OKHi4ZGQujvv0fY84p1ej-k,57377
sqlalchemy/orm/sync.py,sha256=564q5ie_-aOiswgHZtaK-pnB8sCfzakOXte_V9V27Dk,5823
sqlalchemy/orm/unitofwork.py,sha256=OAYzkT_p5Yul4krfnZTuN84zuuYxGe1EzZCOkdpeocI,24735
sqlalchemy/orm/util.py,sha256=FLVsN4QcZP5pIptjJ4CcdMyd0xTbA7NnIftu89KkV0g,45432
sqlalchemy/pool/__init__.py,sha256=-Vflck_t3sr66dgA4mehtNPZdvOsK7CgkjvY7UC7CbY,1483
sqlalchemy/pool/__pycache__/__init__.cpython-36.pyc,,
sqlalchemy/pool/__pycache__/base.cpython-36.pyc,,
sqlalchemy/pool/__pycache__/dbapi_proxy.cpython-36.pyc,,
sqlalchemy/pool/__pycache__/impl.cpython-36.pyc,,
sqlalchemy/pool/base.py,sha256=-RL2p09Jx_X-kxmDltHdyG2cCSmYCrSDAELLNnFjd4g,36523
sqlalchemy/pool/dbapi_proxy.py,sha256=zKCnvTcKfKuf04zqPMDjuuLtmdpIbkIKnk4dICLg_WA,4320
sqlalchemy/pool/impl.py,sha256=oJYs7lUgfU7HbWp5VvTuHUXqBB1DSNTWuskevw6vNBA,14645
sqlalchemy/processors.py,sha256=i_DiEYBHp5JJvvp7omB_TXSXf5efWTILvjVYvu8LHmw,5744
sqlalchemy/schema.py,sha256=idiJwguKduCFQ-F4kpN2lWEOjrKVFMn5Jq77M7jOHIc,2466
sqlalchemy/sql/__init__.py,sha256=12olVEiRBSf27BGAt_aWOUsLBF3sptfDvt-o-4K_7ts,3789
sqlalchemy/sql/__pycache__/__init__.cpython-36.pyc,,
sqlalchemy/sql/__pycache__/annotation.cpython-36.pyc,,
sqlalchemy/sql/__pycache__/base.cpython-36.pyc,,
sqlalchemy/sql/__pycache__/compiler.cpython-36.pyc,,
sqlalchemy/sql/__pycache__/crud.cpython-36.pyc,,
sqlalchemy/sql/__pycache__/ddl.cpython-36.pyc,,
sqlalchemy/sql/__pycache__/default_comparator.cpython-36.pyc,,
sqlalchemy/sql/__pycache__/dml.cpython-36.pyc,,
sqlalchemy/sql/__pycache__/elements.cpython-36.pyc,,
sqlalchemy/sql/__pycache__/expression.cpython-36.pyc,,
sqlalchemy/sql/__pycache__/functions.cpython-36.pyc,,
sqlalchemy/sql/__pycache__/naming.cpython-36.pyc,,
sqlalchemy/sql/__pycache__/operators.cpython-36.pyc,,
sqlalchemy/sql/__pycache__/schema.cpython-36.pyc,,
sqlalchemy/sql/__pycache__/selectable.cpython-36.pyc,,
sqlalchemy/sql/__pycache__/sqltypes.cpython-36.pyc,,
sqlalchemy/sql/__pycache__/type_api.cpython-36.pyc,,
sqlalchemy/sql/__pycache__/util.cpython-36.pyc,,
sqlalchemy/sql/__pycache__/visitors.cpython-36.pyc,,
sqlalchemy/sql/annotation.py,sha256=8XH8I_XmZI5iF2QwqX9N0auQCnh0EHZkOeoPiFQoUZM,6725
sqlalchemy/sql/base.py,sha256=vDkZqV6Q-IigRLdEzf-IuQqHW6DeckQ5N85vbgzXpVA,21740
sqlalchemy/sql/compiler.py,sha256=OYgVI1BA_QOGXAPJf0x7yaWfC-cLqi8b1OJqWcLzIhU,126600
sqlalchemy/sql/crud.py,sha256=ca_9Rjlxw_OnWZxBas_ElvMGtClvIUhLjxWOHhHJ6BE,25889
sqlalchemy/sql/ddl.py,sha256=Mwfkqrc551QMnDeozZLRDu62je2SlP6ABXs6L9PGrtE,41416
sqlalchemy/sql/default_comparator.py,sha256=tRDxI3AGdgrhG-hWymXgH2952Fqfw5f5-zB8Rbfq2qQ,12234
sqlalchemy/sql/dml.py,sha256=YF3tCrAUdXskjLyUe5KPKlDp_zbCnujVlyGxa4MdQlk,35335
sqlalchemy/sql/elements.py,sha256=vcHtqNccEEjaPTdhgBp3cGjjXuPodE8ObBhRUYJ95zo,160790
sqlalchemy/sql/expression.py,sha256=BVhn2KBPg3CQBmBfKPQqvYMgTHqHkt_-bqej3RLSD-g,9209
sqlalchemy/sql/functions.py,sha256=gxWSE5KoTnh7ylVLwPnmGwVKwvJY38VjMjdOOtsvXEI,35833
sqlalchemy/sql/naming.py,sha256=zVMDaA0Npbe8NzBSVBykw69cobe-dfQDC4r451cpvUk,5889
sqlalchemy/sql/operators.py,sha256=J7ghLip6g-S-xGjNTx5RBo-hjM48RZ9pqVI8dIUY77A,42548
sqlalchemy/sql/schema.py,sha256=mI9hyk6yX0u5oTOAJUw5B1gtZ6Rw4UqMSqla9ahTnbo,175608
sqlalchemy/sql/selectable.py,sha256=q3eJtWCgckIVwE1BRcf7E7CBbezZXWVobf2s89L4uwI,138386
sqlalchemy/sql/sqltypes.py,sha256=edW3yywfapznqhcBfbcirbg_8Ow44HLKzar80eyl23M,100787
sqlalchemy/sql/type_api.py,sha256=BhCUsW--YVXV2iCoA3eWao608YmNkFw8plEwR1dhb9A,52229
sqlalchemy/sql/util.py,sha256=gnU_xzrrmhD4vJ2RG5qAmWCe-jqG7dkmGRr-t2t3ZTg,29192
sqlalchemy/sql/visitors.py,sha256=frayBlJ-hGW5wWJJC_EwA0WXs-RJuKSVgJr-bJ-VAf4,15953
sqlalchemy/testing/__init__.py,sha256=dvAdeVcRveMsKSxAV71HG_wyxNgUjvIg03zyasFaVCI,2789
sqlalchemy/testing/__pycache__/__init__.cpython-36.pyc,,
sqlalchemy/testing/__pycache__/assertions.cpython-36.pyc,,
sqlalchemy/testing/__pycache__/assertsql.cpython-36.pyc,,
sqlalchemy/testing/__pycache__/config.cpython-36.pyc,,
sqlalchemy/testing/__pycache__/engines.cpython-36.pyc,,
sqlalchemy/testing/__pycache__/entities.cpython-36.pyc,,
sqlalchemy/testing/__pycache__/exclusions.cpython-36.pyc,,
sqlalchemy/testing/__pycache__/fixtures.cpython-36.pyc,,
sqlalchemy/testing/__pycache__/mock.cpython-36.pyc,,
sqlalchemy/testing/__pycache__/pickleable.cpython-36.pyc,,
sqlalchemy/testing/__pycache__/profiling.cpython-36.pyc,,
sqlalchemy/testing/__pycache__/provision.cpython-36.pyc,,
sqlalchemy/testing/__pycache__/replay_fixture.cpython-36.pyc,,
sqlalchemy/testing/__pycache__/requirements.cpython-36.pyc,,
sqlalchemy/testing/__pycache__/schema.cpython-36.pyc,,
sqlalchemy/testing/__pycache__/util.cpython-36.pyc,,
sqlalchemy/testing/__pycache__/warnings.cpython-36.pyc,,
sqlalchemy/testing/assertions.py,sha256=bqhUma94aCjrAVS6_w2OOECkCClHkvV0YlOpo_mMZOU,19779
sqlalchemy/testing/assertsql.py,sha256=Qss3YS3O0ac68rBh2FPGskgDd6yJzG_5KUn0UhhtQS0,13573
sqlalchemy/testing/config.py,sha256=OQC0OW8r_rlj3Bljv03Vb1pVABJoLwM0MWUll-daaGk,5521
sqlalchemy/testing/engines.py,sha256=vL6jvWWIXe5XJKCzx2NRkgeT6aNatiNdes_ZHbdH5pw,10437
sqlalchemy/testing/entities.py,sha256=c40-zDP6Y6vx18Pmj9Lx4JZ26lr4dQ_42JoffyEP9cA,3203
sqlalchemy/testing/exclusions.py,sha256=0hOS3GnCs9T149eB4fZfxtGSWsPU_bi1VAlLhldr16w,13037
sqlalchemy/testing/fixtures.py,sha256=eMARL5rpAaypiTpiK8YCAUFOZztrTTWCoLyElMTUSNA,15034
sqlalchemy/testing/mock.py,sha256=TMVhpHQtM3v-2CFNYsP6np2vsF7aNDMWXCnjfI9rNvI,893
sqlalchemy/testing/pickleable.py,sha256=6JlSnkXCrbbjeHkbFBwdA8BBrYfLz-PVA7slVhGNYYE,2693
sqlalchemy/testing/plugin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
sqlalchemy/testing/plugin/__pycache__/__init__.cpython-36.pyc,,
sqlalchemy/testing/plugin/__pycache__/bootstrap.cpython-36.pyc,,
sqlalchemy/testing/plugin/__pycache__/plugin_base.cpython-36.pyc,,
sqlalchemy/testing/plugin/__pycache__/pytestplugin.cpython-36.pyc,,
sqlalchemy/testing/plugin/bootstrap.py,sha256=0rkror_9S175GPGNnbtbDmfdLEhu9v-AAv715lR8KyU,1468
sqlalchemy/testing/plugin/plugin_base.py,sha256=3VM5tJHm74gCTawivXHCQeLhx9-aiPZ71UPQ8v8aD9Y,20361
sqlalchemy/testing/plugin/pytestplugin.py,sha256=fvT5LeUX6kyIxN3y5FZSaaaTBkilGNPi54qGz51fsMM,16189
sqlalchemy/testing/profiling.py,sha256=Sm1jEw_H0IOFl_fL8xSvYH5oSOYnRi-jYN1krlR7rJI,8855
sqlalchemy/testing/provision.py,sha256=qWmrATrDsGAJUgQgg5gyS7iRxAYvsHY2T_psTvV4GTg,5509
sqlalchemy/testing/replay_fixture.py,sha256=W_QZD96t7ichRNvILOjhuoQXTCYnd2usiHBQhPkzUYI,5875
sqlalchemy/testing/requirements.py,sha256=YMD5ILDKaYFY2g9pTY_7UwkTneuBpPgiigDMunGt_BQ,32131
sqlalchemy/testing/schema.py,sha256=V5Kggty3LB9YDzbLqmSHsc60J7fUXLDnBJnt_ZmXkas,3712
sqlalchemy/testing/suite/__init__.py,sha256=SUWU-LR3asH2hN2YsIhlpqxeuo8fpvej3o6nct-L4xU,358
sqlalchemy/testing/suite/__pycache__/__init__.cpython-36.pyc,,
sqlalchemy/testing/suite/__pycache__/test_cte.cpython-36.pyc,,
sqlalchemy/testing/suite/__pycache__/test_ddl.cpython-36.pyc,,
sqlalchemy/testing/suite/__pycache__/test_dialect.cpython-36.pyc,,
sqlalchemy/testing/suite/__pycache__/test_insert.cpython-36.pyc,,
sqlalchemy/testing/suite/__pycache__/test_reflection.cpython-36.pyc,,
sqlalchemy/testing/suite/__pycache__/test_results.cpython-36.pyc,,
sqlalchemy/testing/suite/__pycache__/test_select.cpython-36.pyc,,
sqlalchemy/testing/suite/__pycache__/test_sequence.cpython-36.pyc,,
sqlalchemy/testing/suite/__pycache__/test_types.cpython-36.pyc,,
sqlalchemy/testing/suite/__pycache__/test_update_delete.cpython-36.pyc,,
sqlalchemy/testing/suite/test_cte.py,sha256=VbBzRrNWXk2EkuFAz5f5vFXaR9tU240c63dSY88qpf0,6801
sqlalchemy/testing/suite/test_ddl.py,sha256=TGFhoJEy-_NqPb5ypR8x8eYW7Xus323kt4p9DXRsjtk,2896
sqlalchemy/testing/suite/test_dialect.py,sha256=LQmHD11UKObwB5bwh4QCJChk501AExe7FHvScOB5QAE,6197
sqlalchemy/testing/suite/test_insert.py,sha256=Hiwa4iE-oG4csNG57CieNgN2-hGfHX8xgbMQT3rM0TE,9672
sqlalchemy/testing/suite/test_reflection.py,sha256=YhJ7O4MN9R__VOjr0yrNnkudiaSezj493gwQi25d84s,41641
sqlalchemy/testing/suite/test_results.py,sha256=wemYY7ZTVisKLbks8p1Maf1HEOLZ9vigIsGoHHc4Cbw,10971
sqlalchemy/testing/suite/test_select.py,sha256=r_Whu2VLr6l_9BNp8vYikzOYzbh-V73l_yn-OX98nVc,23049
sqlalchemy/testing/suite/test_sequence.py,sha256=oacBvtAqW3Ua3gcqyqnT1U_hpJutEW_EmEbwvf7Xq7E,4661
sqlalchemy/testing/suite/test_types.py,sha256=ttLLKd5faoa0Uvr-HKRTvieNhlASaSnwj7c9HuB50jk,37159
sqlalchemy/testing/suite/test_update_delete.py,sha256=I2NOhWu7iwKLJzcqM_6sLh3WCE1jmcN8tLwBzvNYLPg,1491
sqlalchemy/testing/util.py,sha256=Pn41mDkl_Bb7mCbzGmqA4m1d5LCrpvh8v4C7lUCKvwY,10149
sqlalchemy/testing/warnings.py,sha256=m0M3oN0gR7VH7d_VbFZaQu2igcsJDKTJvKRwNdfEwsY,1671
sqlalchemy/types.py,sha256=LRIjlg-DVeBMAhVI7iXXY8NhQQDDr2UPKp3ONwyMZhI,3377
sqlalchemy/util/__init__.py,sha256=ohFYPWxLu_BxGvDgCLvl7r2CrkB0y3vcN3DnePBsauA,6648
sqlalchemy/util/__pycache__/__init__.cpython-36.pyc,,
sqlalchemy/util/__pycache__/_collections.cpython-36.pyc,,
sqlalchemy/util/__pycache__/compat.cpython-36.pyc,,
sqlalchemy/util/__pycache__/deprecations.cpython-36.pyc,,
sqlalchemy/util/__pycache__/langhelpers.cpython-36.pyc,,
sqlalchemy/util/__pycache__/queue.cpython-36.pyc,,
sqlalchemy/util/__pycache__/topological.cpython-36.pyc,,
sqlalchemy/util/_collections.py,sha256=MfX2a2MJ95_cYqGQFDWTuf_y7frdtY-z7LBI261HJWE,29219
sqlalchemy/util/compat.py,sha256=LqV8UIGP7-WEmBI7H-sIsxGi1B9XRppxuxJyGoYE4_c,16828
sqlalchemy/util/deprecations.py,sha256=odcWi5Ciq7T-kpYbavOjMaK89fuX6BvN4j-zB_Pr8BA,7474
sqlalchemy/util/langhelpers.py,sha256=aaV0kbtmiQfRXCYaHgYGITYE01apkoFuJWlwYTO0p5U,50512
sqlalchemy/util/queue.py,sha256=QHh_QckIfyisS9q_blxbwamt92JPXKZgt-pf971dsEs,6827
sqlalchemy/util/topological.py,sha256=lbXO1ZDDTtYHps_rE7NlEZ3AG773IDLP_7L941DTt6U,2767

@ -1,5 +0,0 @@
Wheel-Version: 1.0
Generator: bdist_wheel (0.34.2)
Root-Is-Purelib: false
Tag: cp36-cp36m-manylinux2010_x86_64

@ -1,151 +0,0 @@
# sqlalchemy/__init__.py
# Copyright (C) 2005-2020 the SQLAlchemy authors and contributors
# <see AUTHORS file>
#
# This module is part of SQLAlchemy and is released under
# the MIT License: http://www.opensource.org/licenses/mit-license.php
from . import util as _util # noqa
from .inspection import inspect # noqa
from .schema import BLANK_SCHEMA # noqa
from .schema import CheckConstraint # noqa
from .schema import Column # noqa
from .schema import ColumnDefault # noqa
from .schema import Computed # noqa
from .schema import Constraint # noqa
from .schema import DDL # noqa
from .schema import DefaultClause # noqa
from .schema import FetchedValue # noqa
from .schema import ForeignKey # noqa
from .schema import ForeignKeyConstraint # noqa
from .schema import IdentityOptions # noqa
from .schema import Index # noqa
from .schema import MetaData # noqa
from .schema import PassiveDefault # noqa
from .schema import PrimaryKeyConstraint # noqa
from .schema import Sequence # noqa
from .schema import Table # noqa
from .schema import ThreadLocalMetaData # noqa
from .schema import UniqueConstraint # noqa
from .sql import alias # noqa
from .sql import all_ # noqa
from .sql import and_ # noqa
from .sql import any_ # noqa
from .sql import asc # noqa
from .sql import between # noqa
from .sql import bindparam # noqa
from .sql import case # noqa
from .sql import cast # noqa
from .sql import collate # noqa
from .sql import column # noqa
from .sql import delete # noqa
from .sql import desc # noqa
from .sql import distinct # noqa
from .sql import except_ # noqa
from .sql import except_all # noqa
from .sql import exists # noqa
from .sql import extract # noqa
from .sql import false # noqa
from .sql import func # noqa
from .sql import funcfilter # noqa
from .sql import insert # noqa
from .sql import intersect # noqa
from .sql import intersect_all # noqa
from .sql import join # noqa
from .sql import lateral # noqa
from .sql import literal # noqa
from .sql import literal_column # noqa
from .sql import modifier # noqa
from .sql import not_ # noqa
from .sql import null # noqa
from .sql import nullsfirst # noqa
from .sql import nullslast # noqa
from .sql import or_ # noqa
from .sql import outerjoin # noqa
from .sql import outparam # noqa
from .sql import over # noqa
from .sql import select # noqa
from .sql import subquery # noqa
from .sql import table # noqa
from .sql import tablesample # noqa
from .sql import text # noqa
from .sql import true # noqa
from .sql import tuple_ # noqa
from .sql import type_coerce # noqa
from .sql import union # noqa
from .sql import union_all # noqa
from .sql import update # noqa
from .sql import within_group # noqa
from .types import ARRAY # noqa
from .types import BIGINT # noqa
from .types import BigInteger # noqa
from .types import BINARY # noqa
from .types import Binary # noqa
from .types import BLOB # noqa
from .types import BOOLEAN # noqa
from .types import Boolean # noqa
from .types import CHAR # noqa
from .types import CLOB # noqa
from .types import DATE # noqa
from .types import Date # noqa
from .types import DATETIME # noqa
from .types import DateTime # noqa
from .types import DECIMAL # noqa
from .types import Enum # noqa
from .types import FLOAT # noqa
from .types import Float # noqa
from .types import INT # noqa
from .types import INTEGER # noqa
from .types import Integer # noqa
from .types import Interval # noqa
from .types import JSON # noqa
from .types import LargeBinary # noqa
from .types import NCHAR # noqa
from .types import NUMERIC # noqa
from .types import Numeric # noqa
from .types import NVARCHAR # noqa
from .types import PickleType # noqa
from .types import REAL # noqa
from .types import SMALLINT # noqa
from .types import SmallInteger # noqa
from .types import String # noqa
from .types import TEXT # noqa
from .types import Text # noqa
from .types import TIME # noqa
from .types import Time # noqa
from .types import TIMESTAMP # noqa
from .types import TypeDecorator # noqa
from .types import Unicode # noqa
from .types import UnicodeText # noqa
from .types import VARBINARY # noqa
from .types import VARCHAR # noqa
from .engine import create_engine # noqa nosort
from .engine import engine_from_config # noqa nosort
__version__ = '1.3.18'
def __go(lcls):
global __all__
from . import events # noqa
from . import util as _sa_util
import inspect as _inspect
__all__ = sorted(
name
for name, obj in lcls.items()
if not (name.startswith("_") or _inspect.ismodule(obj))
)
_sa_util.dependencies.resolve_all("sqlalchemy")
from . import exc
exc._version_token = "".join(__version__.split(".")[0:2])
__go(locals())

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save