URI: 
       tdeveloper-notes.md - electrum-personal-server - Maximally lightweight electrum server for a single user
  HTML git clone https://git.parazyd.org/electrum-personal-server
   DIR Log
   DIR Files
   DIR Refs
   DIR README
       ---
       tdeveloper-notes.md (2758B)
       ---
            1 # Developer notes for Electrum Personal Server
            2 
            3 Please keep lines under 80 characters in length and ideally don't add
            4 any external dependencies to keep this as easy to install as possible.
            5 
            6 The project tries to follow the [python style guide PEP 8](https://www.python.org/dev/peps/pep-0008/).
            7 
            8 ## Naming
            9 
           10 Do not use the acronym EPS. Acronyms are not very user-friendly and are hard to
           11 search for.
           12 
           13 ## Installing in developer mode
           14 
           15 To seamlessly work on the codebase while using `pip`, you need to
           16 install in the `develop`/`editable` mode.  You can do that with:
           17 
           18     $ pip3 install --user -e /path/to/repo
           19 
           20 `/path/to/repo` can also be a relative path, so if you are in the
           21 source directory, just use `.`.  This installs the scripts in the
           22 usual places, but imports the package from the source directory.  This
           23 way, any changes you make are immediately visible.
           24 
           25 ## Maintainable code
           26 
           27 Read the article [How To Write Unmaintainable Code](https://github.com/Droogans/unmaintainable-code/blob/master/README.md) and do the opposite of what it says.
           28 
           29 ## Commits
           30 
           31 Commits should be [atomic](https://en.wikipedia.org/wiki/Atomic_commit#Atomic_commit_convention) and diffs should be easy to read.
           32 
           33 Commit messages should be verbose by default consisting of a short subject line
           34 (50 chars max), a blank line and detailed explanatory text as separate
           35 paragraph(s), unless the title alone is self-explanatory (like "Corrected typo
           36 in server.py") in which case a single title line is sufficient. Commit messages
           37 should be helpful to people reading your code in the future, so explain the
           38 reasoning for your decisions. Further explanation
           39 [here](https://chris.beams.io/posts/git-commit/).
           40 
           41 ## Testing
           42 
           43 Electrum Personal Server also works on [testnet](https://en.bitcoin.it/wiki/Testnet)
           44 and [regtest](https://bitcoin.org/en/glossary/regression-test-mode). The
           45 Electrum wallet can be started in testnet mode with the command line flag
           46 `--testnet` or `--regtest`.
           47 
           48 pytest is used for automated testing. On Debian-like systems install with
           49 `pip3 install pytest pytest-cov`
           50 
           51 Run the tests with:
           52 
           53     $ PYTHONPATH=.:$PYTHONPATH pytest
           54 
           55 Create the coverage report with:
           56 
           57     $ PYTHONPATH=.:$PYTHONPATH pytest --cov-report=html --cov
           58     $ open htmlcov/index.html
           59 
           60 If you have installed Electrum Personal Server with pip, there is no
           61 need to set `PYTHONPATH`.  You could also run the tests with:
           62 
           63     $ python3 setup.py test
           64 
           65 ## Packaged binary release with pyinstaller
           66 
           67 Pyinstaller is used to create the packaged binary releases. To build run:
           68 
           69     pyinstaller common.spec
           70 
           71 This is best done on a virtual machine with the target OS installed. The
           72 `cert/` directory needs to be copied and for windows its helpful to run
           73 `unix2dos config.ini_sample` to convert the line endings.
           74