diff --git a/dephell_specifier/constants.py b/dephell_specifier/constants.py
index 6895c4b..7060a13 100644
--- a/dephell_specifier/constants.py
+++ b/dephell_specifier/constants.py
@@ -13,4 +13,4 @@ PYTHONS_POPULAR = ('3.5', '3.6', '3.7')
 PYTHONS_UNRELEASED = ('3.8', '4.0')
 PYTHONS = PYTHONS_POPULAR + PYTHONS_DEPRECATED + PYTHONS_UNRELEASED
 
-OPERATOR_SYMBOLS = '><=[]()~^,'
+OPERATOR_SYMBOLS = '!><=[]()~^,'
diff --git a/dephell_specifier/range_specifier.py b/dephell_specifier/range_specifier.py
index 8f226a6..9e4dc56 100644
--- a/dephell_specifier/range_specifier.py
+++ b/dephell_specifier/range_specifier.py
@@ -31,7 +31,7 @@ class RangeSpecifier:
             return
 
         # split `(,1),(2,)` on `(,1)` and `(2,)`
-        subspecs = REX_MAVEN_INTERVAL.sub(r'\1|\2', spec).split('|')
+        subspecs = REX_MAVEN_INTERVAL.sub(r'\1|\2', str(spec)).split('|')
         if len(subspecs) > 1:
             self._specs = {type(self)(subspec) for subspec in subspecs}
             self.join_type = JoinTypes.OR
diff --git a/dephell_specifier/specifier.py b/dephell_specifier/specifier.py
index 610a3e6..5a3b77b 100644
--- a/dephell_specifier/specifier.py
+++ b/dephell_specifier/specifier.py
@@ -1,9 +1,10 @@
 # built-in
 import operator
+from typing import Any, Callable, Optional, Union
 
 # external
 from packaging import specifiers
-from packaging.version import LegacyVersion, parse
+from packaging.version import LegacyVersion, Version, parse
 
 # app
 from .utils import cached_property
@@ -68,7 +69,7 @@ class Specifier:
                     return True
         return False
 
-    def _check_version(self, version):
+    def _check_version(self, version) -> bool:
         """
         https://www.python.org/dev/peps/pep-0440/
         """
@@ -100,16 +101,20 @@ class Specifier:
         return self._spec.operator
 
     @property
-    def operation(self):
+    def operation(self) -> Optional[Callable[[Any, Any], bool]]:
         return OPERATIONS.get(self._spec.operator)
 
+    @property
+    def raw_version(self) -> str:
+        return self._spec.version
+
     @cached_property
-    def version(self):
-        return parse(self._spec.version)
+    def version(self) -> Union[Version, LegacyVersion]:
+        return parse(self.raw_version)
 
     # magic methods
 
-    def __contains__(self, release):
+    def __contains__(self, release) -> bool:
         # compare version
         # check that this is Release without imports
         if not hasattr(release, 'time'):
@@ -125,10 +130,10 @@ class Specifier:
         # compare release by version
         return self._check_version(version=release.version)
 
-    def __str__(self):
+    def __str__(self) -> str:
         return str(self._spec)
 
-    def __repr__(self):
+    def __repr__(self) -> str:
         return '{name}({spec})'.format(
             name=self.__class__.__name__,
             spec=str(self._spec),
@@ -165,11 +170,11 @@ class Specifier:
 
         return NotImplemented
 
-    def __lt__(self, other):
+    def __lt__(self, other) -> bool:
         return self.version < other.version
 
-    def __eq__(self, other):
+    def __eq__(self, other) -> bool:
         return self.version == other.version and self.operator == other.operator
 
-    def __hash__(self):
+    def __hash__(self) -> int:
         return hash(self._spec)

Retrieving input out of Specifier('==1.0-1')
`str(Specifier('==1.0-1'))` is `==1.0-1` however 

`str(Specifier('==1.0-1').version)` is `1.0.post1`

To get `1.0-1` back out, I need to do `str(Specifier('==1.0-1')._spec.version)`

`1.0-1` is `1.0.post1` in equivalent in recent versions of Python libraries, but doesnt hold true in other packaging version systems.

I may be trying to use @dephell out of its intended scope, going a bit further even than https://github.com/dephell/dephell/issues/98 .  c.f. https://github.com/dephell/dephell_specifier/issues/3

I am hoping to use dephell for https://gitlab.com/coala/package_manager , specifically https://gitlab.com/coala/package_manager/issues/6 .  We support a rather large list of package managers ; c.f. https://gitlab.com/coala/package_manager/tree/master/dependency_management/requirements , but have not parsed the `version` field passed to our classes, until now.  It has been approximately a specifier, but also held discrete versions.  That is easy enough to handle using `dephell_specifier`.

With a few exceptions (fixable with https://github.com/dephell/dephell_specifier/issues/3), dephell_specifier seems to be quite suitable.

Except I need to be able to get the version back out, without Python-specific rewriting of the version string (i.e. the `-1' -> `.post`` transform), and ideally avoiding `_` underscore prefixed values.

Perhaps adding a property `raw_version` that returns `self._spec.version` ?
diff --git a/tests/test_range_specifier.py b/tests/test_range_specifier.py
index b0b4c21..755bbed 100644
--- a/tests/test_range_specifier.py
+++ b/tests/test_range_specifier.py
@@ -12,6 +12,7 @@ from dephell_specifier import RangeSpecifier
     ('===', [0, 1, 0]),
     ('>=',  [0, 1, 1]),
     ('>',   [0, 0, 1]),
+    ('!=',   [1, 0, 1]),
 ])
 def test_simple(operator, mask):
     versions = ('1.2.3', '1.3.2', '1.4.1')

pip install -e .
parse_log_pytest
pytest
pytest pytest-cov pytest-xdist pytest-mock pytest-asyncio
3.6
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs @ file:///opt/conda/conda-bld/attrs_1642510447205/work
certifi==2021.5.30
coverage==6.2
execnet==1.9.0
importlib-metadata @ file:///tmp/build/80754af9/importlib-metadata_1631916693255/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
more-itertools @ file:///tmp/build/80754af9/more-itertools_1637733554872/work
packaging @ file:///tmp/build/80754af9/packaging_1637314298585/work
pluggy @ file:///tmp/build/80754af9/pluggy_1615976315926/work
py @ file:///opt/conda/conda-bld/py_1644396412707/work
pyparsing @ file:///tmp/build/80754af9/pyparsing_1635766073266/work
pytest==6.2.4
pytest-asyncio==0.16.0
pytest-cov==4.0.0
pytest-mock==3.6.1
pytest-xdist==3.0.2
toml @ file:///tmp/build/80754af9/toml_1616166611790/work
tomli==1.2.3
typing_extensions @ file:///opt/conda/conda-bld/typing_extensions_1647553014482/work
-e git+https://github.com/dephell/dephell_specifier.git@9153083a7463b7390c3efb09713e65a909e08cd7#egg=UNKNOWN
zipp @ file:///tmp/build/80754af9/zipp_1633618647012/work

name: dephell_specifier
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - attrs=21.4.0=pyhd3eb1b0_0
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - importlib-metadata=4.8.1=py36h06a4308_0
  - importlib_metadata=4.8.1=hd3eb1b0_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - more-itertools=8.12.0=pyhd3eb1b0_0
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - packaging=21.3=pyhd3eb1b0_0
  - pip=21.2.2=py36h06a4308_0
  - pluggy=0.13.1=py36h06a4308_0
  - py=1.11.0=pyhd3eb1b0_0
  - pyparsing=3.0.4=pyhd3eb1b0_0
  - pytest=6.2.4=py36h06a4308_2
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - toml=0.10.2=pyhd3eb1b0_0
  - typing_extensions=4.1.1=pyh06a4308_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zipp=3.6.0=pyhd3eb1b0_0
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - coverage==6.2
      - execnet==1.9.0
      - pytest-asyncio==0.16.0
      - pytest-cov==4.0.0
      - pytest-mock==3.6.1
      - pytest-xdist==3.0.2
      - tomli==1.2.3
prefix: /opt/conda/envs/dephell_specifier

tests/test_range_specifier.py::test_simple[!=-mask6]
tests/test_range_specifier.py::test_simple[<-mask0] tests/test_range_specifier.py::test_simple[<=-mask1] tests/test_range_specifier.py::test_simple[==-mask2] tests/test_range_specifier.py::test_simple[===-mask3] tests/test_range_specifier.py::test_simple[>=-mask4] tests/test_range_specifier.py::test_simple[>-mask5] tests/test_range_specifier.py::test_cases[2.7-<=3.4-True] tests/test_range_specifier.py::test_cases[2.7.1-<=3.4-True] tests/test_range_specifier.py::test_cases[2.7.1rc1-<=3.4-True] tests/test_range_specifier.py::test_cases[2.7.15-<=3.4-True] tests/test_range_specifier.py::test_cases[2.7.15rc1-<=3.4-True] tests/test_range_specifier.py::test_cases[2.7->=3.4-False] tests/test_range_specifier.py::test_cases[2.7.1->=3.4-False] tests/test_range_specifier.py::test_cases[2.7.1rc1->=3.4-False] tests/test_range_specifier.py::test_cases[2.7.15->=3.4-False] tests/test_range_specifier.py::test_cases[2.7.15rc1->=3.4-False] tests/test_range_specifier.py::test_range[<-<-mask0] tests/test_range_specifier.py::test_range[<-<=-mask1] tests/test_range_specifier.py::test_range[<=-<-mask2] tests/test_range_specifier.py::test_range[<=-<=-mask3] tests/test_range_specifier.py::test_range[==-<-mask4] tests/test_range_specifier.py::test_range[==-<=-mask5] tests/test_range_specifier.py::test_range[>=-<-mask6] tests/test_range_specifier.py::test_range[>-<-mask7] tests/test_range_specifier.py::test_range[>-<=-mask8] tests/test_range_specifier.py::test_range[>=-<=-mask9] tests/test_range_specifier.py::test_range[>=-==-mask10] tests/test_range_specifier.py::test_range[>-==-mask11] tests/test_range_specifier.py::test_range[>->=-mask12] tests/test_range_specifier.py::test_range[>=->=-mask13] tests/test_range_specifier.py::test_range[>=->-mask14] tests/test_range_specifier.py::test_range[>->-mask15] tests/test_range_specifier.py::test_range[<=->=-mask16] tests/test_range_specifier.py::test_range[<->=-mask17] tests/test_range_specifier.py::test_range[<=->-mask18] tests/test_range_specifier.py::test_range[<->-mask19] tests/test_range_specifier.py::test_range[==-==-mask20] tests/test_range_specifier.py::test_range[==->-mask21] tests/test_range_specifier.py::test_range[==->=-mask22] tests/test_range_specifier.py::test_range[<-==-mask23] tests/test_range_specifier.py::test_range[<=-==-mask24] tests/test_range_specifier.py::test_caret[1.2.3-1.2.3-True] tests/test_range_specifier.py::test_caret[1.2.3-1.2.4-True] tests/test_range_specifier.py::test_caret[1.2.3-1.3.1-True] tests/test_range_specifier.py::test_caret[1.2.3-1.3.0-True] tests/test_range_specifier.py::test_caret[1.2.3-1.2.2-False] tests/test_range_specifier.py::test_caret[1.2.3-1.1.9-False] tests/test_range_specifier.py::test_caret[1.2.3-1.0.0-False] tests/test_range_specifier.py::test_caret[1.2.3-2.0.0-False] tests/test_range_specifier.py::test_caret[1.2.3-3.0.0-False] tests/test_range_specifier.py::test_caret[1.2.0-1.2.0-True] tests/test_range_specifier.py::test_caret[1.2.0-1.2.1-True] tests/test_range_specifier.py::test_caret[1.2.0-1.3.2-True] tests/test_range_specifier.py::test_caret[1.2.0-1.1.0-False] tests/test_range_specifier.py::test_caret[1.2.0-0.9.0-False] tests/test_range_specifier.py::test_caret[1.2.0-2.0.0-False] tests/test_range_specifier.py::test_caret[1.0.0-1.0.0-True] tests/test_range_specifier.py::test_caret[1.0.0-1.0.1-True] tests/test_range_specifier.py::test_caret[1.0.0-1.1.0-True] tests/test_range_specifier.py::test_caret[1.0.0-2.0.0-False] tests/test_range_specifier.py::test_caret[1.0.0-0.9.0-False] tests/test_range_specifier.py::test_caret[1.0-1.0.0-True] tests/test_range_specifier.py::test_caret[1.0-1.0.1-True] tests/test_range_specifier.py::test_caret[1.0-1.1.0-True] tests/test_range_specifier.py::test_caret[1.0-2.0.0-False] tests/test_range_specifier.py::test_caret[1.0-0.9.0-False] tests/test_range_specifier.py::test_caret[1-1.0.0-True] tests/test_range_specifier.py::test_caret[1-1.0.1-True] tests/test_range_specifier.py::test_caret[1-1.1.0-True] tests/test_range_specifier.py::test_caret[1-2.0.0-False] tests/test_range_specifier.py::test_caret[1-0.9.0-False] tests/test_range_specifier.py::test_tilda[1.2.3-1.2.3-True] tests/test_range_specifier.py::test_tilda[1.2.3-1.2.4-True] tests/test_range_specifier.py::test_tilda[1.2.3-1.3.1-False] tests/test_range_specifier.py::test_tilda[1.2.3-1.3.0-False] tests/test_range_specifier.py::test_tilda[1.2.3-1.2.2-False] tests/test_range_specifier.py::test_tilda[1.2.3-1.1.9-False] tests/test_range_specifier.py::test_tilda[1.2.3-1.0.0-False] tests/test_range_specifier.py::test_tilda[1.2.3-2.0.0-False] tests/test_range_specifier.py::test_tilda[1.2.3-3.0.0-False] tests/test_range_specifier.py::test_tilda[1.2.0-1.2.0-True] tests/test_range_specifier.py::test_tilda[1.2.0-1.2.1-True] tests/test_range_specifier.py::test_tilda[1.2.0-1.3.2-False] tests/test_range_specifier.py::test_tilda[1.2.0-1.1.0-False] tests/test_range_specifier.py::test_tilda[1.2.0-0.9.0-False] tests/test_range_specifier.py::test_tilda[1.2.0-2.0.0-False] tests/test_range_specifier.py::test_tilda[1.0.0-1.0.0-True] tests/test_range_specifier.py::test_tilda[1.0.0-1.0.1-True] tests/test_range_specifier.py::test_tilda[1.0.0-1.1.0-False] tests/test_range_specifier.py::test_tilda[1.0.0-2.0.0-False] tests/test_range_specifier.py::test_tilda[1.0.0-0.9.0-False] tests/test_range_specifier.py::test_tilda[1.0-1.0.0-True] tests/test_range_specifier.py::test_tilda[1.0-1.0.1-True] tests/test_range_specifier.py::test_tilda[1.0-1.1.0-False] tests/test_range_specifier.py::test_tilda[1.0-2.0.0-False] tests/test_range_specifier.py::test_tilda[1.0-0.9.0-False] tests/test_range_specifier.py::test_tilda[1-1.0.0-True] tests/test_range_specifier.py::test_tilda[1-1.0.1-True] tests/test_range_specifier.py::test_tilda[1-1.1.0-True] tests/test_range_specifier.py::test_tilda[1-2.0.0-False] tests/test_range_specifier.py::test_tilda[1-0.9.0-False] tests/test_range_specifier.py::test_compat[1.2.3-1.2.3-True] tests/test_range_specifier.py::test_compat[1.2.3-1.2.4-True] tests/test_range_specifier.py::test_compat[1.2.3-1.3.1-False] tests/test_range_specifier.py::test_compat[1.2.3-1.3.0-False] tests/test_range_specifier.py::test_compat[1.2.3-1.2.2-False] tests/test_range_specifier.py::test_compat[1.2.3-1.1.9-False] tests/test_range_specifier.py::test_compat[1.2.3-1.0.0-False] tests/test_range_specifier.py::test_compat[1.2.3-2.0.0-False] tests/test_range_specifier.py::test_compat[1.2.3-3.0.0-False] tests/test_range_specifier.py::test_compat[1.2.0-1.2.0-True] tests/test_range_specifier.py::test_compat[1.2.0-1.2.1-True] tests/test_range_specifier.py::test_compat[1.2.0-1.3.2-False] tests/test_range_specifier.py::test_compat[1.2.0-1.1.0-False] tests/test_range_specifier.py::test_compat[1.2.0-0.9.0-False] tests/test_range_specifier.py::test_compat[1.2.0-2.0.0-False] tests/test_range_specifier.py::test_compat[1.0.0-1.0.0-True] tests/test_range_specifier.py::test_compat[1.0.0-1.0.1-True] tests/test_range_specifier.py::test_compat[1.0.0-1.1.0-False] tests/test_range_specifier.py::test_compat[1.0.0-2.0.0-False] tests/test_range_specifier.py::test_compat[1.0.0-0.9.0-False] tests/test_range_specifier.py::test_compat[1.0-1.0.0-True] tests/test_range_specifier.py::test_compat[1.0-1.0.1-True] tests/test_range_specifier.py::test_compat[1.0-1.1.0-True] tests/test_range_specifier.py::test_compat[1.0-2.0.0-False] tests/test_range_specifier.py::test_compat[1.0-0.9.0-False] tests/test_range_specifier.py::test_or[2.7-True] tests/test_range_specifier.py::test_or[2.7.1-True] tests/test_range_specifier.py::test_or[2.7.6-True] tests/test_range_specifier.py::test_or[2.8-False] tests/test_range_specifier.py::test_or[2.8.0-False] tests/test_range_specifier.py::test_or[3.0-False] tests/test_range_specifier.py::test_or[3.2-True] tests/test_range_specifier.py::test_or[3.2.1-True] tests/test_range_specifier.py::test_or[3.3-True] tests/test_range_specifier.py::test_or[3.7-True] tests/test_range_specifier.py::test_or[4.0-False] tests/test_range_specifier.py::test_to_marker[>=2.7-m tests/test_range_specifier.py::test_to_marker[>=2.7,<3.4-m tests/test_range_specifier.py::test_to_marker[>=2.7 tests/test_range_specifier.py::test_merging[>=2.7-<=3.4->=2.7,<=3.4] tests/test_range_specifier.py::test_merging[>=2.7->=3.4,<=3.7->=2.7,>=3.4,<=3.7] tests/test_range_specifier.py::test_merging[==2.7 tests/test_range_specifier.py::test_merging[<=3.7-==2.7 tests/test_range_specifier.py::test_merging[<=3.7 tests/test_range_specifier.py::test_peppify_python[>=2.7->=2.7] tests/test_range_specifier.py::test_peppify_python[>=2.7,<3.4->=2.7,<3.4] tests/test_range_specifier.py::test_peppify_python[==2.7.* tests/test_range_specifier.py::test_intervals[[1.0]-==1.0] tests/test_range_specifier.py::test_intervals[[1.2,1.3]->=1.2,<=1.3] tests/test_range_specifier.py::test_intervals[[1.0,2.0)->=1.0,<2.0] tests/test_range_specifier.py::test_intervals[(1.0,2.0]->1.0,<=2.0] tests/test_range_specifier.py::test_intervals[(1.0,2.0)->1.0,<2.0] tests/test_range_specifier.py::test_intervals[[1.5,)->=1.5] tests/test_range_specifier.py::test_intervals[(,1.5]-<=1.5] tests/test_range_specifier.py::test_intervals[(1.5,)->1.5] tests/test_range_specifier.py::test_intervals[(,1.5)-<1.5] tests/test_range_specifier.py::test_intervals[(,1.0],[1.2,)-<=1.0 tests/test_range_specifier.py::test_intervals[(,1.0),[1.2,)-<1.0 tests/test_range_specifier.py::test_intervals[(,1.0],(1.2,)-<=1.0 tests/test_range_specifier.py::test_intervals[(,1.0),(1.2,)-<1.0
dephell_specifier/constants.py dephell_specifier/range_specifier.py dephell_specifier/specifier.py
dephell_specifier/constants.py dephell_specifier/range_specifier.py dephell_specifier/specifier.py