Skip to content

[pull] master from walkframe:master #21

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 57 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
c8eccca
github actions workflow wip
righ Feb 19, 2023
73f3000
typo
righ Feb 19, 2023
63e17b5
update readme
righ Feb 19, 2023
8a39e5d
username
righ Feb 19, 2023
a9b000a
delete badge
righ Feb 19, 2023
a86be1b
publish
righ Feb 19, 2023
85bd7e0
token
righ Feb 19, 2023
678eb30
delete
righ Feb 19, 2023
2a01cd4
make async and rename
righ Feb 19, 2023
665eeb4
version 2.1.0 for python
righ Feb 19, 2023
036026e
use action
righ Feb 19, 2023
04ab0ac
update version
righ Feb 19, 2023
b8bcfd9
update
righ Feb 19, 2023
6a915a8
update
righ Feb 19, 2023
11e5560
stringify
righ Feb 19, 2023
2624af2
specify dist
righ Feb 19, 2023
691b237
debug
righ Feb 19, 2023
ecc97e1
upload by twine
righ Feb 19, 2023
1748029
do not use pypa/gh-action-pypi-publish@release/v1
righ Feb 19, 2023
737ae17
codecov
righ Feb 19, 2023
6f99e85
use action
righ Feb 19, 2023
2e66202
fix path
righ Feb 19, 2023
f0ea342
pict constraints
righ Aug 4, 2024
7d37688
v2.3.0 alpha
righ Aug 6, 2024
5551b9a
Merge pull request #37 from walkframe/condition
righ Aug 6, 2024
b3ddf83
exports
righ Aug 6, 2024
19a8856
version
righ Aug 6, 2024
d754477
export
righ Aug 6, 2024
197e86b
alpha2
righ Aug 6, 2024
fde798d
v2.3.0
righ Aug 6, 2024
5f8434d
fix: Remove covertable from dependencies
righ Aug 7, 2024
47c59da
v2.3.1
righ Aug 7, 2024
b566e8d
2.3.2-alpha.0
righ Aug 7, 2024
9da9250
2.3.2-alpha.1
righ Aug 7, 2024
f60e1e8
webpack
righ Aug 7, 2024
2bdab40
2.3.2-alpha.4
righ Aug 21, 2024
7cf71ac
fix: set default true
righ Aug 21, 2024
84f670d
2.3.2-alpha.5
righ Aug 21, 2024
014aa00
fix: conditions for application of prefilter
righ Aug 24, 2024
b104389
Merge pull request #38 from walkframe/fix/prefilter
righ Aug 26, 2024
4a3ec74
2.4.0-alpha.0
righ Aug 26, 2024
8faaedf
test: add tests
righ Aug 27, 2024
0299911
2.4.0-alpha.1
righ Aug 28, 2024
2184f4b
update README and types
righ Aug 28, 2024
1151c43
2.4.0-alpha.2
righ Aug 28, 2024
9bdb036
update
righ Aug 28, 2024
c0d0684
2.4.0
righ Aug 28, 2024
ababb7f
update README
righ Aug 29, 2024
89b1b7e
update
righ Aug 29, 2024
3dca423
update
righ Aug 29, 2024
3288393
update link
righ Aug 31, 2024
6b06f52
2.4.1
righ Aug 31, 2024
636eae7
feat: Controller and progress
righ Mar 17, 2025
268793a
v2.5.0
righ Mar 17, 2025
09c6755
fix: 0div
righ Mar 17, 2025
abcbf43
v2.5.1
righ Mar 17, 2025
90611d0
fix: consume row pairs when the prefilter does not match.
righ Mar 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
143 changes: 0 additions & 143 deletions .circleci/config.yml

This file was deleted.

61 changes: 61 additions & 0 deletions .github/workflows/python.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: python
on:
push:

jobs:
tests:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.7", "3.11"]
defaults:
run:
working-directory: python

steps:
- uses: actions/checkout@v3
- name: setup
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: install
run: |
python -m pip install --upgrade pip
python -m pip install -r ci_requirements.txt
- name: test
run: |
pytest --cov=covertable --cov-report=xml
- name: codecov
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: ./python/coverage.xml
verbose: true

release:
needs: tests
runs-on: ubuntu-latest
defaults:
run:
working-directory: python
if: github.ref == 'refs/heads/master'
name: pypi upload
steps:
- uses: actions/checkout@v3
- name: setup
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: install
run: |
python -m pip install --upgrade pip
python -m pip install -r ci_requirements.txt
- name: build
run: |
python -m build --sdist --wheel --outdir dist/ .
- name: upload
run: |
twine upload dist/* --non-interactive --skip-existing
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
65 changes: 65 additions & 0 deletions .github/workflows/typescript.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: typescript
on:
push:

jobs:
tests:
runs-on: ubuntu-latest
defaults:
run:
working-directory: typescript

steps:
- uses: actions/checkout@v3
- name: setup
uses: actions/setup-node@v3
with:
node-version: "16"
- name: cache
uses: actions/cache@v3
with:
path: |
node_modules
key: ${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
- name: install
run: |
npm install
- name: test
run: |
npm test -- --coverage
# npm run codecov
- name: codecov
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: ./typescript/coverage/lcov.info
verbose: true

release:
needs: tests
runs-on: ubuntu-latest
defaults:
run:
working-directory: typescript

if: github.ref == 'refs/heads/master'
name: npm upload
steps:
- uses: actions/checkout@v3
- name: setup
uses: actions/setup-node@v3
with:
node-version: "16"
- name: cache
uses: actions/cache@v3
with:
path: |
node_modules
key: ${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
- name: upload
run: |
npm install
npm run build
echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc
npm publish || true

75 changes: 75 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# CoverTable

![covertable logo](./covertable.png)

Time is limited.

Creating a test case that satisfies all possible factors is often unrealistic and, more importantly, tedious.

Save time with CoverTable, a flexible pairwise tool that generates combinations covering two (or more) factors.

## Implementations

CoverTable is available in two implementations, with TypeScript as the primary focus and Python offered as a secondary option.

### TypeScript

[![NPM Version](https://badge.fury.io/js/covertable.svg)](https://badge.fury.io/js/covertable) [![Build Status](https://github.com/walkframe/covertable/actions/workflows/typescript.yaml/badge.svg)](https://github.com/walkframe/covertable/actions/workflows/typescript.yaml)

- [README](https://github.com/walkframe/covertable/blob/master/typescript/README.md)
- [History](https://github.com/walkframe/covertable/blob/master/typescript/history.md)

### Python (Legacy Support)

[![PyPI Version](https://badge.fury.io/py/covertable.svg)](https://badge.fury.io/py/covertable) [![Build Status](https://github.com/walkframe/covertable/actions/workflows/python.yaml/badge.svg)](https://github.com/walkframe/covertable/actions/workflows/python.yaml)

- [README](https://github.com/walkframe/covertable/blob/master/python/README.rst)
- [History](https://github.com/walkframe/covertable/blob/master/python/history.md)


For more details, please refer to the links above.

## Performance

> **Note:**
> The following data was measured in Python 3.7.7 on a `3.1 GHz 6-Core Intel Core i5`.
> The coverage number is `2`.

| Combination | Default | Minimum case | Fastest case |
|-------------------|-------------------------------------|---------------------------------------|------------------------------------|
| **3^4** | num: `9` <br> time: `0.0006s` | num: `9` <br> time: `0.0006s` | num: `14` <br> time: `0.0005s` |
| **3^13** | num: `19` <br> time: `0.03s` | num: `17` <br> time: `0.03s` | num: `21` <br> time: `0.003s` |
| **4^15 + 3^17 + 2^29** | num: `36` <br> time: `7.41s` | num: `34` <br> time: `7.47s` | num: `42` <br> time: `0.40s` |
| **4^1 + 3^39 + 2^35** | num: `27` <br> time: `15.19s` | num: `26` <br> time: `14.70s` | num: `30` <br> time: `0.51s` |
| **2^100** | num: `14` <br> time: `23.97s` | num: `12` <br> time: `0.63s` | num: `13` <br> time: `0.48s` |
| **10^20** | num: `198` <br> time: `14.28s` | num: `195` <br> time: `14.48s` | num: `284` <br> time: `0.53s` |

In general, as the number of elements or coverage increases, the number of combinations tends to increase significantly.

## Tolerance

If you use the `greedy` criterion and specify a positive integer for the `tolerance` option, you can increase speed at the expense of the number of combinations.

The greater the `tolerance`, the faster the speed and the larger the number of combinations.

### Example: 10^20 Test Cases

| Tolerance | num | time |
|-----------|------|--------|
| 0 (default) | `195` | `14.48s` |
| 1 | `199` | `12.45s` |
| 2 | `201` | `9.48s` |
| 3 | `201` | `7.17s` |
| 4 | `207` | `5.70s` |
| 5 | `212` | `4.58s` |
| 6 | `212` | `3.65s` |
| 7 | `216` | `3.07s` |
| 8 | `223` | `2.57s` |
| 9 | `226` | `2.14s` |
| 10 | `233` | `1.84s` |
| 11 | `237` | `1.61s` |
| 12 | `243` | `1.43s` |
| 13 | `249` | `1.28s` |
| 14 | `254` | `1.19s` |


Loading