diff --git a/CHANGES.rst b/CHANGES.rst
index 5fa41b2..a6d5665 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -1,6 +1,11 @@
 CHANGES
 =======
 
+1.2.3 (2018-05-03)
+------------------
+
+* Accept `str` subclasses in `URL` constructor (#190)
+
 1.2.2 (2018-05-01)
 ------------------
 
diff --git a/appveyor.yml b/appveyor.yml
index a0f7c19..a8dc45f 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -4,9 +4,6 @@ environment:
   PYPI_PASSWD:
     secure: u+K6dKi7+CXXVFEUG4V7zUyV3w7Ntg0Ork/RGVV0eSQ=
   matrix:
-    - PYTHON: "C:\\Python34"
-    - PYTHON: "C:\\Python34-x64"
-      DISTUTILS_USE_SDK: "1"
     - PYTHON: "C:\\Python35"
     - PYTHON: "C:\\Python35-x64"
     - PYTHON: "C:\\Python36"
diff --git a/yarl/__init__.py b/yarl/__init__.py
index ddeeb40..13340c6 100644
--- a/yarl/__init__.py
+++ b/yarl/__init__.py
@@ -151,6 +151,8 @@ class URL:
         elif type(val) is SplitResult:
             if not encoded:
                 raise ValueError("Cannot apply decoding to SplitResult")
+        elif isinstance(val, str):
+            val = urlsplit(str(val))
         else:
             raise TypeError("Constructor parameter should be str")
 

diff --git a/tests/test_url.py b/tests/test_url.py
index a12e25b..598e0fd 100644
--- a/tests/test_url.py
+++ b/tests/test_url.py
@@ -17,6 +17,13 @@ def test_inheritance():
             "from URL is forbidden" == str(ctx.value))
 
 
+def test_str_subclass():
+    class S(str):
+        pass
+
+    assert str(URL(S('http://example.com'))) == 'http://example.com'
+
+
 def test_is():
     u1 = URL('http://example.com')
     u2 = URL(u1)

`if type(val) is str` is a bit too strict
It makes sense to use a subclass of str for example if I want to put a secret into a class but want to censor the repr: https://github.com/hynek/environ_config/blob/69b1c8ab25fde3c20fa21de1a044e30760c86d36/src/environ/secrets.py#L114-L124

This breaks with the latest versions.
tests/test_url.py::test_str_subclass
tests/test_url.py::test_inheritance tests/test_url.py::test_is tests/test_url.py::test_absolute_url_without_host tests/test_url.py::test_url_is_not_str tests/test_url.py::test_str tests/test_url.py::test_repr tests/test_url.py::test_origin tests/test_url.py::test_origin_not_absolute_url tests/test_url.py::test_origin_no_scheme tests/test_url.py::test_drop_dots tests/test_url.py::test_abs_cmp tests/test_url.py::test_abs_hash tests/test_url.py::test_scheme tests/test_url.py::test_raw_user tests/test_url.py::test_raw_user_non_ascii tests/test_url.py::test_no_user tests/test_url.py::test_user_non_ascii tests/test_url.py::test_raw_password tests/test_url.py::test_raw_password_non_ascii tests/test_url.py::test_password_non_ascii tests/test_url.py::test_password_without_user tests/test_url.py::test_raw_host tests/test_url.py::test_raw_host_non_ascii tests/test_url.py::test_host_non_ascii tests/test_url.py::test_localhost tests/test_url.py::test_host_with_underscore tests/test_url.py::test_raw_host_when_port_is_specified tests/test_url.py::test_raw_host_from_str_with_ipv4 tests/test_url.py::test_raw_host_from_str_with_ipv6 tests/test_url.py::test_lowercase tests/test_url.py::test_lowercase_nonascii tests/test_url.py::test_compressed_ipv6 tests/test_url.py::test_ipv6_zone tests/test_url.py::test_ipv4_zone tests/test_url.py::test_explicit_port tests/test_url.py::test_implicit_port tests/test_url.py::test_port_for_relative_url tests/test_url.py::test_port_for_unknown_scheme tests/test_url.py::test_raw_path_string_empty tests/test_url.py::test_raw_path tests/test_url.py::test_raw_path_non_ascii tests/test_url.py::test_path_non_ascii tests/test_url.py::test_path_with_spaces tests/test_url.py::test_raw_path_for_empty_url tests/test_url.py::test_raw_path_for_colon_and_at tests/test_url.py::test_raw_query_string tests/test_url.py::test_raw_query_string_non_ascii tests/test_url.py::test_query_string_non_ascii tests/test_url.py::test_path_qs tests/test_url.py::test_raw_path_qs tests/test_url.py::test_query_string_spaces tests/test_url.py::test_raw_fragment_empty tests/test_url.py::test_raw_fragment tests/test_url.py::test_raw_fragment_non_ascii tests/test_url.py::test_raw_fragment_safe tests/test_url.py::test_fragment_non_ascii tests/test_url.py::test_raw_parts_empty tests/test_url.py::test_raw_parts tests/test_url.py::test_raw_parts_without_path tests/test_url.py::test_raw_path_parts_with_2F_in_path tests/test_url.py::test_raw_path_parts_with_2f_in_path tests/test_url.py::test_raw_parts_for_relative_path tests/test_url.py::test_raw_parts_for_relative_path_starting_from_slash tests/test_url.py::test_raw_parts_for_relative_double_path tests/test_url.py::test_parts_for_empty_url tests/test_url.py::test_raw_parts_non_ascii tests/test_url.py::test_parts_non_ascii tests/test_url.py::test_name_for_empty_url tests/test_url.py::test_raw_name tests/test_url.py::test_raw_name_root tests/test_url.py::test_raw_name_root2 tests/test_url.py::test_raw_name_root3 tests/test_url.py::test_relative_raw_name tests/test_url.py::test_relative_raw_name_starting_from_slash tests/test_url.py::test_relative_raw_name_slash tests/test_url.py::test_name_non_ascii tests/test_url.py::test_plus_in_path tests/test_url.py::test_parent_raw_path tests/test_url.py::test_parent_raw_parts tests/test_url.py::test_double_parent_raw_path tests/test_url.py::test_empty_parent_raw_path tests/test_url.py::test_empty_parent_raw_path2 tests/test_url.py::test_clear_fragment_on_getting_parent tests/test_url.py::test_clear_fragment_on_getting_parent_toplevel tests/test_url.py::test_clear_query_on_getting_parent tests/test_url.py::test_clear_query_on_getting_parent_toplevel tests/test_url.py::test_div_root tests/test_url.py::test_div_root_with_slash tests/test_url.py::test_div tests/test_url.py::test_div_with_slash tests/test_url.py::test_div_path_starting_from_slash_is_forbidden tests/test_url.py::test_div_cleanup_query_and_fragment tests/test_url.py::test_div_for_empty_url tests/test_url.py::test_div_for_relative_url tests/test_url.py::test_div_for_relative_url_started_with_slash tests/test_url.py::test_div_non_ascii tests/test_url.py::test_div_with_colon_and_at tests/test_url.py::test_div_with_dots tests/test_url.py::test_with_path tests/test_url.py::test_with_path_encoded tests/test_url.py::test_with_path_dots tests/test_url.py::test_with_path_relative tests/test_url.py::test_with_path_query tests/test_url.py::test_with_path_fragment tests/test_url.py::test_with_path_empty tests/test_url.py::test_with_path_leading_slash tests/test_url.py::test_with_fragment tests/test_url.py::test_with_fragment_safe tests/test_url.py::test_with_fragment_non_ascii tests/test_url.py::test_with_fragment_None tests/test_url.py::test_with_fragment_bad_type tests/test_url.py::test_with_name tests/test_url.py::test_with_name_for_naked_path tests/test_url.py::test_with_name_for_relative_path tests/test_url.py::test_with_name_for_relative_path2 tests/test_url.py::test_with_name_for_relative_path_starting_from_slash tests/test_url.py::test_with_name_for_relative_path_starting_from_slash2 tests/test_url.py::test_with_name_empty tests/test_url.py::test_with_name_non_ascii tests/test_url.py::test_with_name_with_slash tests/test_url.py::test_with_name_non_str tests/test_url.py::test_with_name_within_colon_and_at tests/test_url.py::test_with_name_dot tests/test_url.py::test_with_name_double_dot tests/test_url.py::test_is_absolute_for_relative_url tests/test_url.py::test_is_absolute_for_absolute_url tests/test_url.py::test_is_non_absolute_for_empty_url tests/test_url.py::test_is_non_absolute_for_empty_url2 tests/test_url.py::test_is_absolute_path_starting_from_double_slash tests/test_url.py::test_is_default_port_for_relative_url tests/test_url.py::test_is_default_port_for_absolute_url_without_port tests/test_url.py::test_is_default_port_for_absolute_url_with_default_port tests/test_url.py::test_is_default_port_for_absolute_url_with_nondefault_port tests/test_url.py::test_is_default_port_for_unknown_scheme tests/test_url.py::test_no_scheme tests/test_url.py::test_no_scheme2 tests/test_url.py::test_from_non_allowed tests/test_url.py::test_from_idna tests/test_url.py::test_to_idna tests/test_url.py::test_from_ascii_login tests/test_url.py::test_from_non_ascii_login tests/test_url.py::test_from_ascii_login_and_password tests/test_url.py::test_from_non_ascii_login_and_password tests/test_url.py::test_from_ascii_path tests/test_url.py::test_from_ascii_path_lower_case tests/test_url.py::test_from_non_ascii_path tests/test_url.py::test_from_ascii_query_parts tests/test_url.py::test_from_non_ascii_query_parts tests/test_url.py::test_from_non_ascii_query_parts2 tests/test_url.py::test_from_ascii_fragment tests/test_url.py::test_from_bytes_with_non_ascii_fragment tests/test_url.py::test_to_str tests/test_url.py::test_to_str_long tests/test_url.py::test_decoding_with_2F_in_path tests/test_url.py::test_decoding_with_26_and_3D_in_query tests/test_url.py::test_fragment_only_url tests/test_url.py::test_url_from_url tests/test_url.py::test_lowercase_scheme tests/test_url.py::test_str_for_empty_url tests/test_url.py::test_parent_for_empty_url tests/test_url.py::test_empty_value_for_query tests/test_url.py::test_decode_pct_in_path tests/test_url.py::test_decode_pct_in_path_lower_case tests/test_url.py::test_join tests/test_url.py::test_join_absolute tests/test_url.py::test_join_non_url tests/test_url.py::test_join_from_rfc_3986_normal[g:h-g:h] tests/test_url.py::test_join_from_rfc_3986_normal[g-http://a/b/c/g] tests/test_url.py::test_join_from_rfc_3986_normal[./g-http://a/b/c/g] tests/test_url.py::test_join_from_rfc_3986_normal[g/-http://a/b/c/g/] tests/test_url.py::test_join_from_rfc_3986_normal[/g-http://a/g] tests/test_url.py::test_join_from_rfc_3986_normal[//g-http://g] tests/test_url.py::test_join_from_rfc_3986_normal[?y-http://a/b/c/d;p?y] tests/test_url.py::test_join_from_rfc_3986_normal[g?y-http://a/b/c/g?y] tests/test_url.py::test_join_from_rfc_3986_normal[#s-http://a/b/c/d;p?q#s] tests/test_url.py::test_join_from_rfc_3986_normal[g#s-http://a/b/c/g#s] tests/test_url.py::test_join_from_rfc_3986_normal[g?y#s-http://a/b/c/g?y#s] tests/test_url.py::test_join_from_rfc_3986_normal[;x-http://a/b/c/;x] tests/test_url.py::test_join_from_rfc_3986_normal[g;x-http://a/b/c/g;x] tests/test_url.py::test_join_from_rfc_3986_normal[g;x?y#s-http://a/b/c/g;x?y#s] tests/test_url.py::test_join_from_rfc_3986_normal[-http://a/b/c/d;p?q] tests/test_url.py::test_join_from_rfc_3986_normal[.-http://a/b/c/] tests/test_url.py::test_join_from_rfc_3986_normal[./-http://a/b/c/] tests/test_url.py::test_join_from_rfc_3986_normal[..-http://a/b/] tests/test_url.py::test_join_from_rfc_3986_normal[../-http://a/b/] tests/test_url.py::test_join_from_rfc_3986_normal[../g-http://a/b/g] tests/test_url.py::test_join_from_rfc_3986_normal[../..-http://a/] tests/test_url.py::test_join_from_rfc_3986_normal[../../-http://a/] tests/test_url.py::test_join_from_rfc_3986_normal[../../g-http://a/g] tests/test_url.py::test_join_from_rfc_3986_abnormal[../../../g-http://a/g] tests/test_url.py::test_join_from_rfc_3986_abnormal[../../../../g-http://a/g] tests/test_url.py::test_join_from_rfc_3986_abnormal[/./g-http://a/g] tests/test_url.py::test_join_from_rfc_3986_abnormal[/../g-http://a/g] tests/test_url.py::test_join_from_rfc_3986_abnormal[g.-http://a/b/c/g.] tests/test_url.py::test_join_from_rfc_3986_abnormal[.g-http://a/b/c/.g] tests/test_url.py::test_join_from_rfc_3986_abnormal[g..-http://a/b/c/g..] tests/test_url.py::test_join_from_rfc_3986_abnormal[..g-http://a/b/c/..g] tests/test_url.py::test_join_from_rfc_3986_abnormal[./../g-http://a/b/g] tests/test_url.py::test_join_from_rfc_3986_abnormal[./g/.-http://a/b/c/g/] tests/test_url.py::test_join_from_rfc_3986_abnormal[g/./h-http://a/b/c/g/h] tests/test_url.py::test_join_from_rfc_3986_abnormal[g/../h-http://a/b/c/h] tests/test_url.py::test_join_from_rfc_3986_abnormal[g;x=1/./y-http://a/b/c/g;x=1/y] tests/test_url.py::test_join_from_rfc_3986_abnormal[g;x=1/../y-http://a/b/c/y] tests/test_url.py::test_join_from_rfc_3986_abnormal[g?y/./x-http://a/b/c/g?y/./x] tests/test_url.py::test_join_from_rfc_3986_abnormal[g?y/../x-http://a/b/c/g?y/../x] tests/test_url.py::test_join_from_rfc_3986_abnormal[g#s/./x-http://a/b/c/g#s/./x] tests/test_url.py::test_join_from_rfc_3986_abnormal[g#s/../x-http://a/b/c/g#s/../x] tests/test_url.py::test_split_result_non_decoded tests/test_url.py::test_human_repr tests/test_url.py::test_human_repr_defaults tests/test_url.py::test_human_repr_default_port tests/test_url.py::test_relative tests/test_url.py::test_relative_is_relative tests/test_url.py::test_relative_abs_parts_are_removed tests/test_url.py::test_relative_fails_on_rel_url tests/test_url.py::test_slash_and_question_in_query tests/test_url.py::test_slash_and_question_in_fragment tests/test_url.py::test_requoting