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