diff --git a/.coveragerc b/.coveragerc
index 9a8d922..3c72498 100644
--- a/.coveragerc
+++ b/.coveragerc
@@ -1,2 +1,2 @@
 [run]
-omit = jsonrpc/_version.py
+omit = pyls_jsonrpc/_version.py
diff --git a/MANIFEST.in b/MANIFEST.in
index eccfe3c..5d2f193 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,3 +1,3 @@
 include README.rst
 include versioneer.py
-include jsonrpc/_version.py
+include pyls_jsonrpc/_version.py
diff --git a/examples/langserver.py b/examples/langserver.py
index b510839..45a04a5 100644
--- a/examples/langserver.py
+++ b/examples/langserver.py
@@ -3,7 +3,7 @@ import logging
 
 from tornado import web, ioloop, websocket
 
-from jsonrpc import dispatchers, endpoint
+from pyls_jsonrpc import dispatchers, endpoint
 
 log = logging.getLogger(__name__)
 
diff --git a/examples/langserver_ext.py b/examples/langserver_ext.py
index 5989e26..99ff073 100644
--- a/examples/langserver_ext.py
+++ b/examples/langserver_ext.py
@@ -5,7 +5,7 @@ import threading
 
 from tornado import ioloop, process, web, websocket
 
-from jsonrpc import streams
+from pyls_jsonrpc import streams
 
 log = logging.getLogger(__name__)
 
diff --git a/jsonrpc/__init__.py b/pyls_jsonrpc/__init__.py
similarity index 100%
rename from jsonrpc/__init__.py
rename to pyls_jsonrpc/__init__.py
diff --git a/jsonrpc/_version.py b/pyls_jsonrpc/_version.py
similarity index 99%
rename from jsonrpc/_version.py
rename to pyls_jsonrpc/_version.py
index 15cdffa..63c42a0 100644
--- a/jsonrpc/_version.py
+++ b/pyls_jsonrpc/_version.py
@@ -43,7 +43,7 @@ def get_config():
     cfg.style = "pep440"
     cfg.tag_prefix = ""
     cfg.parentdir_prefix = ""
-    cfg.versionfile_source = "jsonrpc/_version.py"
+    cfg.versionfile_source = "pyls_jsonrpc/_version.py"
     cfg.verbose = False
     return cfg
 
diff --git a/jsonrpc/dispatchers.py b/pyls_jsonrpc/dispatchers.py
similarity index 100%
rename from jsonrpc/dispatchers.py
rename to pyls_jsonrpc/dispatchers.py
diff --git a/jsonrpc/endpoint.py b/pyls_jsonrpc/endpoint.py
similarity index 100%
rename from jsonrpc/endpoint.py
rename to pyls_jsonrpc/endpoint.py
diff --git a/jsonrpc/exceptions.py b/pyls_jsonrpc/exceptions.py
similarity index 100%
rename from jsonrpc/exceptions.py
rename to pyls_jsonrpc/exceptions.py
diff --git a/jsonrpc/streams.py b/pyls_jsonrpc/streams.py
similarity index 100%
rename from jsonrpc/streams.py
rename to pyls_jsonrpc/streams.py
diff --git a/setup.cfg b/setup.cfg
index 4d7d168..1fe4912 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,7 +1,7 @@
 [versioneer]
 VCS = git
 style = pep440
-versionfile_source = jsonrpc/_version.py
-versionfile_build = jsonrpc/_version.py
+versionfile_source = pyls_jsonrpc/_version.py
+versionfile_build = pyls_jsonrpc/_version.py
 tag_prefix =
 parentdir_prefix =
diff --git a/tox.ini b/tox.ini
index 5110b7b..ec07144 100644
--- a/tox.ini
+++ b/tox.ini
@@ -15,7 +15,7 @@ exclude = test/plugins/.ropeproject,test/.ropeproject
 testpaths = test
 addopts =
     --cov-report html --cov-report term --junitxml=pytest.xml
-    --cov jsonrpc --cov test
+    --cov pyls_jsonrpc --cov test
 
 [testenv]
 commands =
@@ -34,6 +34,6 @@ deps =
     pyflakes
     pylint
 commands =
-    pylint jsonrpc test
-    pycodestyle jsonrpc test
-    pyflakes jsonrpc test
+    pylint pyls_jsonrpc test
+    pycodestyle pyls_jsonrpc test
+    pyflakes pyls_jsonrpc test

Module name conflict
This project uses the same module name `jsonrpc` as another older project. This causes conflicts when packaging it up for distributions, and possibly with pip. I recommend changing the module name to `jsonrpc-server` if possible.

https://github.com/pavlov99/json-rpc
https://github.com/palantir/python-jsonrpc-server
diff --git a/test/test_endpoint.py b/test/test_endpoint.py
index 97620ec..658da0c 100644
--- a/test/test_endpoint.py
+++ b/test/test_endpoint.py
@@ -4,8 +4,8 @@ import time
 import mock
 import pytest
 
-from jsonrpc import exceptions
-from jsonrpc.endpoint import Endpoint
+from pyls_jsonrpc import exceptions
+from pyls_jsonrpc.endpoint import Endpoint
 
 MSG_ID = 'id'
 
diff --git a/test/test_streams.py b/test/test_streams.py
index 6f0830e..dc3d79e 100644
--- a/test/test_streams.py
+++ b/test/test_streams.py
@@ -4,7 +4,7 @@ from io import BytesIO
 import mock
 import pytest
 
-from jsonrpc.streams import JsonRpcStreamReader, JsonRpcStreamWriter
+from pyls_jsonrpc.streams import JsonRpcStreamReader, JsonRpcStreamWriter
 
 
 @pytest.fixture()

pip install -e .[test]
parse_log_pytest
pytest
pytest pytest-cov coverage mock
3.9
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
cachetools==5.5.2
chardet==5.2.0
colorama==0.4.6
coverage==7.8.0
distlib==0.3.9
exceptiongroup @ file:///croot/exceptiongroup_1706031385326/work
filelock==3.18.0
future==1.0.0
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
mock==5.2.0
packaging @ file:///croot/packaging_1734472117206/work
platformdirs==4.3.7
pluggy @ file:///croot/pluggy_1733169602837/work
pyproject-api==1.9.0
pytest @ file:///croot/pytest_1738938843180/work
pytest-cov==6.0.0
-e git+https://github.com/palantir/python-jsonrpc-server.git@fa2e43e5fbda4568f2e28bbbba35abb521a3a94f#egg=python_jsonrpc_server
tomli==2.2.1
tox==4.25.0
typing_extensions==4.13.0
versioneer==0.29
virtualenv==20.29.3

name: python-jsonrpc-server
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
  - ca-certificates=2025.2.25=h06a4308_0
  - exceptiongroup=1.2.0=py39h06a4308_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - packaging=24.2=py39h06a4308_0
  - pip=25.0=py39h06a4308_0
  - pluggy=1.5.0=py39h06a4308_0
  - pytest=8.3.4=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - cachetools==5.5.2
      - chardet==5.2.0
      - colorama==0.4.6
      - coverage==7.8.0
      - distlib==0.3.9
      - filelock==3.18.0
      - future==1.0.0
      - mock==5.2.0
      - platformdirs==4.3.7
      - pyproject-api==1.9.0
      - pytest-cov==6.0.0
      - tomli==2.2.1
      - tox==4.25.0
      - typing-extensions==4.13.0
      - versioneer==0.29
      - virtualenv==20.29.3
prefix: /opt/conda/envs/python-jsonrpc-server

test/test_endpoint.py::test_bad_message test/test_endpoint.py::test_notify test/test_endpoint.py::test_notify_none_params test/test_endpoint.py::test_request test/test_endpoint.py::test_consume_notification test/test_endpoint.py::test_consume_notification_error test/test_endpoint.py::test_consume_notification_method_not_found test/test_endpoint.py::test_consume_async_notification_error test/test_endpoint.py::test_consume_request test/test_endpoint.py::test_consume_async_request test/test_endpoint.py::test_consume_async_request_error[ValueError-error0] test/test_endpoint.py::test_consume_async_request_error[KeyError-error1] test/test_endpoint.py::test_consume_async_request_error[JsonRpcMethodNotFound-error2] test/test_endpoint.py::test_consume_request_method_not_found test/test_endpoint.py::test_consume_request_error[ValueError-error0] test/test_endpoint.py::test_consume_request_error[KeyError-error1] test/test_endpoint.py::test_consume_request_error[JsonRpcMethodNotFound-error2] test/test_endpoint.py::test_consume_request_cancel test/test_endpoint.py::test_consume_request_cancel_unknown test/test_streams.py::test_reader test/test_streams.py::test_reader_bad_message test/test_streams.py::test_reader_bad_json test/test_streams.py::test_writer test/test_streams.py::test_writer_bad_message
test/test_endpoint.py::test_request_error test/test_endpoint.py::test_request_cancel
jsonrpc/streams.py jsonrpc/exceptions.py MANIFEST.in jsonrpc/_version.py jsonrpc/dispatchers.py examples/langserver.py jsonrpc/endpoint.py setup.cfg .coveragerc tox.ini jsonrpc/__init__.py examples/langserver_ext.py
pyls_jsonrpc/endpoint.py MANIFEST.in examples/langserver.py pyls_jsonrpc/exceptions.py pyls_jsonrpc/__init__.py pyls_jsonrpc/streams.py .coveragerc pyls_jsonrpc/dispatchers.py setup.cfg tox.ini pyls_jsonrpc/_version.py examples/langserver_ext.py