# Path: aql/util_types/aql_simple_types.py
# class String (str):
# 
#     def __new__(cls, value=None):
# 
#         if type(value) is cls:
#             return value
# 
#         if value is None:
#             value = ''
# 
#         return super(String, cls).__new__(cls, value)
# 
# class IgnoreCaseString (String):
# 
#     def __hash__(self):
#         return hash(self.lower())
# 
#     def _cmp(self, other, op):
#         return op(self.lower(), str(other).lower())
# 
#     def __eq__(self, other):
#         return self._cmp(other, operator.eq)
# 
#     def __ne__(self, other):
#         return self._cmp(other, operator.ne)
# 
#     def __lt__(self, other):
#         return self._cmp(other, operator.lt)
# 
#     def __le__(self, other):
#         return self._cmp(other, operator.le)
# 
#     def __gt__(self, other):
#         return self._cmp(other, operator.gt)
# 
#     def __ge__(self, other):
#         return self._cmp(other, operator.ge)


import os.path
from .aql_simple_types import String, IgnoreCaseString
# 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.




__all__ = (
    'FilePath',
    'AbsFilePath',
)

# ==============================================================================

if os.path.normcase('ABC') == os.path.normcase('abc'):
    FilePathBase = IgnoreCaseString
else:

# Path: aql/util_types/aql_simple_types.py
# class String (str):
# 
#     def __new__(cls, value=None):
# 
#         if type(value) is cls:
#             return value
# 
#         if value is None:
#             value = ''
# 
#         return super(String, cls).__new__(cls, value)
# 
# class IgnoreCaseString (String):
# 
#     def __hash__(self):
#         return hash(self.lower())
# 
#     def _cmp(self, other, op):
#         return op(self.lower(), str(other).lower())
# 
#     def __eq__(self, other):
#         return self._cmp(other, operator.eq)
# 
#     def __ne__(self, other):
#         return self._cmp(other, operator.ne)
# 
#     def __lt__(self, other):
#         return self._cmp(other, operator.lt)
# 
#     def __le__(self, other):
#         return self._cmp(other, operator.le)
# 
#     def __gt__(self, other):
#         return self._cmp(other, operator.gt)
# 
#     def __ge__(self, other):
#         return self._cmp(other, operator.ge)


# Path: aql/util_types/aql_path_types.py
import os.path
from .aql_simple_types import String, IgnoreCaseString

# 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.




__all__ = (
    'FilePath',
    'AbsFilePath',
)

# ==============================================================================

if os.path.normcase('ABC') == os.path.normcase('abc'):
    FilePathBase = IgnoreCaseString
else:

    FilePathBase = String