diff --git a/.github/ISSUE_TEMPLATE/01_BUG_REPORT.md b/.github/ISSUE_TEMPLATE/01_BUG_REPORT.md new file mode 100644 index 0000000..6ae5e14 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/01_BUG_REPORT.md @@ -0,0 +1,37 @@ +--- +name: Bug Report +about: Create a report to help NanoVNA-Saver to improve +title: "bug: " +labels: "bug" +assignees: "" +--- + +# Bug Report + +**NanoVNA-Saver version:** + + + +**Current behavior:** + + + +**Expected behavior:** + + + +**Steps to reproduce:** + + + +**Related code:** + + + +``` +insert short code snippets here +``` + +**Other information:** + + diff --git a/.github/ISSUE_TEMPLATE/02_FEATURE_REQUEST.md b/.github/ISSUE_TEMPLATE/02_FEATURE_REQUEST.md new file mode 100644 index 0000000..5719147 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/02_FEATURE_REQUEST.md @@ -0,0 +1,35 @@ +--- +name: Feature Request +about: Suggest an idea for this project +title: "feat: " +labels: "enhancement" +assignees: "" +--- + +# Feature Request + +**Describe the Feature Request** + + + +**Describe Preferred Solution** + + + +**Describe Alternatives** + + + +**Related Code** + + + +**Additional Context** + + + +**If the feature request is approved, would you be willing to submit a PR?** +_(Help can be provided if you need assistance submitting a PR)_ + +- [ ] Yes +- [ ] No diff --git a/.github/ISSUE_TEMPLATE/03_CODEBASE_IMPROVEMENT.md b/.github/ISSUE_TEMPLATE/03_CODEBASE_IMPROVEMENT.md new file mode 100644 index 0000000..bcd6cb7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/03_CODEBASE_IMPROVEMENT.md @@ -0,0 +1,7 @@ +--- +name: Codebase improvement +about: Provide your feedback for the existing codebase. Suggest a better solution for algorithms, development tools, etc. +title: "dev: " +labels: "enhancement" +assignees: "" +--- diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index f7ff0d7..1952f01 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,6 @@ +--- blank_issues_enabled: false contact_links: - - name: nanovna-users groups.io group - url: https://groups.io/g/nanovna-users/ - about: Please ask any questions about using the NanoVNA or NanoVNA-Saver on this mailing list. + - name: NanoVNA-Saver Community Support + url: https://github.com/zarath@gmx.de/nanovna-saver/discussions + about: Please ask and answer questions here. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..5d0b0b3 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,40 @@ + + +## Pull Request type + + + +Please check the type of change your PR introduces: + +- [ ] Bugfix +- [ ] Feature +- [ ] Code style update (formatting, renaming) +- [ ] Refactoring (no functional changes, no API changes) +- [ ] Build-related changes +- [ ] Documentation content changes +- [ ] Other (please describe): + +## What is the current behavior? + + + +Issue Number: N/A + +## What is the new behavior? + + + +- +- +- + +## Does this introduce a breaking change? + +- [ ] Yes +- [ ] No + + + +## Other information + + diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 0000000..450b43d --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,44 @@ +--- +name: Stale + +on: + schedule: + - cron: "0 8 * * *" + workflow_dispatch: + +jobs: + stale: + name: 🧹 Clean up stale issues and PRs + runs-on: ubuntu-latest + steps: + - name: 🚀 Run stale + uses: actions/stale@v3 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + days-before-stale: 90 + days-before-close: 30 + remove-stale-when-updated: true + stale-issue-label: "stale" + exempt-issue-labels: "no-stale,help-wanted" + stale-issue-message: > + There hasn't been any activity on this issue recently, and in order + to prioritize active issues, it will be marked as stale. + + Please make sure to update to the latest version and + check if that solves the issue. Let us know if that works for you + by leaving a 👍 + + Because this issue is marked as stale, it will be closed and locked + in 7 days if no further activity occurs. + + Thank you for your contributions! + stale-pr-label: "stale" + exempt-pr-labels: "no-stale" + stale-pr-message: > + There hasn't been any activity on this pull request recently, and in + order to prioritize active work, it has been marked as stale. + + This PR will be closed and locked in 7 days if no further activity + occurs. + + Thank you for your contributions! diff --git a/CHANGELOG.md b/CHANGELOG.md index 168b49d..9a1bc61 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,11 @@ Changelog 0.5.4-pre --------- - - Refectoring of Analysis modules + - simplyfied sweep worker + - fixed calibration data loading + - explicit import of scipy functions - #555 + - bugfix for python3.8 compatability + - refactoring of Analysis modules 0.5.3 ----- diff --git a/README.md b/README.md index baf7b4b..6472db8 100644 --- a/README.md +++ b/README.md @@ -14,35 +14,32 @@ points, and generally display and analyze the resulting data. - Copyright 2019, 2020 Rune B. Broberg - Copyright 2020ff NanoVNA-Saver Authors -Latest Changes --------------- + +It's written in __Python 3__ using __PyQt5__ and __scipy__. -### Changes in 0.5.4-pre +
+Table of Contents - - Refactoring of Analysis modules +- [About](#nanovnasaver) + - [Built With](#built-with) +- [Introduction](#introduction) + - [Current Features](#current-features) + - [Screenshot](#screenshot) + - [Binary Releases](#binary-releases) + - [Installation](#installation) + - [Detailed Installation Instructions](docs/INSTALLATION.md) +- [Usage](#using-the-software) + - [Calibration](#calibration) + - [TDR](#tdr) +- [Latest Changes](#latest-changes) +- [Contributing](#contributing) + - [Contribution Guidlines](docs/CONTRIBUTING.md) +- [License](#license) +- [References](#references) +- [Acknowledgements](#acknowledgements) -### Changes in 0.5.3 +
- - Python 3.10 compatability fixes - - Fix crash on open in use serial device - - Use a Defaults module for all settings - - ignores old .ini settings - - Refactoring and unifying Chart classes - - No more automatic update checks (more privacy) - - Corrected error handling in NanaVNA\_V2 code - - Fixed man float related crashes with Qt and - Python 3.10 - - Using more integer divisions to get right type for QPainter - points - - No more long lines in code (pycodestyle) - -### Changes in 0.4.0 - - - PA0JOZ Enhanced Response Correction - This is the reason vor minor version increase as older callibration data shouldn't - be use. - - Fix linux binary build - - Many bugfixes Introduction ------------ @@ -50,7 +47,8 @@ Introduction This software connects to a NanoVNA and extracts the data for display on a computer and allows saving the sweep data to Touchstone files. -Current features: + +### Current features: - Reading data from a NanoVNA -- Compatible devices: NanoVNA, NanoVNA-H, NanoVNA-H4, NanoVNA-F, AVNA via Teensy @@ -74,7 +72,7 @@ Current features: - Customizable display options, including "dark mode" - Exporting images of plotted values -0.1.4: +### Screenshot ![Screenshot of version 0.1.4](https://i.imgur.com/ZoFsV2V.png) Running the application @@ -86,8 +84,11 @@ Main development is currently done on Linux (Mint 21 "Vanessa" Cinnamon) ### Binary releases -You can find 64bit binary releases for Windows, Linux and MacOS under - +You can find current binary releases for Windows, Linux and MacOS under + + +The 32bit Windows binaries are somewhat smaller and seems to be a +little bit more stable. Versions older than Windows 7 are not known to work. @@ -97,96 +98,17 @@ It requires Service Pack 1 and [Microsoft VC++ Redistributable]( https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads). For most users, this would already be installed. -#### Windows 10 - -The downloadable executable runs directly, and requires no installation. - ### Installation and Use with pip -1. Clone repo and cd into the directory +Copy the link of the tgz from latest relaese and install it with pip install. e.g.: - git clone https://github.com/NanoVNA-Saver/nanovna-saver - cd nanovna-saver + pip3 install https://github.com/NanoVNA-Saver/nanovna-saver/archive/refs/tags/v0.5.3.tar.gz -2. Run the pip installation +Once completed run with the following command - pip3 install . + NanoVNASaver -3. Once completed run with the following command - - NanoVNASaver - -#### Ubuntu 20.04 - -1. Install python3.8 and pip - - sudo apt install python3.8 python3-pip - python3 -m venv ~/.venv_nano - . ~/.venv_nano/bin/activate - pip install -U pip - -2. Clone repo and cd into the directory - - git clone https://github.com/NanoVNA-Saver/nanovna-saver - cd nanovna-saver - -3. Update pip and run the pip installation - - python3 -m pip install . - - (You may need to install the additional packages python3-distutils, - python3-setuptools and python3-wheel for this command to work on some - distributions.) - -4. Once completed run with the following command - - . ~/.venv_nano/bin/activate - python3 nanovna-saver.py - - -#### MacPorts - -Via a MacPorts distribution maintained by @ra1nb0w. - -1. Install MacPorts following the [install guide](https://www.macports.org/install.php) - -2. Install NanoVNASaver : - - sudo port install NanoVNASaver - -3. Now you can run the software from shell `NanoVNASaver` or run as app - `/Applications/MacPorts/NanoVNASaver.app` - -#### Homebrew - -1. Install Homebrew from (This will ask for your password) - - /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" - - -2. Python : - - brew install python - -3. Pip :
- Download the get-pip.py file and run it to install pip - - curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py - python3 get-pip.py - -4. NanoVNASaver Installation :
- clone the source code to the nanovna-saver folder - - git clone https://github.com/NanoVNA-Saver/nanovna-saver - cd nanovna-saver - -5. Install local pip packages - - python3 -m pip install . - -6. Run nanovna-saver in the nanovna-saver folder by: - - python3 nanovna-saver.py +[Detailed installation instructions](docs/INSTALLATION.md) Using the software ------------------ @@ -251,13 +173,52 @@ calibration load would be attached. Open the "Time Domain Reflectometry" window, and select the correct cable type, or manually enter a propagation factor. -### Frequency bands +Latest Changes +-------------- + +### Changes in 0.5.4-pre + + - Bugfix for Python3.8 compatability + - Simplyfied sweep worker + - Fixed calibration data loading + - Explicit import of scipy functions - #555 + - Refactoring of Analysis modules + +### Changes in 0.5.3 + + - Python 3.10 compatability fixes + - Fix crash on open in use serial device + - Use a Defaults module for all settings - + ignores old .ini settings + - Refactoring and unifying Chart classes + - No more automatic update checks (more privacy) + - Corrected error handling in NanaVNA\_V2 code + - Fixed man float related crashes with Qt and + Python 3.10 + - Using more integer divisions to get right type for QPainter + points + - No more long lines in code (pycodestyle) + +### Changes in 0.4.0 + + - PA0JOZ Enhanced Response Correction + This is the reason for minor version increase as older callibration data + shouldn't be use. + - Fix linux binary build + - Many bugfixes + +Contributing +------------ + +First off, thanks for taking the time to contribute! Contributions are what +make the open-source community such an amazing place to learn, inspire, and +create. Any contributions you make will benefit everybody else and are +**greatly appreciated**. + + +Please read [our contribution guidelines](docs/CONTRIBUTING.md), and thank you +for being involved! -Open the "Display setup" window to configure the display of frequency bands. By -clicking "show bands", predefined frequency bands will be shown on the -frequency-based charts. Click manage bands to change which bands are shown, -and the frequency limits of each. Bands default and reset to European amateur -radio band frequencies. License ------- @@ -268,8 +229,8 @@ comes with NO WARRANTY. You can use it, commercially as well. You may make changes to the code, but I (and the license) ask that you give these changes back to the community. -Links ------ +References +---------- - Ohan Smit wrote an introduction to using the application: [https://zs1sci.com/blog/nanovnasaver/] @@ -280,12 +241,12 @@ Links [http://www.gunthard-kraus.de/fertig_NanoVNA/English/] [http://www.gunthard-kraus.de/fertig_NanoVNA/Deutsch/] -Credits -------- +Acknowledgements +---------------- Original application by Rune B. Broberg (5Q5R) -Contributions and changes by Holger Müller, David Hunt and others. +Contributions and changes by Holger Müller (DG5DBH), David Hunt and others. TDR inspiration shamelessly stolen from the work of Salil (VU2CWA) at diff --git a/docs/CODE_OF_CONDUCT.md b/docs/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..cf8d464 --- /dev/null +++ b/docs/CODE_OF_CONDUCT.md @@ -0,0 +1,83 @@ +Contributor Covenant Code of Conduct +==================================== + +Our Pledge +---------- + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to make participation in our project and +our community a harassment-free experience for everyone, regardless of age, +body size, disability, ethnicity, sex characteristics, gender identity and +expression, level of experience, education, socio-economic status, nationality, +personal appearance, race, religion, or sexual identity and orientation. + +Our Standards +------------- + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances Trolling, insulting/derogatory comments, and personal or political + attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission Other conduct which could reasonably be + considered inappropriate in a professional setting + +Our Responsibilities +-------------------- + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +Scope +----- + +This Code of Conduct applies within all project spaces, and it also applies +when an individual is representing the project or its community in public +spaces. Examples of representing a project or community include using an +official project email address, posting via an official social media account, +or acting as an appointed representative at an online or offline event. +Representation of a project may be further defined and clarified by project +maintainers. + +Enforcement +----------- + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project maintainer using any of the [private contact +addresses](https://github.com/Nanovna-Saver/nanovna-saver#support). All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an +incident. Further details of specific enforcement policies may be posted +separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor +Covenant](https://www.contributor-covenant.org), version 1.4, available at + + +For answers to common questions about this code of conduct, see + + diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md new file mode 100644 index 0000000..57a40b0 --- /dev/null +++ b/docs/CONTRIBUTING.md @@ -0,0 +1,51 @@ +Contributing +============ + +When contributing to this repository, please first discuss the change you wish +to make via issue, email, or any other method with the owners of this +repository before making a change. +Please note we have a [code of conduct](CODE_OF_CONDUCT.md), please follow it +in all your interactions with the project. + + Development environment setup +------------------------------ + +1. Clone the repo + + ```sh + git clone https://github.com/NanoVNA-Saver/nanovna-saver + ``` + +2. TODO + +## Issues and feature requests + +You've found a bug in the source code, a mistake in the documentation or maybe +you'd like a new feature?Take a look at [GitHub +Discussions](https://github.com/NanoVNA-Saver/nanovna-saver/discussions) to see +if it's already being discussed. You can help us by [submitting an issue on +GitHub](https://github.com/NanoVNA-Saver/nanovna-saver/issues). Before you +create an issue, make sure to search the issue archive -- your issue may have +already been addressed! + +Please try to create bug reports that are: + +- _Reproducible._ Include steps to reproduce the problem. +- _Specific._ Include as much detail as possible: which version, what environment, etc. +- _Unique._ Do not duplicate existing opened issues. +- _Scoped to a Single Bug._ One bug per report. + +**Even better: Submit a pull request with a fix or new feature!** + +### How to submit a Pull Request + +1. Search our repository for open or closed + [Pull Requests](https://github.com/NanoVNA-Saver/nanovna-saver/pulls) + that relate to your submission. You don't want to duplicate effort. +2. Fork the project +3. Create your feature branch (`git checkout -b feat/amazing_feature`) +4. Commit your changes (`git commit -m 'feat: add amazing_feature'`) + NanoVNA-Saver uses [conventional commits](https://www.conventionalcommits.org), + so please follow the specification in your commit messages. 5. Push to the + branch (`git push origin feat/amazing_feature`) +6. [Open a Pull Request](https://github.com/NanoVNA-Saver/nanovna-saver/compare?expand=1) diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md new file mode 100644 index 0000000..2cfc102 --- /dev/null +++ b/docs/INSTALLATION.md @@ -0,0 +1,75 @@ +Installation Instructions +========================= + +## Ubuntu 20.04 / 22.04 + + +1. Install python3.8 and pip + + sudo apt install python3.8 python3-pip + python3 -m venv ~/.venv_nano + . ~/.venv_nano/bin/activate + pip install -U pip + +2. Clone repo and cd into the directory + + git clone https://github.com/NanoVNA-Saver/nanovna-saver + cd nanovna-saver + +3. Update pip and run the pip installation + + python3 -m pip install . + + (You may need to install the additional packages python3-distutils, + python3-setuptools and python3-wheel for this command to work on some + distributions.) + +4. Once completed run with the following command + + . ~/.venv_nano/bin/activate + python3 nanovna-saver.py + + +## MacPorts + +Via a MacPorts distribution maintained by @ra1nb0w. + +1. Install MacPorts following the [install guide](https://www.macports.org/install.php) + +2. Install NanoVNASaver : + + sudo port install NanoVNASaver + +3. Now you can run the software from shell `NanoVNASaver` or run as app + `/Applications/MacPorts/NanoVNASaver.app` + +## Homebrew + +1. Install Homebrew from (This will ask for your password) + + /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" + + +2. Python : + + brew install python + +3. Pip :
+ Download the get-pip.py file and run it to install pip + + curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py + python3 get-pip.py + +4. NanoVNASaver Installation :
+ clone the source code to the nanovna-saver folder + + git clone https://github.com/NanoVNA-Saver/nanovna-saver + cd nanovna-saver + +5. Install local pip packages + + python3 -m pip install . + +6. Run nanovna-saver in the nanovna-saver folder by: + + python3 nanovna-saver.py