Skip to content

Commit

Permalink
upload source code for case study
Browse files Browse the repository at this point in the history
  • Loading branch information
qianqianzhu committed Jun 11, 2018
1 parent e0f1f0b commit 954cae1
Show file tree
Hide file tree
Showing 1,740 changed files with 167,138 additions and 2 deletions.
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
# mutphy
mutation testing for physical computing
# MutPhy: Mutation testing for physical computing
Sharing self-developed tools in mutation testing research

Qianqian Zhu, Andy Zaidman. Mutation Testing for Physical Computing. proceedings of the IEEE 18th International Conference on Software Quality, Reliability and Security (QRS 2018), IEEE, Lisbon, Portugal, 2018.
45 changes: 45 additions & 0 deletions case_study/RPLCD-1.0.0/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
*.py[cod]

# C extensions
*.so

# Packages
*.egg
*.egg-info
dist
build
eggs
parts
bin
var
sdist
develop-eggs
.installed.cfg
lib
lib64

# Installer logs
pip-log.txt

# Unit test / coverage reports
.coverage
.tox
nosetests.xml

# Translations
*.mo

# Mr Developer
.mr.developer.cfg
.project
.pydevproject
*.sw[op]

# TeX
*.log
*.aux
docs/*.pdf

# Python
VIRTUAL/
.cache/
11 changes: 11 additions & 0 deletions case_study/RPLCD-1.0.0/.travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
language: python
python:
- 2.7
- 3.3
- 3.4
- 3.5
- 3.6
install:
- pip install -r requirements-dev.txt
script:
- py.test -v
78 changes: 78 additions & 0 deletions case_study/RPLCD-1.0.0/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# Changelog

This project follows semantic versioning.

Possible log types:

- `[add]` for new features.
- `[chg]` for changes in existing functionality.
- `[dep]` for once-stable features removed in upcoming releases.
- `[rem]` for deprecated features removed in this release.
- `[fix]` for any bug fixes.
- `[sec]` to invite users to upgrade in case of vulnerabilities.

### v1.0.0 (2017-07-30)

This is the first release that can be considered stable. It involves some API
changes, so you might need to adapt your scripts (mainly because some default
arguments to `CharLCD` were removed).

If you notice any documentation that hasn't been updated yet to the newer API,
please let us know!

- [add] Support for `MCP23008` and `MCP23014^ I²C port expanders (#43, #59)
- [add] Add `RPLCD.__version__` attribute
- [fix] Fix bug in auto linebreak algorithm (#53)
- [fix] Fix bugs in show_charmap script (#52)
- [fix] Fix error in A02 character map
- [chg] Remove default args for `gpio.CharLCD`, pins and numbering mode always
need to be specified explicitly from now on
- [chg] Remove default for `i2c.CharLCD` i2c_expander parameter,
always needs to be specified explicitly from now on
- [chg] Remove all enums (`Alignment`, `CursorMode`, `ShiftMode`,
`BacklightMode`), replace them with string based API (#67)
- [chg] Rewrite test scripts, expose them all through a single entry point
script: `lcdtest.py` (#58, #59)

### v0.9.0 (2017-05-09)

This version can be considered the release candidate for the 1.0 release.

- [add] Support for i2c port expanders (#20)
- [add] Implement proper automatic encoding of unicode strings,
add encoding tables for A00 and A02 character maps (#40)
- [add] Implement convenience functions for CR/LF (#45)
- [add] Add documentation (#37)
- [dep] Deprecate context managers (#18)
- [rem] Drop support for Python 3.2

### v0.4.0 (2016-09-12)

- [fix] Fix problem when auto-linebreaks clash with manual linebreaks (#14)
- [fix] Fix wiring pin for GND (#25)
- [add] Add option to disable auto linebreaks (#14)
- [add] Add backlight GPIO control (#21)

### v0.3.0 (2014-07-03)

- [add] Implemented support for custom characters (#4)
- [fix] Fixed a bug that caused offsets on 16x4 displays (#16)

### v0.2.0 (2014-04-20)

- [add] Removed all external dependencies
- [add] New ``show_charmap.py`` helper script

### v0.1.3 (2013-06-26)

- [fix] Bugfix (#13)

### v0.1.2 (2013-06-17)

- [add] Added character caching
- [add] Added support for 16x2 LCD
- [fix] Bugfixes

### v0.1.1 (2013-05-12)

- Initial release
32 changes: 32 additions & 0 deletions case_study/RPLCD-1.0.0/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Contributing

Thanks a lot for any contribution!

To keep code quality high and maintenance work low, please adhere to the
following guidelines when creating a pull request:

- Please follow the [coding
guidelines](https://github.com/dbrgn/RPLCD#coding-guidelines).
- Use meaningful commit messages: Please follow the advice in [this
blogpost](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html).
First line of your commit message should be a very short summary (ideally 50
characters or less) in the imperative mood. After the first line of the commit
message, add a blank line and then a more detailed explanation (when relevant).

The following items make my life easier, but are optional:

- If you know how to use `git rebase`, please rebase/sqash your commits so that
unnecessary noise in the commit history is avoided.
- If you have have previously filed a GitHub issue and want to contribute code
that addresses that issue, I prefer it if you use
[hub](https://github.com/github/hub) to convert your existing issue to a pull
request. To do that, first push the changes to a separate branch in your fork
and then issue the following command:

hub pull-request -b dbrgn:master -i <issue-number> -h <your-github-username>:<your-branch-name>

This is no strict requirement though, if you don't have hub installed or
prefer to use the web interface, then feel free to post a traditional pull
request.

Thanks for your contribution!
11 changes: 11 additions & 0 deletions case_study/RPLCD-1.0.0/CONTRIBUTORS
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Main Developers

- Danilo Bargen / @dbrgn

Contributors

- @beargun (bugfix)
- @stripwax (backlight circuit support)
- @rameshg87 (wiring docs)
- @thijstriemstra (fixes to README and setup.py)
- @GoranLundberg (support for MCP23008 and MCP23017 I²C port expander)
18 changes: 18 additions & 0 deletions case_study/RPLCD-1.0.0/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
Copyright (C) 2013-2017 Danilo Bargen and contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
4 changes: 4 additions & 0 deletions case_study/RPLCD-1.0.0/MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
include README.rst LICENSE CHANGELOG.md CONTRIBUTORS
include lcdtest.py
include lcdtests/*.py
recursive-exclude * *.pyc
144 changes: 144 additions & 0 deletions case_study/RPLCD-1.0.0/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
RPLCD
#####

.. image:: https://badges.gitter.im/RPLCD/Lobby.svg
:alt: Join the chat at https://gitter.im/RPLCD/Lobby
:target: https://gitter.im/RPLCD/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
.. image:: https://img.shields.io/travis/dbrgn/RPLCD/master.svg
:target: https://travis-ci.org/dbrgn/RPLCD
:alt: Build Status
.. image:: https://img.shields.io/pypi/v/RPLCD.svg
:target: https://pypi.python.org/pypi/RPLCD/
:alt: PyPI Version
.. image:: https://img.shields.io/pypi/wheel/RPLCD.svg
:target: https://pypi.python.org/pypi/RPLCD/
:alt: PyPI Wheel
.. image:: https://img.shields.io/pypi/pyversions/RPLCD.svg
:target: https://pypi.python.org/pypi/RPLCD/
:alt: PyPI Python Versions
.. image:: https://img.shields.io/badge/dependencies-0-blue.svg
:target: https://pypi.python.org/pypi/RPLCD/
:alt: Dependencies
.. image:: https://img.shields.io/pypi/l/RPLCD.svg
:target: https://pypi.python.org/pypi/RPLCD/
:alt: License

A Python 3/2 Raspberry PI Character LCD library for the Hitachi HD44780
controller. It supports both GPIO (parallel) mode as well as boards with an I2C
port expander (e.g. the PCF8574 or the MCP23008).

This library is inspired by Adafruit Industries' CharLCD_ library as well as by
Arduino's LiquidCrystal_ library.

No external dependencies (except the ``RPi.GPIO`` library, which comes
preinstalled on Raspbian) are needed to use this library.

.. image:: https://raw.github.com/dbrgn/RPLCD/master/photo-i2c.jpg
:alt: Photo of 20x4 LCD in action


Setup
=====

You can install RPLCD directly from `PyPI
<https://pypi.python.org/pypi/RPLCD/>`_ using pip::

$ sudo pip install RPLCD

If you want to use I2C, you also need smbus::

$ sudo apt install python-smbus

You can also install the library manually without pip. Either just copy the
scripts to your working directory and import them, or download the repository
and run ``python setup.py install`` to install it into your Python package
directory.


Features
========

Implemented
-----------

- Simple to use API
- Support for both 4 bit and 8 bit modes
- Support for both parallel (GPIO) and I²C connection
- Support for custom characters
- Support for backlight control circuits
- Built-in support for `A00` and `A02` character tables
- Python 2/3 compatible
- Caching: Only write characters if they changed
- No external dependencies (except `RPi.GPIO`, and `python-smbus` if you need
I²C support)

Wishlist
--------

These things may get implemented in the future, depending on my free time and
motivation:

- MicroPython port

Supported I²C Port Expanders
----------------------------

- PCF8574 (used by a lot of I²C LCD adapters on Ali Express)
- MCP23008 (used in Adafruit I²C LCD backpack)
- MCP23017


Documentation
=============

You can find the documentation here: https://readthedocs.org/projects/rplcd/


Testing
=======

Interactive Test Script
-----------------------

To test your LCD, please run the ``lcdtest.py`` script with the ``testsuite``
target.

Unit Tests
----------

There are also unit tests. First, install dependencies:

pip install -U -r requirements-dev.txt

Then run the tests:

py.test -v


Coding Guidelines
=================

`PEP8 <http://www.python.org/dev/peps/pep-0008/>`__ via `flake8
<https://pypi.python.org/pypi/flake8>`_ with ``max-line-width`` set to 99 and
``E126-E128,C901`` ignored::

flake8 --max-line-length=99 --ignore=E126,E127,E128,C901 RPLCD/lcd.py


Resources
=========

- TC2004A-01 Data Sheet: http://www.adafruit.com/datasheets/TC2004A-01.pdf
- HD44780U Data Sheet: http://www.adafruit.com/datasheets/HD44780.pdf


License
=======

This code is licensed under the MIT license, see the `LICENSE file
<https://github.com/dbrgn/RPLCD/blob/master/LICENSE>`_ or `tldrlegal
<http://www.tldrlegal.com/license/mit-license>`_ for more information.


.. _charlcd: https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code/tree/master/Adafruit_CharLCD
.. _liquidcrystal: http://arduino.cc/en/Reference/LiquidCrystal
34 changes: 34 additions & 0 deletions case_study/RPLCD-1.0.0/RELEASING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Release process

Signing key: 3578F667F2F3A5FA (https://keybase.io/dbrgn)

Used variables:

export VERSION={VERSION}
export GPG=3578F667F2F3A5FA

Update version numbers:

vim -p setup.py CHANGELOG.md RPLCD/__init__.py docs/conf.py

Do a signed commit and signed tag of the release:

git add setup.py CHANGELOG.md RPLCD/__init__.py docs/conf.py
git commit -S${GPG} -m "Release v${VERSION}"
git tag -u ${GPG} -m "Release v${VERSION}" v${VERSION}

Build source and binary distributions:

python3 setup.py sdist
python3 setup.py bdist_wheel

Sign files:

gpg --detach-sign -u ${GPG} -a dist/RPLCD-${VERSION}.tar.gz
gpg --detach-sign -u ${GPG} -a dist/RPLCD-${VERSION}-py2.py3-none-any.whl

Upload package to PyPI:

twine3 upload dist/RPLCD-${VERSION}*
git push
git push --tags
Loading

0 comments on commit 954cae1

Please sign in to comment.