Repository: LudovicRousseau/pyscard (language: python)

Issue:
Use a `src/` layout
Hello @LudovicRousseau!

While working on expanding the test suite to test Python 3.8 and higher, I've bumped into a classic problem. When tox runs the test suite,

1. Tox builds the smartcard package and installs it in a subdirectory in `.tox/{environment}/`
2. Tox runs the test suite, using the repository root as the current working directory
3. Python looks in the current working directory first for imports and finds `smartcard` there
4. Imports immediately fail because `smartcard/scard/_scard.{cpython-version}.so` doesn't exist
5. The test suite run fails

This is a common problem in the Python community, and the common solution is to use a `src/` layout (examples: [pytest](https://github.com/pytest-dev/pytest/), [tox](https://github.com/tox-dev/tox)). Doing so prevents Python from finding the package in the repository root at step 3, above.

Mechanically, this change would look like:

```bash
mkdir src/
git mv smartcard/ src/
# edit some paths in setup.py, .gitignore, and elsewhere
git commit -am 'Use a `src/` layout'
```

I've tested and confirmed that this change resolves `ImportError` exceptions that prevent the test suite from running on freshly-cloned repositories when invoking `tox`.

Using a `src/` layout is the well-known solution to this well-known problem, but I wanted to ask if this is acceptable to you before submitting a PR for this.


Discussion / hints:
Yes, I know this issue.
I also think using `src/` is the correct solution.
I'll submit as small a PR as I can to address this.

Fix patch:
diff --git a/.gitignore b/.gitignore
index 1d4d69d2..0b295903 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,8 +18,8 @@ htmlcov/
 .coverage.*
 
 # Generated by SWIG
-smartcard/scard/scard.py
-smartcard/scard/scard_wrap.c
+src/smartcard/scard/scard.py
+src/smartcard/scard/scard_wrap.c
 
 # Generated by test suite
 local_config.py
diff --git a/ChangeLog b/ChangeLog
index 3da74210..ed81f03b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,7 @@
 Unreleased changes
 ==================
    * Remove Python 2 conditional code
+   * Migrate a `src/` layout.
 
 2.1.1 (September 2024)
 ======================
diff --git a/INSTALL.md b/INSTALL.md
index 290abbc2..28d92eb2 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -36,8 +36,8 @@ python framework with objects wrapping PCSC API.
 
 Documentation
 -------------
-All documentation is provided in the `smartcard/doc` directory of the
-source distribution.  Examples are provided in the `smartcard/Examples`
+All documentation is provided in the `src/smartcard/doc` directory of the
+source distribution.  Examples are provided in the `src/smartcard/Examples`
 directory of the source distribution.  The binary distribution does not
 include any documentation, tests scripts or examples.
 
@@ -118,11 +118,11 @@ your python distribution, e.g.
 
 Developer documentation, unit tests and examples
 ------------------------------------------------
-The developer documentation is in the `smartcard/doc/` directory of the
+The developer documentation is in the `src/smartcard/doc/` directory of the
 source distribution.
 
-Examples are located in the `smartcard/Examples/` directory, and the pyunit
-unit tests in the `smartcard/test/` directory.
+Examples are located in the `src/smartcard/Examples/` directory, and the pyunit
+unit tests in the `src/smartcard/test/` directory.
 
 Build instructions for packagers
 --------------------------------
diff --git a/MANIFEST.in b/MANIFEST.in
index f746acff..086f31fd 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -6,24 +6,24 @@ include MANIFEST.in
 include Makefile
 include README.md
 include TODO
-include smartcard/scard/PcscDefs.i
-include smartcard/scard/PcscTypemaps.i
-include smartcard/scard/gemalto.ver
-include smartcard/scard/helpers.c
-include smartcard/scard/helpers.h
-include smartcard/scard/memlog.h
-include smartcard/scard/pcsctypes.h
-include smartcard/scard/pyscard-reader.h
-include smartcard/scard/scard.def
-include smartcard/scard/scard.i
-include smartcard/scard/scard.rc
-include smartcard/scard/winscarddll.c
-include smartcard/scard/winscarddll.h
-include smartcard/test/configcheck.py
-recursive-include smartcard/Examples *.py *.ico
-recursive-include smartcard/doc *.html *.jpg *.css *.js *.png *.txt
-recursive-include smartcard/test/framework *.txt *.py
-recursive-include smartcard/test/frameworkpcsc *.txt *.py
-recursive-include smartcard/test/scard *.txt *.py
-recursive-include smartcard/wx *.ico
+include src/smartcard/scard/PcscDefs.i
+include src/smartcard/scard/PcscTypemaps.i
+include src/smartcard/scard/gemalto.ver
+include src/smartcard/scard/helpers.c
+include src/smartcard/scard/helpers.h
+include src/smartcard/scard/memlog.h
+include src/smartcard/scard/pcsctypes.h
+include src/smartcard/scard/pyscard-reader.h
+include src/smartcard/scard/scard.def
+include src/smartcard/scard/scard.i
+include src/smartcard/scard/scard.rc
+include src/smartcard/scard/winscarddll.c
+include src/smartcard/scard/winscarddll.h
+include src/smartcard/test/configcheck.py
+recursive-include src/smartcard/Examples *.py *.ico
+recursive-include src/smartcard/doc *.html *.jpg *.css *.js *.png *.txt
+recursive-include src/smartcard/test/framework *.txt *.py
+recursive-include src/smartcard/test/frameworkpcsc *.txt *.py
+recursive-include src/smartcard/test/scard *.txt *.py
+recursive-include src/smartcard/wx *.ico
 include test/*.py
diff --git a/Makefile b/Makefile
index f8e18ba6..df0db41f 100644
--- a/Makefile
+++ b/Makefile
@@ -10,16 +10,16 @@ install: clean
 clean:
 	$(PYTHON) setup.py clean
 	rm -rf build
-	rm -f smartcard/scard/_scard*.so
+	rm -f src/smartcard/scard/_scard*.so
 
 pypi: clean
 	# files generated by swig
-	rm -f smartcard/scard/scard.py
-	rm -f smartcard/scard/scard_wrap.c
+	rm -f src/smartcard/scard/scard.py
+	rm -f src/smartcard/scard/scard_wrap.c
 	# files generated by sphinx
-	rm -rf smartcard/doc/_build
+	rm -rf src/smartcard/doc/_build
 	# files generated by pydoctor
-	rm -rf smartcard/doc/html
+	rm -rf src/smartcard/doc/html
 	rm -rf dist
 	$(PYTHON) -m build
 	python3 -m twine upload dist/*
diff --git a/setup.py b/setup.py
index 28455f55..e9cb3d58 100644
--- a/setup.py
+++ b/setup.py
@@ -45,7 +45,7 @@
     platform__cc_defines = [('WIN32', '100')]
     platform_swig_opts = ['-DWIN32']
     if 'mingw' not in get_platform():
-        platform_sources = ['smartcard/scard/scard.rc']
+        platform_sources = ['src/smartcard/scard/scard.rc']
     platform_libraries = ['winscard']
 
 elif platform.system() == 'Darwin':
@@ -98,7 +98,7 @@ def run(self):
                    "smartcard.util",
                    "smartcard.wx",
                    ],
-      'package_dir': {"": "."},
+      'package_dir': {"": "src"},
       'package_data': {
                          "smartcard.wx": ["resources/*.ico"],
                        },
@@ -110,17 +110,17 @@ def run(self):
                                     ('VER_PRODUCTVERSION', VERSION_ALT),
                                     ('VER_PRODUCTVERSION_STR', VERSION_STR)] \
                       + platform__cc_defines,
-                      include_dirs=['smartcard/scard/'] \
+                      include_dirs=['src/smartcard/scard/'] \
                       + platform_include_dirs,
-                      sources=["smartcard/scard/helpers.c",
-                               "smartcard/scard/winscarddll.c",
-                               "smartcard/scard/scard.i"] \
+                      sources=["src/smartcard/scard/helpers.c",
+                               "src/smartcard/scard/winscarddll.c",
+                               "src/smartcard/scard/scard.i"] \
                                        + platform_sources,
                       libraries=platform_libraries,
                       extra_compile_args=platform_extra_compile_args,
                       extra_link_args=platform_extra_link_args,
                       swig_opts=['-outdir',
-                                 'smartcard/scard'] \
+                                 'src/smartcard/scard'] \
                       + platform_swig_opts)],
       'extras_require': {
             'Gui': ['wxPython'],
diff --git a/smartcard/ATR.py b/src/smartcard/ATR.py
similarity index 100%
rename from smartcard/ATR.py
rename to src/smartcard/ATR.py
diff --git a/smartcard/AbstractCardRequest.py b/src/smartcard/AbstractCardRequest.py
similarity index 100%
rename from smartcard/AbstractCardRequest.py
rename to src/smartcard/AbstractCardRequest.py
diff --git a/smartcard/Card.py b/src/smartcard/Card.py
similarity index 100%
rename from smartcard/Card.py
rename to src/smartcard/Card.py
diff --git a/smartcard/CardConnection.py b/src/smartcard/CardConnection.py
similarity index 100%
rename from smartcard/CardConnection.py
rename to src/smartcard/CardConnection.py
diff --git a/smartcard/CardConnectionDecorator.py b/src/smartcard/CardConnectionDecorator.py
similarity index 100%
rename from smartcard/CardConnectionDecorator.py
rename to src/smartcard/CardConnectionDecorator.py
diff --git a/smartcard/CardConnectionEvent.py b/src/smartcard/CardConnectionEvent.py
similarity index 100%
rename from smartcard/CardConnectionEvent.py
rename to src/smartcard/CardConnectionEvent.py
diff --git a/smartcard/CardConnectionObserver.py b/src/smartcard/CardConnectionObserver.py
similarity index 100%
rename from smartcard/CardConnectionObserver.py
rename to src/smartcard/CardConnectionObserver.py
diff --git a/smartcard/CardMonitoring.py b/src/smartcard/CardMonitoring.py
similarity index 100%
rename from smartcard/CardMonitoring.py
rename to src/smartcard/CardMonitoring.py
diff --git a/smartcard/CardNames.py b/src/smartcard/CardNames.py
similarity index 100%
rename from smartcard/CardNames.py
rename to src/smartcard/CardNames.py
diff --git a/smartcard/CardRequest.py b/src/smartcard/CardRequest.py
similarity index 100%
rename from smartcard/CardRequest.py
rename to src/smartcard/CardRequest.py
diff --git a/smartcard/CardService.py b/src/smartcard/CardService.py
similarity index 100%
rename from smartcard/CardService.py
rename to src/smartcard/CardService.py
diff --git a/smartcard/CardType.py b/src/smartcard/CardType.py
similarity index 100%
rename from smartcard/CardType.py
rename to src/smartcard/CardType.py
diff --git a/smartcard/ClassLoader.py b/src/smartcard/ClassLoader.py
similarity index 100%
rename from smartcard/ClassLoader.py
rename to src/smartcard/ClassLoader.py
diff --git a/smartcard/Examples/framework/sample_ATR.py b/src/smartcard/Examples/framework/sample_ATR.py
similarity index 100%
rename from smartcard/Examples/framework/sample_ATR.py
rename to src/smartcard/Examples/framework/sample_ATR.py
diff --git a/smartcard/Examples/framework/sample_CardConnectionDecorator.py b/src/smartcard/Examples/framework/sample_CardConnectionDecorator.py
similarity index 100%
rename from smartcard/Examples/framework/sample_CardConnectionDecorator.py
rename to src/smartcard/Examples/framework/sample_CardConnectionDecorator.py
diff --git a/smartcard/Examples/framework/sample_ConsoleConnectionTracer.py b/src/smartcard/Examples/framework/sample_ConsoleConnectionTracer.py
similarity index 100%
rename from smartcard/Examples/framework/sample_ConsoleConnectionTracer.py
rename to src/smartcard/Examples/framework/sample_ConsoleConnectionTracer.py
diff --git a/smartcard/Examples/framework/sample_CustomCardType.py b/src/smartcard/Examples/framework/sample_CustomCardType.py
similarity index 100%
rename from smartcard/Examples/framework/sample_CustomCardType.py
rename to src/smartcard/Examples/framework/sample_CustomCardType.py
diff --git a/smartcard/Examples/framework/sample_CustomErrorChecker.py b/src/smartcard/Examples/framework/sample_CustomErrorChecker.py
similarity index 100%
rename from smartcard/Examples/framework/sample_CustomErrorChecker.py
rename to src/smartcard/Examples/framework/sample_CustomErrorChecker.py
diff --git a/smartcard/Examples/framework/sample_ErrorChecking.py b/src/smartcard/Examples/framework/sample_ErrorChecking.py
similarity index 100%
rename from smartcard/Examples/framework/sample_ErrorChecking.py
rename to src/smartcard/Examples/framework/sample_ErrorChecking.py
diff --git a/smartcard/Examples/framework/sample_ExclusiveCardConnection.py b/src/smartcard/Examples/framework/sample_ExclusiveCardConnection.py
similarity index 100%
rename from smartcard/Examples/framework/sample_ExclusiveCardConnection.py
rename to src/smartcard/Examples/framework/sample_ExclusiveCardConnection.py
diff --git a/smartcard/Examples/framework/sample_MonitorCards.py b/src/smartcard/Examples/framework/sample_MonitorCards.py
similarity index 100%
rename from smartcard/Examples/framework/sample_MonitorCards.py
rename to src/smartcard/Examples/framework/sample_MonitorCards.py
diff --git a/smartcard/Examples/framework/sample_MonitorCardsAndTransmit.py b/src/smartcard/Examples/framework/sample_MonitorCardsAndTransmit.py
similarity index 100%
rename from smartcard/Examples/framework/sample_MonitorCardsAndTransmit.py
rename to src/smartcard/Examples/framework/sample_MonitorCardsAndTransmit.py
diff --git a/smartcard/Examples/framework/sample_MonitorReaders.py b/src/smartcard/Examples/framework/sample_MonitorReaders.py
similarity index 100%
rename from smartcard/Examples/framework/sample_MonitorReaders.py
rename to src/smartcard/Examples/framework/sample_MonitorReaders.py
diff --git a/smartcard/Examples/framework/sample_TransmitCardObserver.py b/src/smartcard/Examples/framework/sample_TransmitCardObserver.py
similarity index 100%
rename from smartcard/Examples/framework/sample_TransmitCardObserver.py
rename to src/smartcard/Examples/framework/sample_TransmitCardObserver.py
diff --git a/smartcard/Examples/framework/sample_apduTracerInterpreter.py b/src/smartcard/Examples/framework/sample_apduTracerInterpreter.py
similarity index 100%
rename from smartcard/Examples/framework/sample_apduTracerInterpreter.py
rename to src/smartcard/Examples/framework/sample_apduTracerInterpreter.py
diff --git a/smartcard/Examples/framework/sample_toHexString.py b/src/smartcard/Examples/framework/sample_toHexString.py
similarity index 100%
rename from smartcard/Examples/framework/sample_toHexString.py
rename to src/smartcard/Examples/framework/sample_toHexString.py
diff --git a/smartcard/Examples/scard-api/sample_control.py b/src/smartcard/Examples/scard-api/sample_control.py
similarity index 100%
rename from smartcard/Examples/scard-api/sample_control.py
rename to src/smartcard/Examples/scard-api/sample_control.py
diff --git a/smartcard/Examples/scard-api/sample_getATR.py b/src/smartcard/Examples/scard-api/sample_getATR.py
similarity index 100%
rename from smartcard/Examples/scard-api/sample_getATR.py
rename to src/smartcard/Examples/scard-api/sample_getATR.py
diff --git a/smartcard/Examples/scard-api/sample_getAttrib.py b/src/smartcard/Examples/scard-api/sample_getAttrib.py
similarity index 100%
rename from smartcard/Examples/scard-api/sample_getAttrib.py
rename to src/smartcard/Examples/scard-api/sample_getAttrib.py
diff --git a/smartcard/Examples/scard-api/sample_getStatusChange.py b/src/smartcard/Examples/scard-api/sample_getStatusChange.py
similarity index 100%
rename from smartcard/Examples/scard-api/sample_getStatusChange.py
rename to src/smartcard/Examples/scard-api/sample_getStatusChange.py
diff --git a/smartcard/Examples/scard-api/sample_listCards.py b/src/smartcard/Examples/scard-api/sample_listCards.py
similarity index 100%
rename from smartcard/Examples/scard-api/sample_listCards.py
rename to src/smartcard/Examples/scard-api/sample_listCards.py
diff --git a/smartcard/Examples/scard-api/sample_listInterfaces.py b/src/smartcard/Examples/scard-api/sample_listInterfaces.py
similarity index 100%
rename from smartcard/Examples/scard-api/sample_listInterfaces.py
rename to src/smartcard/Examples/scard-api/sample_listInterfaces.py
diff --git a/smartcard/Examples/scard-api/sample_locateCards.py b/src/smartcard/Examples/scard-api/sample_locateCards.py
similarity index 100%
rename from smartcard/Examples/scard-api/sample_locateCards.py
rename to src/smartcard/Examples/scard-api/sample_locateCards.py
diff --git a/smartcard/Examples/scard-api/sample_pinpad.py b/src/smartcard/Examples/scard-api/sample_pinpad.py
similarity index 100%
rename from smartcard/Examples/scard-api/sample_pinpad.py
rename to src/smartcard/Examples/scard-api/sample_pinpad.py
diff --git a/smartcard/Examples/scard-api/sample_readerGroups.py b/src/smartcard/Examples/scard-api/sample_readerGroups.py
similarity index 100%
rename from smartcard/Examples/scard-api/sample_readerGroups.py
rename to src/smartcard/Examples/scard-api/sample_readerGroups.py
diff --git a/smartcard/Examples/scard-api/sample_readers.py b/src/smartcard/Examples/scard-api/sample_readers.py
similarity index 100%
rename from smartcard/Examples/scard-api/sample_readers.py
rename to src/smartcard/Examples/scard-api/sample_readers.py
diff --git a/smartcard/Examples/scard-api/sample_selectDFTelecom.py b/src/smartcard/Examples/scard-api/sample_selectDFTelecom.py
similarity index 100%
rename from smartcard/Examples/scard-api/sample_selectDFTelecom.py
rename to src/smartcard/Examples/scard-api/sample_selectDFTelecom.py
diff --git a/smartcard/Examples/scard-api/sample_transaction.py b/src/smartcard/Examples/scard-api/sample_transaction.py
similarity index 100%
rename from smartcard/Examples/scard-api/sample_transaction.py
rename to src/smartcard/Examples/scard-api/sample_transaction.py
diff --git a/smartcard/Examples/simple/getATR.py b/src/smartcard/Examples/simple/getATR.py
similarity index 100%
rename from smartcard/Examples/simple/getATR.py
rename to src/smartcard/Examples/simple/getATR.py
diff --git a/smartcard/Examples/simple/getATR_context.py b/src/smartcard/Examples/simple/getATR_context.py
similarity index 100%
rename from smartcard/Examples/simple/getATR_context.py
rename to src/smartcard/Examples/simple/getATR_context.py
diff --git a/smartcard/Examples/simple/selectDF_TELECOM.py b/src/smartcard/Examples/simple/selectDF_TELECOM.py
similarity index 100%
rename from smartcard/Examples/simple/selectDF_TELECOM.py
rename to src/smartcard/Examples/simple/selectDF_TELECOM.py
diff --git a/smartcard/Examples/simple/simpleAPDU.py b/src/smartcard/Examples/simple/simpleAPDU.py
similarity index 100%
rename from smartcard/Examples/simple/simpleAPDU.py
rename to src/smartcard/Examples/simple/simpleAPDU.py
diff --git a/smartcard/Examples/wx/apdumanager/SampleAPDUManagerPanel.py b/src/smartcard/Examples/wx/apdumanager/SampleAPDUManagerPanel.py
similarity index 100%
rename from smartcard/Examples/wx/apdumanager/SampleAPDUManagerPanel.py
rename to src/smartcard/Examples/wx/apdumanager/SampleAPDUManagerPanel.py
diff --git a/smartcard/Examples/wx/apdumanager/apdumanager.py b/src/smartcard/Examples/wx/apdumanager/apdumanager.py
similarity index 100%
rename from smartcard/Examples/wx/apdumanager/apdumanager.py
rename to src/smartcard/Examples/wx/apdumanager/apdumanager.py
diff --git a/smartcard/Examples/wx/apdumanager/images/mysmartcard.ico b/src/smartcard/Examples/wx/apdumanager/images/mysmartcard.ico
similarity index 100%
rename from smartcard/Examples/wx/apdumanager/images/mysmartcard.ico
rename to src/smartcard/Examples/wx/apdumanager/images/mysmartcard.ico
diff --git a/smartcard/Examples/wx/apdumanager/setup.py b/src/smartcard/Examples/wx/apdumanager/setup.py
similarity index 100%
rename from smartcard/Examples/wx/apdumanager/setup.py
rename to src/smartcard/Examples/wx/apdumanager/setup.py
diff --git a/smartcard/Examples/wx/cardmonitor/cardmonitor.py b/src/smartcard/Examples/wx/cardmonitor/cardmonitor.py
similarity index 100%
rename from smartcard/Examples/wx/cardmonitor/cardmonitor.py
rename to src/smartcard/Examples/wx/cardmonitor/cardmonitor.py
diff --git a/smartcard/Examples/wx/cardmonitor/images/mysmartcard.ico b/src/smartcard/Examples/wx/cardmonitor/images/mysmartcard.ico
similarity index 100%
rename from smartcard/Examples/wx/cardmonitor/images/mysmartcard.ico
rename to src/smartcard/Examples/wx/cardmonitor/images/mysmartcard.ico
diff --git a/smartcard/Examples/wx/cardmonitor/setup.py b/src/smartcard/Examples/wx/cardmonitor/setup.py
similarity index 100%
rename from smartcard/Examples/wx/cardmonitor/setup.py
rename to src/smartcard/Examples/wx/cardmonitor/setup.py
diff --git a/smartcard/Examples/wx/pcscdiag/pcscdiag.py b/src/smartcard/Examples/wx/pcscdiag/pcscdiag.py
similarity index 100%
rename from smartcard/Examples/wx/pcscdiag/pcscdiag.py
rename to src/smartcard/Examples/wx/pcscdiag/pcscdiag.py
diff --git a/smartcard/Examples/wx/readerviewer/images/readerviewer.ico b/src/smartcard/Examples/wx/readerviewer/images/readerviewer.ico
similarity index 100%
rename from smartcard/Examples/wx/readerviewer/images/readerviewer.ico
rename to src/smartcard/Examples/wx/readerviewer/images/readerviewer.ico
diff --git a/smartcard/Examples/wx/readerviewer/readerviewer.py b/src/smartcard/Examples/wx/readerviewer/readerviewer.py
similarity index 100%
rename from smartcard/Examples/wx/readerviewer/readerviewer.py
rename to src/smartcard/Examples/wx/readerviewer/readerviewer.py
diff --git a/smartcard/Examples/wx/readerviewer/setup.py b/src/smartcard/Examples/wx/readerviewer/setup.py
similarity index 100%
rename from smartcard/Examples/wx/readerviewer/setup.py
rename to src/smartcard/Examples/wx/readerviewer/setup.py
diff --git a/smartcard/Exceptions.py b/src/smartcard/Exceptions.py
similarity index 100%
rename from smartcard/Exceptions.py
rename to src/smartcard/Exceptions.py
diff --git a/smartcard/ExclusiveConnectCardConnection.py b/src/smartcard/ExclusiveConnectCardConnection.py
similarity index 100%
rename from smartcard/ExclusiveConnectCardConnection.py
rename to src/smartcard/ExclusiveConnectCardConnection.py
diff --git a/smartcard/ExclusiveTransmitCardConnection.py b/src/smartcard/ExclusiveTransmitCardConnection.py
similarity index 100%
rename from smartcard/ExclusiveTransmitCardConnection.py
rename to src/smartcard/ExclusiveTransmitCardConnection.py
diff --git a/smartcard/Observer.py b/src/smartcard/Observer.py
similarity index 100%
rename from smartcard/Observer.py
rename to src/smartcard/Observer.py
diff --git a/smartcard/PassThruCardService.py b/src/smartcard/PassThruCardService.py
similarity index 100%
rename from smartcard/PassThruCardService.py
rename to src/smartcard/PassThruCardService.py
diff --git a/smartcard/ReaderMonitoring.py b/src/smartcard/ReaderMonitoring.py
similarity index 100%
rename from smartcard/ReaderMonitoring.py
rename to src/smartcard/ReaderMonitoring.py
diff --git a/smartcard/Session.py b/src/smartcard/Session.py
similarity index 100%
rename from smartcard/Session.py
rename to src/smartcard/Session.py
diff --git a/smartcard/Synchronization.py b/src/smartcard/Synchronization.py
similarity index 100%
rename from smartcard/Synchronization.py
rename to src/smartcard/Synchronization.py
diff --git a/smartcard/System.py b/src/smartcard/System.py
similarity index 100%
rename from smartcard/System.py
rename to src/smartcard/System.py
diff --git a/smartcard/__init__.py b/src/smartcard/__init__.py
similarity index 100%
rename from smartcard/__init__.py
rename to src/smartcard/__init__.py
diff --git a/smartcard/doc/Makefile b/src/smartcard/doc/Makefile
similarity index 100%
rename from smartcard/doc/Makefile
rename to src/smartcard/doc/Makefile
diff --git a/smartcard/doc/conf.py b/src/smartcard/doc/conf.py
similarity index 100%
rename from smartcard/doc/conf.py
rename to src/smartcard/doc/conf.py
diff --git a/smartcard/doc/generate.sh b/src/smartcard/doc/generate.sh
similarity index 100%
rename from smartcard/doc/generate.sh
rename to src/smartcard/doc/generate.sh
diff --git a/smartcard/doc/images/pyscard.jpg b/src/smartcard/doc/images/pyscard.jpg
similarity index 100%
rename from smartcard/doc/images/pyscard.jpg
rename to src/smartcard/doc/images/pyscard.jpg
diff --git a/smartcard/doc/images/sflogo.php.png b/src/smartcard/doc/images/sflogo.php.png
similarity index 100%
rename from smartcard/doc/images/sflogo.php.png
rename to src/smartcard/doc/images/sflogo.php.png
diff --git a/smartcard/doc/index.rst b/src/smartcard/doc/index.rst
similarity index 100%
rename from smartcard/doc/index.rst
rename to src/smartcard/doc/index.rst
diff --git a/smartcard/doc/license.rst b/src/smartcard/doc/license.rst
similarity index 100%
rename from smartcard/doc/license.rst
rename to src/smartcard/doc/license.rst
diff --git a/smartcard/doc/pyscard-framework.rst b/src/smartcard/doc/pyscard-framework.rst
similarity index 100%
rename from smartcard/doc/pyscard-framework.rst
rename to src/smartcard/doc/pyscard-framework.rst
diff --git a/smartcard/doc/pyscard-wrapper.rst b/src/smartcard/doc/pyscard-wrapper.rst
similarity index 100%
rename from smartcard/doc/pyscard-wrapper.rst
rename to src/smartcard/doc/pyscard-wrapper.rst
diff --git a/smartcard/doc/sync.sh b/src/smartcard/doc/sync.sh
similarity index 100%
rename from smartcard/doc/sync.sh
rename to src/smartcard/doc/sync.sh
diff --git a/smartcard/doc/user-guide.rst b/src/smartcard/doc/user-guide.rst
similarity index 100%
rename from smartcard/doc/user-guide.rst
rename to src/smartcard/doc/user-guide.rst
diff --git a/smartcard/guid.py b/src/smartcard/guid.py
similarity index 100%
rename from smartcard/guid.py
rename to src/smartcard/guid.py
diff --git a/smartcard/pcsc/PCSCCardConnection.py b/src/smartcard/pcsc/PCSCCardConnection.py
similarity index 100%
rename from smartcard/pcsc/PCSCCardConnection.py
rename to src/smartcard/pcsc/PCSCCardConnection.py
diff --git a/smartcard/pcsc/PCSCCardRequest.py b/src/smartcard/pcsc/PCSCCardRequest.py
similarity index 100%
rename from smartcard/pcsc/PCSCCardRequest.py
rename to src/smartcard/pcsc/PCSCCardRequest.py
diff --git a/smartcard/pcsc/PCSCContext.py b/src/smartcard/pcsc/PCSCContext.py
similarity index 100%
rename from smartcard/pcsc/PCSCContext.py
rename to src/smartcard/pcsc/PCSCContext.py
diff --git a/smartcard/pcsc/PCSCExceptions.py b/src/smartcard/pcsc/PCSCExceptions.py
similarity index 100%
rename from smartcard/pcsc/PCSCExceptions.py
rename to src/smartcard/pcsc/PCSCExceptions.py
diff --git a/smartcard/pcsc/PCSCPart10.py b/src/smartcard/pcsc/PCSCPart10.py
similarity index 100%
rename from smartcard/pcsc/PCSCPart10.py
rename to src/smartcard/pcsc/PCSCPart10.py
diff --git a/smartcard/pcsc/PCSCReader.py b/src/smartcard/pcsc/PCSCReader.py
similarity index 100%
rename from smartcard/pcsc/PCSCReader.py
rename to src/smartcard/pcsc/PCSCReader.py
diff --git a/smartcard/pcsc/PCSCReaderGroups.py b/src/smartcard/pcsc/PCSCReaderGroups.py
similarity index 100%
rename from smartcard/pcsc/PCSCReaderGroups.py
rename to src/smartcard/pcsc/PCSCReaderGroups.py
diff --git a/smartcard/pcsc/__init__.py b/src/smartcard/pcsc/__init__.py
similarity index 100%
rename from smartcard/pcsc/__init__.py
rename to src/smartcard/pcsc/__init__.py
diff --git a/smartcard/pyro/PyroReader.py b/src/smartcard/pyro/PyroReader.py
similarity index 100%
rename from smartcard/pyro/PyroReader.py
rename to src/smartcard/pyro/PyroReader.py
diff --git a/smartcard/pyro/__init__.py b/src/smartcard/pyro/__init__.py
similarity index 100%
rename from smartcard/pyro/__init__.py
rename to src/smartcard/pyro/__init__.py
diff --git a/smartcard/pyro/server/PyroDaemon.py b/src/smartcard/pyro/server/PyroDaemon.py
similarity index 100%
rename from smartcard/pyro/server/PyroDaemon.py
rename to src/smartcard/pyro/server/PyroDaemon.py
diff --git a/smartcard/pyro/server/PyroEventServer.py b/src/smartcard/pyro/server/PyroEventServer.py
similarity index 100%
rename from smartcard/pyro/server/PyroEventServer.py
rename to src/smartcard/pyro/server/PyroEventServer.py
diff --git a/smartcard/pyro/server/PyroNameServer.py b/src/smartcard/pyro/server/PyroNameServer.py
similarity index 100%
rename from smartcard/pyro/server/PyroNameServer.py
rename to src/smartcard/pyro/server/PyroNameServer.py
diff --git a/smartcard/pyro/server/RemoteCardConnection.py b/src/smartcard/pyro/server/RemoteCardConnection.py
similarity index 100%
rename from smartcard/pyro/server/RemoteCardConnection.py
rename to src/smartcard/pyro/server/RemoteCardConnection.py
diff --git a/smartcard/pyro/server/RemoteReaderServer.py b/src/smartcard/pyro/server/RemoteReaderServer.py
similarity index 100%
rename from smartcard/pyro/server/RemoteReaderServer.py
rename to src/smartcard/pyro/server/RemoteReaderServer.py
diff --git a/smartcard/pyro/server/__init__.py b/src/smartcard/pyro/server/__init__.py
similarity index 100%
rename from smartcard/pyro/server/__init__.py
rename to src/smartcard/pyro/server/__init__.py
diff --git a/smartcard/reader/Reader.py b/src/smartcard/reader/Reader.py
similarity index 100%
rename from smartcard/reader/Reader.py
rename to src/smartcard/reader/Reader.py
diff --git a/smartcard/reader/ReaderFactory.py b/src/smartcard/reader/ReaderFactory.py
similarity index 100%
rename from smartcard/reader/ReaderFactory.py
rename to src/smartcard/reader/ReaderFactory.py
diff --git a/smartcard/reader/ReaderGroups.py b/src/smartcard/reader/ReaderGroups.py
similarity index 100%
rename from smartcard/reader/ReaderGroups.py
rename to src/smartcard/reader/ReaderGroups.py
diff --git a/smartcard/reader/__init__.py b/src/smartcard/reader/__init__.py
similarity index 100%
rename from smartcard/reader/__init__.py
rename to src/smartcard/reader/__init__.py
diff --git a/smartcard/scard/PcscDefs.i b/src/smartcard/scard/PcscDefs.i
similarity index 100%
rename from smartcard/scard/PcscDefs.i
rename to src/smartcard/scard/PcscDefs.i
diff --git a/smartcard/scard/PcscTypemaps.i b/src/smartcard/scard/PcscTypemaps.i
similarity index 100%
rename from smartcard/scard/PcscTypemaps.i
rename to src/smartcard/scard/PcscTypemaps.i
diff --git a/smartcard/scard/__init__.py b/src/smartcard/scard/__init__.py
similarity index 100%
rename from smartcard/scard/__init__.py
rename to src/smartcard/scard/__init__.py
diff --git a/smartcard/scard/gemalto.ver b/src/smartcard/scard/gemalto.ver
similarity index 100%
rename from smartcard/scard/gemalto.ver
rename to src/smartcard/scard/gemalto.ver
diff --git a/smartcard/scard/helpers.c b/src/smartcard/scard/helpers.c
similarity index 100%
rename from smartcard/scard/helpers.c
rename to src/smartcard/scard/helpers.c
diff --git a/smartcard/scard/helpers.h b/src/smartcard/scard/helpers.h
similarity index 100%
rename from smartcard/scard/helpers.h
rename to src/smartcard/scard/helpers.h
diff --git a/smartcard/scard/makefile b/src/smartcard/scard/makefile
similarity index 100%
rename from smartcard/scard/makefile
rename to src/smartcard/scard/makefile
diff --git a/smartcard/scard/memlog.h b/src/smartcard/scard/memlog.h
similarity index 100%
rename from smartcard/scard/memlog.h
rename to src/smartcard/scard/memlog.h
diff --git a/smartcard/scard/pcsctypes.h b/src/smartcard/scard/pcsctypes.h
similarity index 100%
rename from smartcard/scard/pcsctypes.h
rename to src/smartcard/scard/pcsctypes.h
diff --git a/smartcard/scard/pyscard-reader.h b/src/smartcard/scard/pyscard-reader.h
similarity index 100%
rename from smartcard/scard/pyscard-reader.h
rename to src/smartcard/scard/pyscard-reader.h
diff --git a/smartcard/scard/scard.def b/src/smartcard/scard/scard.def
similarity index 100%
rename from smartcard/scard/scard.def
rename to src/smartcard/scard/scard.def
diff --git a/smartcard/scard/scard.i b/src/smartcard/scard/scard.i
similarity index 100%
rename from smartcard/scard/scard.i
rename to src/smartcard/scard/scard.i
diff --git a/smartcard/scard/scard.rc b/src/smartcard/scard/scard.rc
similarity index 100%
rename from smartcard/scard/scard.rc
rename to src/smartcard/scard/scard.rc
diff --git a/smartcard/scard/winscarddll.c b/src/smartcard/scard/winscarddll.c
similarity index 100%
rename from smartcard/scard/winscarddll.c
rename to src/smartcard/scard/winscarddll.c
diff --git a/smartcard/scard/winscarddll.h b/src/smartcard/scard/winscarddll.h
similarity index 100%
rename from smartcard/scard/winscarddll.h
rename to src/smartcard/scard/winscarddll.h
diff --git a/smartcard/sw/ErrorChecker.py b/src/smartcard/sw/ErrorChecker.py
similarity index 100%
rename from smartcard/sw/ErrorChecker.py
rename to src/smartcard/sw/ErrorChecker.py
diff --git a/smartcard/sw/ErrorCheckingChain.py b/src/smartcard/sw/ErrorCheckingChain.py
similarity index 100%
rename from smartcard/sw/ErrorCheckingChain.py
rename to src/smartcard/sw/ErrorCheckingChain.py
diff --git a/smartcard/sw/ISO7816_4ErrorChecker.py b/src/smartcard/sw/ISO7816_4ErrorChecker.py
similarity index 100%
rename from smartcard/sw/ISO7816_4ErrorChecker.py
rename to src/smartcard/sw/ISO7816_4ErrorChecker.py
diff --git a/smartcard/sw/ISO7816_4_SW1ErrorChecker.py b/src/smartcard/sw/ISO7816_4_SW1ErrorChecker.py
similarity index 100%
rename from smartcard/sw/ISO7816_4_SW1ErrorChecker.py
rename to src/smartcard/sw/ISO7816_4_SW1ErrorChecker.py
diff --git a/smartcard/sw/ISO7816_8ErrorChecker.py b/src/smartcard/sw/ISO7816_8ErrorChecker.py
similarity index 100%
rename from smartcard/sw/ISO7816_8ErrorChecker.py
rename to src/smartcard/sw/ISO7816_8ErrorChecker.py
diff --git a/smartcard/sw/ISO7816_9ErrorChecker.py b/src/smartcard/sw/ISO7816_9ErrorChecker.py
similarity index 100%
rename from smartcard/sw/ISO7816_9ErrorChecker.py
rename to src/smartcard/sw/ISO7816_9ErrorChecker.py
diff --git a/smartcard/sw/SWExceptions.py b/src/smartcard/sw/SWExceptions.py
similarity index 100%
rename from smartcard/sw/SWExceptions.py
rename to src/smartcard/sw/SWExceptions.py
diff --git a/smartcard/sw/__init__.py b/src/smartcard/sw/__init__.py
similarity index 100%
rename from smartcard/sw/__init__.py
rename to src/smartcard/sw/__init__.py
diff --git a/smartcard/sw/op21_ErrorChecker.py b/src/smartcard/sw/op21_ErrorChecker.py
similarity index 100%
rename from smartcard/sw/op21_ErrorChecker.py
rename to src/smartcard/sw/op21_ErrorChecker.py
diff --git a/smartcard/ulist.py b/src/smartcard/ulist.py
similarity index 100%
rename from smartcard/ulist.py
rename to src/smartcard/ulist.py
diff --git a/smartcard/util/__init__.py b/src/smartcard/util/__init__.py
similarity index 100%
rename from smartcard/util/__init__.py
rename to src/smartcard/util/__init__.py
diff --git a/smartcard/wx/APDUHexValidator.py b/src/smartcard/wx/APDUHexValidator.py
similarity index 100%
rename from smartcard/wx/APDUHexValidator.py
rename to src/smartcard/wx/APDUHexValidator.py
diff --git a/smartcard/wx/APDUTracerPanel.py b/src/smartcard/wx/APDUTracerPanel.py
similarity index 100%
rename from smartcard/wx/APDUTracerPanel.py
rename to src/smartcard/wx/APDUTracerPanel.py
diff --git a/smartcard/wx/CardAndReaderTreePanel.py b/src/smartcard/wx/CardAndReaderTreePanel.py
similarity index 100%
rename from smartcard/wx/CardAndReaderTreePanel.py
rename to src/smartcard/wx/CardAndReaderTreePanel.py
diff --git a/smartcard/wx/ReaderToolbar.py b/src/smartcard/wx/ReaderToolbar.py
similarity index 100%
rename from smartcard/wx/ReaderToolbar.py
rename to src/smartcard/wx/ReaderToolbar.py
diff --git a/smartcard/wx/SimpleSCardApp.py b/src/smartcard/wx/SimpleSCardApp.py
similarity index 100%
rename from smartcard/wx/SimpleSCardApp.py
rename to src/smartcard/wx/SimpleSCardApp.py
diff --git a/smartcard/wx/SimpleSCardAppEventObserver.py b/src/smartcard/wx/SimpleSCardAppEventObserver.py
similarity index 100%
rename from smartcard/wx/SimpleSCardAppEventObserver.py
rename to src/smartcard/wx/SimpleSCardAppEventObserver.py
diff --git a/smartcard/wx/SimpleSCardAppFrame.py b/src/smartcard/wx/SimpleSCardAppFrame.py
similarity index 100%
rename from smartcard/wx/SimpleSCardAppFrame.py
rename to src/smartcard/wx/SimpleSCardAppFrame.py
diff --git a/smartcard/wx/__init__.py b/src/smartcard/wx/__init__.py
similarity index 100%
rename from smartcard/wx/__init__.py
rename to src/smartcard/wx/__init__.py
diff --git a/smartcard/wx/resources/reader.ico b/src/smartcard/wx/resources/reader.ico
similarity index 100%
rename from smartcard/wx/resources/reader.ico
rename to src/smartcard/wx/resources/reader.ico
diff --git a/smartcard/wx/resources/smartcard.ico b/src/smartcard/wx/resources/smartcard.ico
similarity index 100%
rename from smartcard/wx/resources/smartcard.ico
rename to src/smartcard/wx/resources/smartcard.ico


Test patch:
diff --git a/smartcard/test/configcheck.py b/src/smartcard/test/configcheck.py
similarity index 100%
rename from smartcard/test/configcheck.py
rename to src/smartcard/test/configcheck.py
diff --git a/smartcard/test/framework/readme.txt b/src/smartcard/test/framework/readme.txt
similarity index 100%
rename from smartcard/test/framework/readme.txt
rename to src/smartcard/test/framework/readme.txt
diff --git a/smartcard/test/framework/testcase_ATR.py b/src/smartcard/test/framework/testcase_ATR.py
similarity index 100%
rename from smartcard/test/framework/testcase_ATR.py
rename to src/smartcard/test/framework/testcase_ATR.py
diff --git a/smartcard/test/framework/testcase_CAtr.py b/src/smartcard/test/framework/testcase_CAtr.py
similarity index 100%
rename from smartcard/test/framework/testcase_CAtr.py
rename to src/smartcard/test/framework/testcase_CAtr.py
diff --git a/smartcard/test/framework/testcase_Card.py b/src/smartcard/test/framework/testcase_Card.py
similarity index 100%
rename from smartcard/test/framework/testcase_Card.py
rename to src/smartcard/test/framework/testcase_Card.py
diff --git a/smartcard/test/framework/testcase_CardConnection.py b/src/smartcard/test/framework/testcase_CardConnection.py
similarity index 100%
rename from smartcard/test/framework/testcase_CardConnection.py
rename to src/smartcard/test/framework/testcase_CardConnection.py
diff --git a/smartcard/test/framework/testcase_CardMonitor.py b/src/smartcard/test/framework/testcase_CardMonitor.py
similarity index 100%
rename from smartcard/test/framework/testcase_CardMonitor.py
rename to src/smartcard/test/framework/testcase_CardMonitor.py
diff --git a/smartcard/test/framework/testcase_CardRequest.py b/src/smartcard/test/framework/testcase_CardRequest.py
similarity index 100%
rename from smartcard/test/framework/testcase_CardRequest.py
rename to src/smartcard/test/framework/testcase_CardRequest.py
diff --git a/smartcard/test/framework/testcase_CardService.py b/src/smartcard/test/framework/testcase_CardService.py
similarity index 100%
rename from smartcard/test/framework/testcase_CardService.py
rename to src/smartcard/test/framework/testcase_CardService.py
diff --git a/smartcard/test/framework/testcase_CardType.py b/src/smartcard/test/framework/testcase_CardType.py
similarity index 100%
rename from smartcard/test/framework/testcase_CardType.py
rename to src/smartcard/test/framework/testcase_CardType.py
diff --git a/smartcard/test/framework/testcase_ErrorChecking.py b/src/smartcard/test/framework/testcase_ErrorChecking.py
similarity index 100%
rename from smartcard/test/framework/testcase_ErrorChecking.py
rename to src/smartcard/test/framework/testcase_ErrorChecking.py
diff --git a/smartcard/test/framework/testcase_ExclusiveCardConnection.py b/src/smartcard/test/framework/testcase_ExclusiveCardConnection.py
similarity index 100%
rename from smartcard/test/framework/testcase_ExclusiveCardConnection.py
rename to src/smartcard/test/framework/testcase_ExclusiveCardConnection.py
diff --git a/smartcard/test/framework/testcase_readergroups.py b/src/smartcard/test/framework/testcase_readergroups.py
similarity index 100%
rename from smartcard/test/framework/testcase_readergroups.py
rename to src/smartcard/test/framework/testcase_readergroups.py
diff --git a/smartcard/test/framework/testcase_readermonitor.py b/src/smartcard/test/framework/testcase_readermonitor.py
similarity index 100%
rename from smartcard/test/framework/testcase_readermonitor.py
rename to src/smartcard/test/framework/testcase_readermonitor.py
diff --git a/smartcard/test/framework/testcase_readermonitorstress.py b/src/smartcard/test/framework/testcase_readermonitorstress.py
similarity index 100%
rename from smartcard/test/framework/testcase_readermonitorstress.py
rename to src/smartcard/test/framework/testcase_readermonitorstress.py
diff --git a/smartcard/test/framework/testcase_readers.py b/src/smartcard/test/framework/testcase_readers.py
similarity index 100%
rename from smartcard/test/framework/testcase_readers.py
rename to src/smartcard/test/framework/testcase_readers.py
diff --git a/smartcard/test/framework/testcase_ulist.py b/src/smartcard/test/framework/testcase_ulist.py
similarity index 100%
rename from smartcard/test/framework/testcase_ulist.py
rename to src/smartcard/test/framework/testcase_ulist.py
diff --git a/smartcard/test/framework/testcase_utils.py b/src/smartcard/test/framework/testcase_utils.py
similarity index 100%
rename from smartcard/test/framework/testcase_utils.py
rename to src/smartcard/test/framework/testcase_utils.py
diff --git a/smartcard/test/framework/testsuite_framework.py b/src/smartcard/test/framework/testsuite_framework.py
similarity index 100%
rename from smartcard/test/framework/testsuite_framework.py
rename to src/smartcard/test/framework/testsuite_framework.py
diff --git a/smartcard/test/frameworkpcsc/readme.txt b/src/smartcard/test/frameworkpcsc/readme.txt
similarity index 100%
rename from smartcard/test/frameworkpcsc/readme.txt
rename to src/smartcard/test/frameworkpcsc/readme.txt
diff --git a/smartcard/test/frameworkpcsc/testcase_pcscreadergroups.py b/src/smartcard/test/frameworkpcsc/testcase_pcscreadergroups.py
similarity index 100%
rename from smartcard/test/frameworkpcsc/testcase_pcscreadergroups.py
rename to src/smartcard/test/frameworkpcsc/testcase_pcscreadergroups.py
diff --git a/smartcard/test/frameworkpcsc/testsuite_frameworkpcsc.py b/src/smartcard/test/frameworkpcsc/testsuite_frameworkpcsc.py
similarity index 100%
rename from smartcard/test/frameworkpcsc/testsuite_frameworkpcsc.py
rename to src/smartcard/test/frameworkpcsc/testsuite_frameworkpcsc.py
diff --git a/smartcard/test/manual/testcase_manualCardRequest.py b/src/smartcard/test/manual/testcase_manualCardRequest.py
similarity index 100%
rename from smartcard/test/manual/testcase_manualCardRequest.py
rename to src/smartcard/test/manual/testcase_manualCardRequest.py
diff --git a/smartcard/test/scard/readme.txt b/src/smartcard/test/scard/readme.txt
similarity index 100%
rename from smartcard/test/scard/readme.txt
rename to src/smartcard/test/scard/readme.txt
diff --git a/smartcard/test/scard/testcase_getatr.py b/src/smartcard/test/scard/testcase_getatr.py
similarity index 100%
rename from smartcard/test/scard/testcase_getatr.py
rename to src/smartcard/test/scard/testcase_getatr.py
diff --git a/smartcard/test/scard/testcase_getattrib.py b/src/smartcard/test/scard/testcase_getattrib.py
similarity index 100%
rename from smartcard/test/scard/testcase_getattrib.py
rename to src/smartcard/test/scard/testcase_getattrib.py
diff --git a/smartcard/test/scard/testcase_geterrormessage.py b/src/smartcard/test/scard/testcase_geterrormessage.py
similarity index 100%
rename from smartcard/test/scard/testcase_geterrormessage.py
rename to src/smartcard/test/scard/testcase_geterrormessage.py
diff --git a/smartcard/test/scard/testcase_listcards.py b/src/smartcard/test/scard/testcase_listcards.py
similarity index 100%
rename from smartcard/test/scard/testcase_listcards.py
rename to src/smartcard/test/scard/testcase_listcards.py
diff --git a/smartcard/test/scard/testcase_locatecards.py b/src/smartcard/test/scard/testcase_locatecards.py
similarity index 100%
rename from smartcard/test/scard/testcase_locatecards.py
rename to src/smartcard/test/scard/testcase_locatecards.py
diff --git a/smartcard/test/scard/testcase_readergroups.py b/src/smartcard/test/scard/testcase_readergroups.py
similarity index 100%
rename from smartcard/test/scard/testcase_readergroups.py
rename to src/smartcard/test/scard/testcase_readergroups.py
diff --git a/smartcard/test/scard/testcase_returncodes.py b/src/smartcard/test/scard/testcase_returncodes.py
similarity index 100%
rename from smartcard/test/scard/testcase_returncodes.py
rename to src/smartcard/test/scard/testcase_returncodes.py
diff --git a/smartcard/test/scard/testcase_transaction.py b/src/smartcard/test/scard/testcase_transaction.py
similarity index 100%
rename from smartcard/test/scard/testcase_transaction.py
rename to src/smartcard/test/scard/testcase_transaction.py
diff --git a/smartcard/test/scard/testsuite_scard.py b/src/smartcard/test/scard/testsuite_scard.py
similarity index 100%
rename from smartcard/test/scard/testsuite_scard.py
rename to src/smartcard/test/scard/testsuite_scard.py