Cleanup (#132)
* Cleanup repository configs * more cleanup and convention checks * apply black and isort * fullfil conventions * make a matrix test on travis * correct travis rules * merge my global isort config into setup.cfg, that is why local tests are green, and ci tests are red * black did not work on Python2 so do not check-black on Python2.7 * fix isort behaviour so that black mode 3 is used
This commit is contained in:
parent
60c2ac0af0
commit
dd53ecda00
60 changed files with 463 additions and 246 deletions
|
@ -1,8 +0,0 @@
|
|||
[run]
|
||||
omit =
|
||||
tests/*
|
||||
wsgidav/prop_man/couch_property_manager.py
|
||||
wsgidav/prop_man/mongo_property_manager.py
|
||||
wsgidav/samples/*
|
||||
wsgidav/server/run_reloading_server.py
|
||||
wsgidav/server/server_sample.py
|
|
@ -1,21 +1,40 @@
|
|||
# EditorConfig is awesome: http://EditorConfig.org
|
||||
# EditorConfig Configurtaion file, for more details see:
|
||||
# http://EditorConfig.org
|
||||
# EditorConfig is a convention description, that could be interpreted
|
||||
# by multiple editors to enforce common coding conventions for specific
|
||||
# file types
|
||||
|
||||
# top-most EditorConfig file
|
||||
# top-most EditorConfig file:
|
||||
# Will ignore other EditorConfig files in Home directory or upper tree level.
|
||||
root = true
|
||||
|
||||
[*]
|
||||
|
||||
; See https://github.com/editorconfig/editorconfig/issues/226
|
||||
;end_of_line = lf
|
||||
|
||||
[*] # For All Files
|
||||
# Unix-style newlines with a newline ending every file
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
# 4 space indentation
|
||||
[*.py]
|
||||
# Set default charset
|
||||
charset = utf-8
|
||||
# Indent style default
|
||||
indent_style = space
|
||||
# Max Line Length - a hard line wrap, should be disabled
|
||||
max_line_length = off
|
||||
|
||||
[*.{py,cfg,ini}]
|
||||
# 4 space indentation
|
||||
indent_size = 4
|
||||
|
||||
; Tab indentation (no size specified)
|
||||
[*.js]
|
||||
indent_style = tab
|
||||
[*.{yml}]
|
||||
# 2 space indentation
|
||||
indent_size = 2
|
||||
|
||||
[*.{js}]
|
||||
# Tab indentation (no size specified)
|
||||
indent_style = tab
|
||||
|
||||
[{Makefile,.gitmodules}]
|
||||
# Tab indentation (no size specified, but view as 4 spaces)
|
||||
indent_style = tab
|
||||
indent_size = unset
|
||||
tab_width = unset
|
||||
|
|
19
.flake8
19
.flake8
|
@ -1,19 +0,0 @@
|
|||
[flake8]
|
||||
max-line-length = 99
|
||||
#max-line-length = 88
|
||||
|
||||
# max-complexity = 12
|
||||
|
||||
# Ignore some errors that may be created by Black:
|
||||
# E203 whitespace before ':'
|
||||
# E501 line too long
|
||||
# W503 line break before binary operator
|
||||
ignore = E203, E501, W503
|
||||
|
||||
# Instead of strict E501, enable B950 for relaxed line length checking (and other bugbear warnings)
|
||||
select = B,C,E,F,Q,W,B9
|
||||
|
||||
# Options for the flake8-quotes extension:
|
||||
inline-quotes = "
|
||||
multiline-quotes = """
|
||||
docstring-quotes = """
|
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -21,6 +21,8 @@ debug.log
|
|||
wsgidav.conf
|
||||
wsgidav.json
|
||||
dist
|
||||
coverage.xml
|
||||
.coverage*
|
||||
|
||||
*.prefs
|
||||
*.project
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
[settings]
|
||||
multi_line_output=3
|
||||
include_trailing_comma=True
|
||||
force_grid_wrap=0
|
||||
combine_as_imports=True
|
||||
line_length=88
|
48
.travis.yml
48
.travis.yml
|
@ -1,21 +1,47 @@
|
|||
sudo: false
|
||||
language: python
|
||||
python:
|
||||
- "2.7"
|
||||
# - "3.3" # End-of-life September 2017
|
||||
- "3.4"
|
||||
- "3.5"
|
||||
- "3.6"
|
||||
# See yaml/pyyaml#126.
|
||||
# - "3.7-dev" # Planned for 2018-06
|
||||
|
||||
#sudo: required
|
||||
matrix:
|
||||
include:
|
||||
- python: "2.7"
|
||||
env: TOXENV=lint-py27
|
||||
- python: "3.6"
|
||||
env: TOXENV=black-check,lint-py36
|
||||
- python: "2.7"
|
||||
env: TOXENV=py27
|
||||
- python: "3.4"
|
||||
env: TOXENV=py34
|
||||
- python: "3.5"
|
||||
env: TOXENV=py35
|
||||
- python: "3.6"
|
||||
env: TOXENV=py36
|
||||
- python: "3.7"
|
||||
env: TOXENV=py37
|
||||
- python: "3.7-dev"
|
||||
env: TOXENV=py37
|
||||
- python: "3.8-dev"
|
||||
env: TOXENV=py38
|
||||
allow_failures:
|
||||
- python: "3.7"
|
||||
env: TOXENV=py37
|
||||
- python: "3.7-dev"
|
||||
env: TOXENV=py37
|
||||
- python: "3.8-dev"
|
||||
env: TOXENV=py38
|
||||
|
||||
before_install:
|
||||
# See issue #80: litmus fails to build on travis
|
||||
# The branch 'travis-litmus' still has this enabled to investigate...
|
||||
# - sudo apt-get install libneon27-dev
|
||||
# - ./install_litmus.sh
|
||||
|
||||
install:
|
||||
pip install tox-travis
|
||||
- travis_retry pip install -U pip setuptools
|
||||
- travis_retry pip install -U tox coveralls coverage
|
||||
|
||||
script:
|
||||
tox
|
||||
- travis_retry tox
|
||||
|
||||
after_success:
|
||||
- coverage combine
|
||||
- coveralls
|
||||
|
|
70
setup.cfg
70
setup.cfg
|
@ -8,3 +8,73 @@ license_file = LICENSE
|
|||
ignore =
|
||||
docs/sphinx-build
|
||||
docs/sphinx-build/*
|
||||
|
||||
[isort]
|
||||
force_alphabetical_sort=True
|
||||
force_single_line=False
|
||||
force_to_top=True
|
||||
from_first=True
|
||||
lines_after_imports=2
|
||||
not_skip=__init__.py
|
||||
multi_line_output=3
|
||||
include_trailing_comma=True
|
||||
force_grid_wrap=0
|
||||
combine_as_imports=True
|
||||
line_length=88
|
||||
|
||||
[aliases]
|
||||
test = pytest
|
||||
|
||||
[tool:pytest]
|
||||
addopts =
|
||||
testpaths =
|
||||
.
|
||||
tests
|
||||
|
||||
[coverage:run]
|
||||
branch = True
|
||||
omit =
|
||||
tests/*
|
||||
wsgidav/prop_man/couch_property_manager.py
|
||||
wsgidav/prop_man/mongo_property_manager.py
|
||||
wsgidav/samples/*
|
||||
wsgidav/server/run_reloading_server.py
|
||||
wsgidav/server/server_sample.py
|
||||
|
||||
[coverage:report]
|
||||
precision = 2
|
||||
show_missing = True
|
||||
sort = Name
|
||||
|
||||
[coverage:html]
|
||||
directory = _build/coverage
|
||||
|
||||
[flake8]
|
||||
max-line-length = 99
|
||||
#max-line-length = 88
|
||||
|
||||
# max-complexity = 12
|
||||
|
||||
# Ignore some errors that may be created by Black:
|
||||
# E203 whitespace before ':'
|
||||
# E501 line too long
|
||||
# W503 line break before binary operator
|
||||
ignore =
|
||||
E203,
|
||||
E501,
|
||||
W503
|
||||
|
||||
# Instead of strict E501, enable B950 for relaxed line length checking (and other bugbear warnings)
|
||||
select =
|
||||
B,
|
||||
C,
|
||||
E,
|
||||
F,
|
||||
Q,
|
||||
W,
|
||||
B9
|
||||
|
||||
# Options for the flake8-quotes extension:
|
||||
inline-quotes = "
|
||||
multiline-quotes = """
|
||||
docstring-quotes = """
|
||||
|
|
11
setup.py
11
setup.py
|
@ -1,17 +1,16 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
from __future__ import print_function
|
||||
from setuptools import Command, find_packages, setup
|
||||
from setuptools.command.test import test as TestCommand
|
||||
from wsgidav._version import __version__
|
||||
|
||||
# from datetime import datetime
|
||||
import os
|
||||
import sys
|
||||
|
||||
from setuptools import setup, find_packages
|
||||
from setuptools import Command
|
||||
from setuptools.command.test import test as TestCommand
|
||||
|
||||
from wsgidav._version import __version__
|
||||
|
||||
|
||||
version = __version__
|
||||
|
||||
|
|
|
@ -49,6 +49,9 @@ Test cases
|
|||
file10-10-1.txt -> 1k
|
||||
"""
|
||||
from __future__ import print_function
|
||||
from tests.util import Timing, WsgiDavTestServer
|
||||
from wsgidav import __version__
|
||||
from wsgidav.xml_tools import use_lxml
|
||||
|
||||
import datetime
|
||||
import logging
|
||||
|
@ -57,9 +60,6 @@ import platform
|
|||
import subprocess
|
||||
import sys
|
||||
|
||||
from tests.util import Timing, WsgiDavTestServer
|
||||
from wsgidav import __version__
|
||||
from wsgidav.xml_tools import use_lxml
|
||||
|
||||
try:
|
||||
# WsgiDAV 2.x
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import os
|
||||
import pkg_resources
|
||||
import sys
|
||||
|
||||
import pkg_resources
|
||||
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))
|
||||
pkg_resources.require("wsgidav")
|
||||
|
|
|
@ -26,9 +26,9 @@
|
|||
# - Use requests instead of http.client / httplib
|
||||
|
||||
import copy
|
||||
import requests
|
||||
import sys
|
||||
|
||||
import requests
|
||||
|
||||
PY2 = sys.version_info < (3, 0)
|
||||
|
||||
|
|
|
@ -7,11 +7,11 @@
|
|||
|
||||
This test suite uses requests to generate HTTP requests.
|
||||
"""
|
||||
import unittest
|
||||
from tests.util import WsgiDavTestServer
|
||||
|
||||
import requests
|
||||
import unittest
|
||||
|
||||
from tests.util import WsgiDavTestServer
|
||||
|
||||
_test_server = None
|
||||
|
||||
|
|
|
@ -6,11 +6,11 @@
|
|||
Run litmus against WsgiDAV server.
|
||||
"""
|
||||
from __future__ import print_function
|
||||
from tests.util import WsgiDavTestServer
|
||||
|
||||
import subprocess
|
||||
import unittest
|
||||
|
||||
from tests.util import WsgiDavTestServer
|
||||
|
||||
# ========================================================================
|
||||
# WsgiDAVServerTest
|
||||
|
|
|
@ -3,14 +3,15 @@
|
|||
# Licensed under the MIT license:
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
"""Unit test for lock_manager.py"""
|
||||
from tempfile import gettempdir
|
||||
from time import sleep
|
||||
from wsgidav import lock_manager, lock_storage
|
||||
from wsgidav.dav_error import DAVError
|
||||
|
||||
import os
|
||||
import sys
|
||||
import unittest
|
||||
from tempfile import gettempdir
|
||||
from time import sleep
|
||||
|
||||
from wsgidav import lock_manager, lock_storage
|
||||
from wsgidav.dav_error import DAVError
|
||||
|
||||
# ========================================================================
|
||||
# BasicTest
|
||||
|
|
|
@ -3,12 +3,13 @@
|
|||
# Licensed under the MIT license:
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
"""Unit test for property_manager.py"""
|
||||
from tempfile import gettempdir
|
||||
from wsgidav.prop_man import property_manager
|
||||
|
||||
import os
|
||||
import sys
|
||||
import unittest
|
||||
from tempfile import gettempdir
|
||||
|
||||
from wsgidav.prop_man import property_manager
|
||||
|
||||
# ========================================================================
|
||||
# BasicTest
|
||||
|
|
|
@ -11,20 +11,20 @@
|
|||
http://svn.osafoundation.org/tools/davclient/trunk/src/davclient/davclient.py
|
||||
"""
|
||||
from __future__ import print_function
|
||||
|
||||
import os
|
||||
import time
|
||||
import unittest
|
||||
from tempfile import gettempdir
|
||||
from threading import Thread
|
||||
|
||||
from tests import davclient
|
||||
from tests.util import WsgiDavTestServer
|
||||
from threading import Thread
|
||||
from wsgidav import compat
|
||||
from wsgidav.fs_dav_provider import FilesystemProvider
|
||||
from wsgidav.server.ext_wsgiutils_server import ExtServer
|
||||
from wsgidav.wsgidav_app import WsgiDAVApp
|
||||
|
||||
import os
|
||||
import time
|
||||
import unittest
|
||||
|
||||
|
||||
# SERVER_ADDRESS
|
||||
# (using localhost or mixing hostnames with IPs may be very slow!)
|
||||
SERVER_ADDRESS = "http://127.0.0.1:8080"
|
||||
|
@ -61,7 +61,7 @@ def setUpModule():
|
|||
_test_server = WsgiDAVServerThread()
|
||||
_test_server.start()
|
||||
# let server start the loop, otherwise shutdown might lock
|
||||
time.sleep(.1)
|
||||
time.sleep(0.1)
|
||||
return
|
||||
|
||||
|
||||
|
@ -150,7 +150,7 @@ class WsgiDAVServerThread(Thread):
|
|||
print("WsgiDAVServerThread.shutdown()...")
|
||||
# let server process pending requests, otherwise shutdown might
|
||||
# lock
|
||||
time.sleep(.1)
|
||||
time.sleep(0.1)
|
||||
self.ext_server.stop_serve_forever()
|
||||
self.ext_server = None
|
||||
print("WsgiDAVServerThread.shutdown()... complete")
|
||||
|
|
|
@ -7,17 +7,17 @@
|
|||
Unit tests for wsgidav.stream_tools.FileLikeQueue
|
||||
"""
|
||||
|
||||
from tempfile import gettempdir
|
||||
from tests.util import Timing, write_test_file, WsgiDavTestServer
|
||||
from wsgidav import compat
|
||||
from wsgidav.dav_provider import DAVNonCollection, DAVProvider
|
||||
from wsgidav.stream_tools import FileLikeQueue
|
||||
|
||||
import os
|
||||
import requests
|
||||
import threading
|
||||
import unittest
|
||||
from tempfile import gettempdir
|
||||
|
||||
import requests
|
||||
|
||||
from tests.util import Timing, WsgiDavTestServer, write_test_file
|
||||
from wsgidav import compat
|
||||
from wsgidav.stream_tools import FileLikeQueue
|
||||
from wsgidav.dav_provider import DAVNonCollection, DAVProvider
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Dummy DAVProvider implementation
|
||||
|
|
|
@ -4,11 +4,6 @@
|
|||
# http://www.opensource.org/licenses/mit-license.php
|
||||
"""Unit tests for wsgidav.util"""
|
||||
from __future__ import print_function
|
||||
|
||||
import logging
|
||||
import logging.handlers
|
||||
import unittest
|
||||
|
||||
from wsgidav.compat import StringIO
|
||||
from wsgidav.util import (
|
||||
BASE_LOGGER_NAME,
|
||||
|
@ -22,6 +17,10 @@ from wsgidav.util import (
|
|||
shift_path,
|
||||
)
|
||||
|
||||
import logging
|
||||
import logging.handlers
|
||||
import unittest
|
||||
|
||||
|
||||
class BasicTest(unittest.TestCase):
|
||||
"""Test ."""
|
||||
|
|
|
@ -12,16 +12,16 @@
|
|||
(successor of http://pythonpaste.org/testing-applications.html)
|
||||
"""
|
||||
from __future__ import print_function
|
||||
from tempfile import gettempdir
|
||||
from wsgidav import compat, util
|
||||
from wsgidav.fs_dav_provider import FilesystemProvider
|
||||
from wsgidav.wsgidav_app import WsgiDAVApp
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
import unittest
|
||||
from tempfile import gettempdir
|
||||
|
||||
from wsgidav import compat, util
|
||||
from wsgidav.fs_dav_provider import FilesystemProvider
|
||||
from wsgidav.wsgidav_app import WsgiDAVApp
|
||||
|
||||
try:
|
||||
import webtest
|
||||
|
|
|
@ -10,16 +10,16 @@ Example:
|
|||
... test methods
|
||||
"""
|
||||
from __future__ import print_function
|
||||
from tempfile import gettempdir
|
||||
from wsgidav import compat, util
|
||||
from wsgidav.fs_dav_provider import FilesystemProvider
|
||||
from wsgidav.wsgidav_app import WsgiDAVApp
|
||||
|
||||
import multiprocessing
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
from tempfile import gettempdir
|
||||
|
||||
from wsgidav import compat, util
|
||||
from wsgidav.fs_dav_provider import FilesystemProvider
|
||||
from wsgidav.wsgidav_app import WsgiDAVApp
|
||||
|
||||
# ========================================================================
|
||||
# Timing
|
||||
|
|
134
tox.ini
134
tox.ini
|
@ -1,45 +1,134 @@
|
|||
[tox]
|
||||
basepython = python3.6
|
||||
#envlist = clean, py27, py34, py35, stats
|
||||
envlist = check, py27, py34, py35, py36, py37
|
||||
envlist =
|
||||
py27,
|
||||
py34,
|
||||
py35,
|
||||
py36,
|
||||
py37,
|
||||
black-check,
|
||||
lint-py27,
|
||||
lint-py36,
|
||||
coverage,
|
||||
|
||||
[testenv]
|
||||
usedevelop = True
|
||||
extras =
|
||||
test
|
||||
|
||||
passenv = LC_ALL LANG TRAVIS TRAVIS_BRANCH TRAVIS_OS_NAME TRAVIS_BUILD_ID
|
||||
|
||||
setenv =
|
||||
COVERAGE_FILE=.coverage.{envname}
|
||||
|
||||
# Note: also honors .coveragerc:
|
||||
commands =
|
||||
# Run everything from /tests folder:
|
||||
py.test -ra -v -x --cov wsgidav tests
|
||||
# Check PEP8 style:
|
||||
flake8 --version
|
||||
flake8 wsgidav tests
|
||||
python -V
|
||||
pip list
|
||||
pytest -ra -v -x --cov=wsgidav --cov-report=xml --html=_build/pytest/report-{envname}.html --self-contained-html {posargs}
|
||||
|
||||
deps =
|
||||
cheroot
|
||||
defusedxml
|
||||
flake8
|
||||
flake8-quotes
|
||||
Jinja2
|
||||
jsmin
|
||||
PyYAML
|
||||
pytest
|
||||
pytest-cov
|
||||
#pytest-remove-stale-bytecode
|
||||
pytest-html
|
||||
requests
|
||||
webtest
|
||||
|
||||
[testenv:coverage]
|
||||
skip_install = true
|
||||
|
||||
[testenv:check]
|
||||
description = Check Black formatting compliance and add flake8-bugbear checks
|
||||
basepython = python3.6
|
||||
changedir = {toxinidir}
|
||||
deps =
|
||||
coverage
|
||||
|
||||
setenv =
|
||||
COVERAGE_FILE=.coverage
|
||||
|
||||
commands =
|
||||
coverage erase
|
||||
coverage combine
|
||||
coverage html
|
||||
coverage xml
|
||||
coverage report --fail-under=30.0
|
||||
|
||||
|
||||
[testenv:isort-apply]
|
||||
skip_install = true
|
||||
deps =
|
||||
black
|
||||
flake8-bugbear
|
||||
commands =
|
||||
black --check --diff wsgidav tests
|
||||
flake8 wsgidav tests
|
||||
isort
|
||||
|
||||
commands =
|
||||
isort --apply --recursive {toxinidir}/wsgidav {toxinidir}/tests setup.py {posargs}
|
||||
|
||||
[testenv:autopep8]
|
||||
skip_install = true
|
||||
deps =
|
||||
autopep8
|
||||
docformatter
|
||||
|
||||
commands =
|
||||
autopep8 --verbose --in-place --recursive --aggressive --aggressive {toxinidir}/wsgidav {toxinidir}/tests setup.py
|
||||
docformatter --in-place --recursive {toxinidir}/wsgidav {toxinidir}/tests setup.py
|
||||
|
||||
[lint]
|
||||
skip_install = true
|
||||
|
||||
deps =
|
||||
isort
|
||||
flake8
|
||||
# helper to generate HTML reports:
|
||||
flake8-html
|
||||
# Useful flake8 plugins that are Python and Plone specific:
|
||||
flake8-coding
|
||||
flake8-debugger
|
||||
flake8-deprecated
|
||||
flake8-pytest
|
||||
flake8-quotes
|
||||
flake8-todo
|
||||
flake8-isort
|
||||
mccabe
|
||||
# Potential flake8 plugins that should be used: # TBD
|
||||
#flake8-blind-except
|
||||
#flake8-commas
|
||||
#flake8-docstrings
|
||||
#flake8-mypy
|
||||
#flake8-pep3101
|
||||
#flake8-plone-hasattr
|
||||
#flake8-string-format
|
||||
#flake8_strict
|
||||
#flake8-quotes
|
||||
|
||||
commands =
|
||||
mkdir -p {toxinidir}/_build/flake8
|
||||
isort --check-only --recursive {toxinidir}/wsgidav {toxinidir}/tests setup.py
|
||||
- flake8 --format=html --htmldir={toxinidir}/_build/flake8 --doctests wsgidav tests setup.py
|
||||
flake8 wsgidav tests setup.py --doctests
|
||||
|
||||
whitelist_externals =
|
||||
mkdir
|
||||
|
||||
[testenv:lint-py27]
|
||||
basepython = python2.7
|
||||
skip_install = true
|
||||
deps =
|
||||
{[lint]deps}
|
||||
commands = {[lint]commands}
|
||||
whitelist_externals = {[lint]whitelist_externals}
|
||||
|
||||
[testenv:lint-py36]
|
||||
basepython = python3.6
|
||||
skip_install = true
|
||||
deps =
|
||||
{[lint]deps}
|
||||
flake8-bugbear
|
||||
commands = {[lint]commands}
|
||||
whitelist_externals = {[lint]whitelist_externals}
|
||||
|
||||
[testenv:black]
|
||||
description = Reformat python code using Black
|
||||
|
@ -49,8 +138,17 @@ skip_install = true
|
|||
deps =
|
||||
black
|
||||
commands =
|
||||
black wsgidav tests
|
||||
black wsgidav tests setup.py
|
||||
|
||||
[testenv:black-check]
|
||||
description = Check Black formatting compliance and add flake8-bugbear checks
|
||||
basepython = python3.6
|
||||
changedir = {toxinidir}
|
||||
skip_install = true
|
||||
deps =
|
||||
black
|
||||
commands =
|
||||
black --check --diff wsgidav tests setup.py
|
||||
|
||||
[testenv:docs]
|
||||
description = Build Sphinx documentation (output directory: docs/sphinx-build)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# make version accessible as 'wsgidav.__version__'
|
||||
|
||||
from wsgidav._version import __version__ # noqa: F401
|
||||
|
@ -7,6 +8,7 @@ from wsgidav._version import __version__ # noqa: F401
|
|||
# https://docs.python.org/3/howto/logging.html#configuring-logging-for-a-library
|
||||
import logging
|
||||
|
||||
|
||||
_base_logger = logging.getLogger(__name__)
|
||||
_base_logger.addHandler(logging.NullHandler())
|
||||
_base_logger.propagate = False
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Current WsgiDAV version number.
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ Inspired by six https://pythonhosted.org/six/
|
|||
|
||||
import sys
|
||||
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
#: True if we are running on Python 2.x
|
||||
|
|
|
@ -6,11 +6,12 @@
|
|||
"""
|
||||
Implements a DAVError class that is used to signal WebDAV and HTTP errors.
|
||||
"""
|
||||
import datetime
|
||||
|
||||
from wsgidav import __version__, compat, xml_tools
|
||||
from wsgidav.xml_tools import etree
|
||||
|
||||
import datetime
|
||||
|
||||
|
||||
# import traceback
|
||||
|
||||
|
||||
|
|
|
@ -76,26 +76,21 @@ lockManager
|
|||
|
||||
See :doc:`reference_guide` for more information about the WsgiDAV architecture.
|
||||
"""
|
||||
from wsgidav import compat, util, xml_tools
|
||||
from wsgidav.dav_error import (
|
||||
as_DAVError,
|
||||
DAVError,
|
||||
HTTP_FORBIDDEN,
|
||||
HTTP_NOT_FOUND,
|
||||
PRECONDITION_CODE_ProtectedProperty,
|
||||
)
|
||||
from wsgidav.util import etree
|
||||
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
import traceback
|
||||
|
||||
from wsgidav import compat, util, xml_tools
|
||||
from wsgidav.dav_error import (
|
||||
HTTP_FORBIDDEN,
|
||||
HTTP_NOT_FOUND,
|
||||
DAVError,
|
||||
PRECONDITION_CODE_ProtectedProperty,
|
||||
as_DAVError,
|
||||
)
|
||||
|
||||
# Trick PyDev to do intellisense and don't produce warnings:
|
||||
from wsgidav.util import etree # noqa
|
||||
|
||||
if False:
|
||||
from xml.etree import ElementTree as etree # noqa
|
||||
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# (c) 2009-2018 Martin Wendt and contributors; see WsgiDAV https://github.com/mar10/wsgidav
|
||||
# Original PyFileServer (c) 2005 Ho Chun Wei.
|
||||
# Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
|
||||
|
@ -72,12 +73,12 @@ Testability and caveats
|
|||
ml
|
||||
"""
|
||||
from __future__ import print_function
|
||||
from wsgidav import compat, util
|
||||
|
||||
import win32net
|
||||
import win32netcon
|
||||
import win32security
|
||||
|
||||
from wsgidav import compat, util
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
_logger = util.get_module_logger(__name__)
|
||||
|
|
|
@ -32,9 +32,10 @@ domaincontrollerinterface_
|
|||
.. _domaincontrollerinterface : interfaces/domaincontrollerinterface.py
|
||||
|
||||
"""
|
||||
from wsgidav import util
|
||||
|
||||
import sys
|
||||
|
||||
from wsgidav import util
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
|
|
|
@ -51,13 +51,14 @@ These configuration settings are evaluated:
|
|||
debug_litmus = ["notowner_modify", "props: 16", ]
|
||||
|
||||
"""
|
||||
import sys
|
||||
import threading
|
||||
|
||||
from wsgidav import compat, util
|
||||
from wsgidav.middleware import BaseMiddleware
|
||||
from wsgidav.util import safe_re_encode
|
||||
|
||||
import sys
|
||||
import threading
|
||||
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
_logger = util.get_module_logger(__name__)
|
||||
|
|
|
@ -14,12 +14,13 @@
|
|||
|
||||
Default confguration.
|
||||
"""
|
||||
from wsgidav.dir_browser import WsgiDavDirBrowser
|
||||
from wsgidav.debug_filter import WsgiDavDebugFilter
|
||||
from wsgidav.dir_browser import WsgiDavDirBrowser
|
||||
from wsgidav.error_printer import ErrorPrinter
|
||||
from wsgidav.http_authenticator import HTTPAuthenticator
|
||||
from wsgidav.request_resolver import RequestResolver
|
||||
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
# Use these settings, if config file does not define them (or is totally missing)
|
||||
|
|
|
@ -6,15 +6,15 @@
|
|||
WSGI middleware that handles GET requests on collections to display directories.
|
||||
"""
|
||||
from fnmatch import fnmatch
|
||||
from jinja2 import Environment, FileSystemLoader
|
||||
from wsgidav import __version__, compat, util
|
||||
from wsgidav.dav_error import DAVError, HTTP_MEDIATYPE_NOT_SUPPORTED, HTTP_OK
|
||||
from wsgidav.middleware import BaseMiddleware
|
||||
from wsgidav.util import safe_re_encode
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
from jinja2 import Environment, FileSystemLoader
|
||||
|
||||
from wsgidav import __version__, compat, util
|
||||
from wsgidav.dav_error import HTTP_MEDIATYPE_NOT_SUPPORTED, HTTP_OK, DAVError
|
||||
from wsgidav.middleware import BaseMiddleware
|
||||
from wsgidav.util import safe_re_encode
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
|
|
|
@ -7,19 +7,20 @@
|
|||
WSGI middleware to catch application thrown DAVErrors and return proper
|
||||
responses.
|
||||
"""
|
||||
import traceback
|
||||
|
||||
from wsgidav import util
|
||||
from wsgidav.dav_error import (
|
||||
as_DAVError,
|
||||
DAVError,
|
||||
get_http_status_string,
|
||||
HTTP_INTERNAL_ERROR,
|
||||
HTTP_NO_CONTENT,
|
||||
HTTP_NOT_MODIFIED,
|
||||
DAVError,
|
||||
as_DAVError,
|
||||
get_http_status_string,
|
||||
)
|
||||
from wsgidav.middleware import BaseMiddleware
|
||||
|
||||
import traceback
|
||||
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
_logger = util.get_module_logger(__name__)
|
||||
|
|
|
@ -15,14 +15,15 @@ This provider creates instances of :class:`~wsgidav.fs_dav_provider.FileResource
|
|||
and :class:`~wsgidav.fs_dav_provider.FolderResource` to represent files and
|
||||
directories respectively.
|
||||
"""
|
||||
from wsgidav import compat, util
|
||||
from wsgidav.dav_error import DAVError, HTTP_FORBIDDEN
|
||||
from wsgidav.dav_provider import DAVCollection, DAVNonCollection, DAVProvider
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import stat
|
||||
import sys
|
||||
|
||||
from wsgidav import compat, util
|
||||
from wsgidav.dav_error import HTTP_FORBIDDEN, DAVError
|
||||
from wsgidav.dav_provider import DAVCollection, DAVNonCollection, DAVProvider
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
|
|
|
@ -75,17 +75,18 @@ The environ variable here is the WSGI 'environ' dictionary. It is passed to
|
|||
all methods of the domain controller as a means for developers to pass information
|
||||
from previous middleware or server config (if required).
|
||||
"""
|
||||
import inspect
|
||||
import random
|
||||
import re
|
||||
import time
|
||||
from hashlib import md5
|
||||
|
||||
from wsgidav import compat, util
|
||||
from wsgidav.dc.simple_dc import SimpleDomainController
|
||||
from wsgidav.middleware import BaseMiddleware
|
||||
from wsgidav.util import calc_base64, calc_hexdigest, dynamic_import_class
|
||||
|
||||
import inspect
|
||||
import random
|
||||
import re
|
||||
import time
|
||||
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
_logger = util.get_module_logger(__name__)
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
class IDAVProvider(object):
|
||||
"""
|
||||
+----------------------------------------------------------------------+
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
class IDomainController(object):
|
||||
"""
|
||||
+----------------------------------------------------------------------+
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
class LockManagerInterface(object):
|
||||
"""
|
||||
+----------------------------------------------------------------------+
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
class PropertyManagerInterface(object):
|
||||
"""
|
||||
+----------------------------------------------------------------------+
|
||||
|
|
|
@ -36,19 +36,20 @@ The lock data model is a dictionary with these fields:
|
|||
Automatically generated unique token.
|
||||
|
||||
"""
|
||||
import random
|
||||
import time
|
||||
from pprint import pformat
|
||||
|
||||
from wsgidav import compat, util
|
||||
from wsgidav.dav_error import (
|
||||
HTTP_LOCKED,
|
||||
DAVError,
|
||||
DAVErrorCondition,
|
||||
HTTP_LOCKED,
|
||||
PRECONDITION_CODE_LockConflict,
|
||||
)
|
||||
from wsgidav.rw_lock import ReadWriteLock
|
||||
|
||||
import random
|
||||
import time
|
||||
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
_logger = util.get_module_logger(__name__)
|
||||
|
|
|
@ -11,10 +11,6 @@ Two alternative lock storage classes are defined here: one in-memory
|
|||
|
||||
See :class:`~wsgidav.lock_manager.LockManager`
|
||||
"""
|
||||
import os
|
||||
import shelve
|
||||
import time
|
||||
|
||||
from wsgidav import compat, util
|
||||
from wsgidav.lock_manager import (
|
||||
generate_lock_token,
|
||||
|
@ -24,6 +20,11 @@ from wsgidav.lock_manager import (
|
|||
)
|
||||
from wsgidav.rw_lock import ReadWriteLock
|
||||
|
||||
import os
|
||||
import shelve
|
||||
import time
|
||||
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
_logger = util.get_module_logger(__name__)
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
# -*- coding: utf-8 -*-
|
|
@ -1,3 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# (c) 2009-2018 Martin Wendt and contributors; see WsgiDAV https://github.com/mar10/wsgidav
|
||||
# Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
|
||||
"""
|
||||
|
@ -22,11 +23,11 @@ Valid options are (sample shows defaults)::
|
|||
|
||||
"""
|
||||
from __future__ import print_function
|
||||
|
||||
from uuid import uuid4
|
||||
from wsgidav import compat, util
|
||||
|
||||
import couchdb
|
||||
from wsgidav import compat, util
|
||||
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# (c) 2009-2018 Martin Wendt and contributors; see WsgiDAV https://github.com/mar10/wsgidav
|
||||
# Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
|
||||
"""
|
||||
|
@ -22,9 +23,10 @@ Valid options are (sample shows defaults)::
|
|||
|
||||
"""
|
||||
from __future__ import print_function
|
||||
from wsgidav import compat, util
|
||||
|
||||
import pymongo
|
||||
from wsgidav import compat, util
|
||||
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
|
|
|
@ -18,11 +18,12 @@ The properties dictionaray is built like::
|
|||
}
|
||||
|
||||
"""
|
||||
from wsgidav import util
|
||||
from wsgidav.rw_lock import ReadWriteLock
|
||||
|
||||
import os
|
||||
import shelve
|
||||
|
||||
from wsgidav import util
|
||||
from wsgidav.rw_lock import ReadWriteLock
|
||||
|
||||
# TODO: comment's from Ian Bicking (2005)
|
||||
# @@: Use of shelve means this is only really useful in a threaded environment.
|
||||
|
|
|
@ -88,10 +88,11 @@ header, if present, to::
|
|||
|
||||
"""
|
||||
from wsgidav import util
|
||||
from wsgidav.dav_error import HTTP_NOT_FOUND, DAVError
|
||||
from wsgidav.dav_error import DAVError, HTTP_NOT_FOUND
|
||||
from wsgidav.middleware import BaseMiddleware
|
||||
from wsgidav.request_server import RequestServer
|
||||
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
# NOTE (Martin Wendt, 2009-05):
|
||||
|
|
|
@ -8,6 +8,9 @@ WSGI application that handles one single WebDAV request.
|
|||
"""
|
||||
from wsgidav import compat, util, xml_tools
|
||||
from wsgidav.dav_error import (
|
||||
as_DAVError,
|
||||
DAVError,
|
||||
get_http_status_string,
|
||||
HTTP_BAD_GATEWAY,
|
||||
HTTP_BAD_REQUEST,
|
||||
HTTP_CONFLICT,
|
||||
|
@ -24,14 +27,12 @@ from wsgidav.dav_error import (
|
|||
HTTP_OK,
|
||||
HTTP_PRECONDITION_FAILED,
|
||||
HTTP_RANGE_NOT_SATISFIABLE,
|
||||
DAVError,
|
||||
PRECONDITION_CODE_LockTokenMismatch,
|
||||
PRECONDITION_CODE_PropfindFiniteDepth,
|
||||
as_DAVError,
|
||||
get_http_status_string,
|
||||
)
|
||||
from wsgidav.util import etree
|
||||
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
_logger = util.get_module_logger(__name__)
|
||||
|
|
|
@ -15,9 +15,10 @@ Released under the BSD-license.
|
|||
# Imports
|
||||
# -------
|
||||
|
||||
from threading import Condition, Lock, currentThread
|
||||
from threading import Condition, currentThread, Lock
|
||||
from time import time
|
||||
|
||||
|
||||
# Read write lock
|
||||
# ---------------
|
||||
|
||||
|
|
|
@ -4,11 +4,12 @@
|
|||
"""
|
||||
Tools that make it easier to implement custom WsgiDAV providers.
|
||||
"""
|
||||
from wsgidav import compat, util
|
||||
from wsgidav.dav_provider import DAVCollection, DAVNonCollection
|
||||
|
||||
import os
|
||||
import stat
|
||||
|
||||
from wsgidav import compat, util
|
||||
from wsgidav.dav_provider import DAVCollection, DAVNonCollection
|
||||
|
||||
__docformat__ = "reStructuredText en"
|
||||
|
||||
|
|
|
@ -72,17 +72,17 @@ Requirements:
|
|||
http://mercurial.berkwood.com/binaries/mercurial-1.4.win32-py2.6.exe
|
||||
"""
|
||||
from __future__ import print_function
|
||||
from hashlib import md5
|
||||
from pprint import pprint
|
||||
from wsgidav import compat, util
|
||||
from wsgidav.dav_error import DAVError, HTTP_FORBIDDEN
|
||||
from wsgidav.dav_provider import _DAVResource, DAVProvider
|
||||
from wsgidav.samples.dav_provider_tools import VirtualCollection
|
||||
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
from hashlib import md5
|
||||
from pprint import pprint
|
||||
|
||||
from wsgidav import compat, util
|
||||
from wsgidav.dav_error import HTTP_FORBIDDEN, DAVError
|
||||
from wsgidav.dav_provider import DAVProvider, _DAVResource
|
||||
from wsgidav.samples.dav_provider_tools import VirtualCollection
|
||||
|
||||
try:
|
||||
import mercurial.ui
|
||||
|
|
|
@ -24,14 +24,15 @@ Valid options are (sample shows defaults)::
|
|||
}
|
||||
|
||||
"""
|
||||
from pprint import pformat
|
||||
|
||||
import pymongo
|
||||
from bson.objectid import ObjectId
|
||||
from pprint import pformat
|
||||
from wsgidav import compat, util
|
||||
from wsgidav.dav_provider import DAVCollection, DAVNonCollection, DAVProvider
|
||||
from wsgidav.util import join_uri
|
||||
|
||||
import pymongo
|
||||
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
_logger = util.get_module_logger(__name__)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# (c) 2009-2018 Martin Wendt and contributors; see WsgiDAV https://github.com/mar10/wsgidav
|
||||
# Original PyFileServer (c) 2005 Ho Chun Wei.
|
||||
# Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
|
||||
|
@ -57,21 +58,19 @@ its limitations:
|
|||
|
||||
"""
|
||||
from __future__ import print_function
|
||||
from wsgidav import compat, util
|
||||
from wsgidav.dav_error import (
|
||||
DAVError,
|
||||
HTTP_FORBIDDEN,
|
||||
PRECONDITION_CODE_ProtectedProperty,
|
||||
)
|
||||
from wsgidav.dav_provider import _DAVResource, DAVProvider
|
||||
|
||||
import csv
|
||||
import hashlib
|
||||
|
||||
# import md5
|
||||
import MySQLdb # @UnresolvedImport
|
||||
import time
|
||||
|
||||
import MySQLdb # @UnresolvedImport
|
||||
from wsgidav import compat, util
|
||||
from wsgidav.dav_error import (
|
||||
HTTP_FORBIDDEN,
|
||||
DAVError,
|
||||
PRECONDITION_CODE_ProtectedProperty,
|
||||
)
|
||||
from wsgidav.dav_provider import DAVProvider, _DAVResource
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
|
|
|
@ -95,19 +95,20 @@ When accessed using WebDAV, the following URLs both return the same resource
|
|||
<share>/by_tag/hot/My doc 1
|
||||
<share>/by_key/1
|
||||
"""
|
||||
import os
|
||||
import stat
|
||||
|
||||
from wsgidav import compat, util
|
||||
from wsgidav.dav_error import (
|
||||
DAVError,
|
||||
HTTP_FORBIDDEN,
|
||||
HTTP_INTERNAL_ERROR,
|
||||
DAVError,
|
||||
PRECONDITION_CODE_ProtectedProperty,
|
||||
)
|
||||
from wsgidav.dav_provider import DAVCollection, DAVNonCollection, DAVProvider
|
||||
from wsgidav.util import join_uri
|
||||
|
||||
import os
|
||||
import stat
|
||||
|
||||
|
||||
__docformat__ = "reStructuredText en"
|
||||
|
||||
_logger = util.get_module_logger(__name__)
|
||||
|
|
|
@ -53,6 +53,8 @@ can copy ``ext_wsgi_server.py`` to ``<Paste-installation>/paste/servers`` and us
|
|||
run the application by specifying ``server='ext_wsgiutils'`` in the ``server.conf`` or appropriate
|
||||
paste configuration.
|
||||
"""
|
||||
from wsgidav import __version__, compat, util
|
||||
|
||||
import logging
|
||||
import socket
|
||||
import sys
|
||||
|
@ -60,7 +62,6 @@ import threading
|
|||
import time
|
||||
import traceback
|
||||
|
||||
from wsgidav import __version__, compat, util
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
|
@ -336,7 +337,7 @@ class ExtServer(socketserver.ThreadingMixIn, BaseHTTPServer.HTTPServer):
|
|||
|
||||
# # Flag stop request
|
||||
self.stop_request = True
|
||||
time.sleep(.1)
|
||||
time.sleep(0.1)
|
||||
if self.stopped:
|
||||
# _logger.info "stop_serve_forever() 'stopped'."
|
||||
return
|
||||
|
|
|
@ -6,10 +6,10 @@ Wrapper for ``server_cli``, that restarts the server when source code is
|
|||
modified.
|
||||
"""
|
||||
from __future__ import print_function
|
||||
from subprocess import Popen
|
||||
|
||||
import os
|
||||
import sys
|
||||
from subprocess import Popen
|
||||
|
||||
|
||||
def run():
|
||||
|
|
|
@ -33,6 +33,14 @@ Configuration is defined like this:
|
|||
FOLDER on the '/' share.
|
||||
"""
|
||||
from __future__ import print_function
|
||||
from inspect import isfunction
|
||||
from jsmin import jsmin
|
||||
from pprint import pformat
|
||||
from wsgidav import __version__, util
|
||||
from wsgidav.default_conf import DEFAULT_CONFIG, DEFAULT_VERBOSE
|
||||
from wsgidav.fs_dav_provider import FilesystemProvider
|
||||
from wsgidav.wsgidav_app import WsgiDAVApp
|
||||
from wsgidav.xml_tools import use_lxml
|
||||
|
||||
import argparse
|
||||
import copy
|
||||
|
@ -43,17 +51,8 @@ import os
|
|||
import platform
|
||||
import sys
|
||||
import traceback
|
||||
from inspect import isfunction
|
||||
from pprint import pformat
|
||||
|
||||
import yaml
|
||||
from jsmin import jsmin
|
||||
|
||||
from wsgidav import __version__, util
|
||||
from wsgidav.default_conf import DEFAULT_CONFIG, DEFAULT_VERBOSE
|
||||
from wsgidav.fs_dav_provider import FilesystemProvider
|
||||
from wsgidav.wsgidav_app import WsgiDAVApp
|
||||
from wsgidav.xml_tools import use_lxml
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
|
|
|
@ -6,13 +6,12 @@
|
|||
Simple example how to a run WsgiDAV in a 3rd-party WSGI server.
|
||||
"""
|
||||
from __future__ import print_function
|
||||
|
||||
from tempfile import gettempdir
|
||||
|
||||
from wsgidav import __version__
|
||||
from wsgidav.fs_dav_provider import FilesystemProvider
|
||||
from wsgidav.wsgidav_app import WsgiDAVApp
|
||||
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
|
||||
|
|
|
@ -17,9 +17,9 @@ consumer at the same time::
|
|||
|
||||
"""
|
||||
from __future__ import print_function
|
||||
|
||||
from wsgidav import compat, util
|
||||
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
_logger = util.get_module_logger(__name__)
|
||||
|
|
|
@ -6,6 +6,23 @@
|
|||
"""
|
||||
Miscellaneous support functions for WsgiDAV.
|
||||
"""
|
||||
from email.utils import formatdate, parsedate
|
||||
from hashlib import md5
|
||||
from pprint import pformat
|
||||
from wsgidav import compat
|
||||
from wsgidav.dav_error import (
|
||||
as_DAVError,
|
||||
DAVError,
|
||||
get_http_status_string,
|
||||
HTTP_BAD_REQUEST,
|
||||
HTTP_CREATED,
|
||||
HTTP_NO_CONTENT,
|
||||
HTTP_NOT_MODIFIED,
|
||||
HTTP_OK,
|
||||
HTTP_PRECONDITION_FAILED,
|
||||
)
|
||||
from wsgidav.xml_tools import etree, is_etree_element, make_sub_element, xml_to_bytes
|
||||
|
||||
import base64
|
||||
import calendar
|
||||
import collections
|
||||
|
@ -17,23 +34,7 @@ import socket
|
|||
import stat
|
||||
import sys
|
||||
import time
|
||||
from email.utils import formatdate, parsedate
|
||||
from hashlib import md5
|
||||
from pprint import pformat
|
||||
|
||||
from wsgidav import compat
|
||||
from wsgidav.dav_error import (
|
||||
HTTP_BAD_REQUEST,
|
||||
HTTP_CREATED,
|
||||
HTTP_NO_CONTENT,
|
||||
HTTP_NOT_MODIFIED,
|
||||
HTTP_OK,
|
||||
HTTP_PRECONDITION_FAILED,
|
||||
DAVError,
|
||||
as_DAVError,
|
||||
get_http_status_string,
|
||||
)
|
||||
from wsgidav.xml_tools import etree, is_etree_element, make_sub_element, xml_to_bytes
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
|
|
|
@ -48,13 +48,7 @@ For every request:
|
|||
Note: The OPTIONS method for the '*' path is handled directly.
|
||||
|
||||
"""
|
||||
import copy
|
||||
import inspect
|
||||
import platform
|
||||
import sys
|
||||
import time
|
||||
|
||||
from wsgidav import compat, util, __version__
|
||||
from wsgidav import __version__, compat, util
|
||||
from wsgidav.dav_provider import DAVProvider
|
||||
from wsgidav.default_conf import DEFAULT_CONFIG
|
||||
from wsgidav.fs_dav_provider import FilesystemProvider
|
||||
|
@ -69,6 +63,13 @@ from wsgidav.util import (
|
|||
safe_re_encode,
|
||||
)
|
||||
|
||||
import copy
|
||||
import inspect
|
||||
import platform
|
||||
import sys
|
||||
import time
|
||||
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
_logger = util.get_module_logger(__name__)
|
||||
|
|
|
@ -8,9 +8,10 @@ Small wrapper for different etree packages.
|
|||
"""
|
||||
# from __future__ import print_function
|
||||
|
||||
from wsgidav import compat
|
||||
|
||||
import logging
|
||||
|
||||
from wsgidav import compat
|
||||
|
||||
__docformat__ = "reStructuredText"
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue