Skip to content
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

Version 4.0.0 #523

Draft
wants to merge 89 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
65fe462
f (#413)
jaypantone Feb 15, 2022
68e001b
skip test with database that is to slow (#415)
enadeau Feb 15, 2022
54a75b3
point jumping strategy (#412)
christianbean Feb 15, 2022
f6c4b14
requirement and row and col placements strategy pack (#414)
christianbean Feb 15, 2022
8150b73
limit the size of obs in minimal obs call (#418)
christianbean Feb 22, 2022
e1da37c
make tracked also adds tracking int factor method (#419)
christianbean Feb 22, 2022
82cad6c
Deflation (#416)
christianbean Feb 22, 2022
0de2314
stop reinitialising tilings in the from dict method (#424)
christianbean Mar 1, 2022
8c275cc
add empty cell obs during placement (#423)
christianbean Mar 1, 2022
de27640
make tracked works with deflation and every other future tracked stra…
christianbean Mar 1, 2022
6cf95b4
Selective symmetries (#420)
christianbean Mar 1, 2022
c27a174
monotone sliding (#417)
christianbean Mar 8, 2022
9863668
a targeted cell insertion strategy (#421)
christianbean Mar 8, 2022
e4cc309
No Root Cell verification (#422)
ulfarsson Mar 8, 2022
0399050
Point corroboration (#426)
christianbean Mar 8, 2022
0ec3b0d
work from every sym (#427)
christianbean Mar 8, 2022
eafa696
allows swapping points or assumptions alone (#429)
christianbean Mar 10, 2022
c7c2af6
adding init flags (#430)
christianbean Mar 10, 2022
bf402ef
the cell reduction strategy (#428)
christianbean Mar 22, 2022
599c92e
Improving initialiser (#432)
christianbean Mar 22, 2022
1991825
ignore 1x1s and monotone cells (#433)
christianbean Mar 22, 2022
da04aa4
Point corroboration (#434)
christianbean Mar 23, 2022
374d9a4
test reqs separately (#437)
christianbean Mar 29, 2022
ec52ee3
allow reqs, and more careful point in between (#436)
christianbean Mar 29, 2022
02b3fc2
make not implemented reverse constructor for interleaving factor (#441)
enadeau Apr 7, 2022
0731232
subobstruction insertion factory and pack (#442)
christianbean Apr 19, 2022
7f899b2
kitchen_sinkify (#435)
jaypantone Apr 19, 2022
b29bb32
New collect_before decorator for some test.
enadeau Apr 20, 2022
413955e
Merge pull request #444 from PermutaTriangle/collect-before
enadeau Apr 20, 2022
7095524
Updating component assumptions (#443)
christianbean Apr 20, 2022
609a9c8
dont change type of assumption (#445)
christianbean Apr 21, 2022
d69ae21
fix from dict (#446)
christianbean Apr 27, 2022
a745c1f
ass.__class__ (#447)
christianbean Apr 28, 2022
c6c0096
only deflate/reduce when component assumptions touching cell are 1x1 …
christianbean May 3, 2022
5e4fb85
allow fusing when any assumption covers entire fuse region (#449)
christianbean May 3, 2022
c345d85
add backward map to FactorWithInterleavingStrategy (#450)
christianbean May 3, 2022
27506a6
remove AddInterleavingAssumptionsFactory (#451)
christianbean May 4, 2022
b153a51
make sure to check both cells are monotone (#457)
christianbean May 6, 2022
1f5371e
pointing strategy, unfusion strategy, disjoint fusion strategy, a dum…
christianbean May 6, 2022
1a29f91
reversible if parent has all the assumptions for interleaving (#456)
christianbean May 6, 2022
f0374ca
small bugs in interleaving factors (#458)
christianbean May 6, 2022
be81c6b
count component behave like disjoint in shift algo (#460)
christianbean May 9, 2022
6a99c28
removing the disjoint fusion strategy (#459)
christianbean May 9, 2022
71e2aa8
remove the remove_strategy defined on css (#461)
christianbean May 9, 2022
8683ea8
add assumption reversible when assumption covers whole tiling (#463)
christianbean May 10, 2022
ce22e54
a strategy for placing points of assumptions (#462)
christianbean May 10, 2022
55a6ea9
a factory for placing into rows and cols that are fusable (#464)
christianbean May 10, 2022
244371d
Remove assumptions (#465)
christianbean May 10, 2022
aa7b79c
fix json and repr encoding of interleaving factor strategy (#469)
enadeau May 12, 2022
6499428
a requirement pointing strategy (#466)
christianbean May 17, 2022
565243e
add remove constructor (#470)
christianbean May 17, 2022
af6b774
add flags to unfusion and pointing strategies (#471)
christianbean May 24, 2022
ffdd84c
All at once obstruction inferral (#467)
christianbean Jun 1, 2022
3fab1c9
full-tiling assumptions do not count against the max_assumptions cap …
jaypantone Jun 1, 2022
0b9056f
more flags for pointing (#475)
jaypantone Jun 7, 2022
1804639
adds flag to allow factorable requirement insertions, default = False…
jaypantone Jun 7, 2022
9c66582
Small bug (#480)
christianbean Jun 14, 2022
1fce660
adds default option (#481)
jaypantone Jun 15, 2022
947e19a
makes an option for whether full tiling assumptions count against cap…
jaypantone Jun 15, 2022
d43284c
one by one looks up permpal (#483)
christianbean Jun 15, 2022
4910542
reverse fusion uses divide by k (#484)
christianbean Jun 15, 2022
31fcbc5
forbid fusing if assumption not entirely on left or right (#485)
christianbean Jun 16, 2022
28a61f8
stop expanding av(012), and return invalid op for comp ver (#487)
christianbean Jun 29, 2022
8b7827f
change error to logging check (#489)
christianbean Jul 15, 2022
cc9927a
need to pass is empty to fusion is equiv now (#491)
christianbean Jul 22, 2022
9ac5814
ensure obs are minimised in point placements (#494)
christianbean Jul 27, 2022
8a230e3
Work in process getting rid of the new warnings (#497)
ulfarsson Nov 28, 2022
6fb6d38
better exception message for point jumping (#498)
enadeau Jan 12, 2023
e002bec
Fix and upgrade Github Actions (#500)
jaypantone Jan 18, 2023
0c64e38
Sliding bug (#501)
christianbean Jan 19, 2023
0e1e659
add quotes and set new CSS version in setup.py (#502)
jaypantone Jan 19, 2023
3e16919
check in decomp func of sliding (#503)
christianbean Jan 20, 2023
9649292
a new pack (#486)
christianbean Jan 24, 2023
3ac3f90
Trackedclassdb (#431)
christianbean Jan 24, 2023
943263d
one by one uses permpal for counting etc (#499)
christianbean Jan 24, 2023
76bb128
fix k0 / k_0 typo in 1x1 eqs (#505)
christianbean Jan 31, 2023
ec7bf10
fixes bug in sanity checking new 1x1 verification (#506)
jaypantone Feb 1, 2023
5368c86
make local verification basis aware (#507)
christianbean Feb 7, 2023
b401cba
implement positive reverse fusion counting (#509)
christianbean Feb 14, 2023
31c3c5c
make one-based (#512)
jaypantone Feb 22, 2023
6c9a4f3
remove unnecessary error (#514)
christianbean Feb 28, 2023
dd3d2ed
a test for duplicated mapped params in complement (#510)
christianbean Feb 28, 2023
3d6f534
fix misc bugs in kitchen sink strategies (#517)
christianbean Mar 17, 2023
92ec3a6
a strategy for forcing assumptions to be empty (#513)
christianbean Mar 20, 2023
606cb69
remove break (#518)
jaypantone Apr 25, 2023
d484c14
adds kitchen sink levels (#519)
jaypantone May 9, 2023
a91c628
Shift from spec (#520)
christianbean Jun 6, 2023
c3764f1
sets allow_factorable_insertions default to False (#521)
jaypantone Jun 6, 2023
ee89680
prepare v4.0.0
christianbean Mar 4, 2024
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
2 changes: 1 addition & 1 deletion .github/workflows/build-and-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: 3.8
python-version: "3.10"
- name: install dependencies
run: |
python -m pip install --upgrade pip
Expand Down
22 changes: 14 additions & 8 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,16 @@ jobs:
fail-fast: false
matrix:
include:
- python: 3.8
- python: "3.10"
toxenv: flake8
os: ubuntu-latest
- python: 3.8
- python: "3.10"
toxenv: mypy
os: ubuntu-latest
- python: 3.8
- python: "3.10"
toxenv: pylint
os: ubuntu-latest
- python: 3.8
- python: "3.10"
toxenv: black
os: ubuntu-latest

Expand All @@ -31,15 +31,21 @@ jobs:
- python: "3.10"
toxenv: py310
os: ubuntu-latest
- python: "3.11"
toxenv: py311
os: ubuntu-latest
- python: pypy-3.8
toxenv: pypy38
os: ubuntu-latest
- python: pypy-3.9
toxenv: pypy39
os: ubuntu-latest

- python: 3.8
toxenv: py38
- python: "3.10"
toxenv: py310
os: macos-latest
- python: 3.8
toxenv: py38
- python: "3.10"
toxenv: py310
os: windows-latest

runs-on: ${{ matrix.os }}
Expand Down
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
repos:
- repo: https://github.com/psf/black
rev: 21.10b0
rev: 22.10.0
hooks:
- id: black
90 changes: 89 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,95 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [Unreleased]

## Unreleased

## [4.0.0 - 2024-03-04]
### Added
- added `TileScopePack.requirement_and_row_and_col_placements`
- `AssumptionAndPointJumpingFactory` which adds rules where requirements and/or
assumptions are swapped around a fusable row or column.
- `PointJumpingFactory` which adds rules where requirements and assumptions can be
swapped around a fusable row or column.
- `MonotoneSlidingFactory` that creates rules that swaps neighbouring cells if they
are 'monotone' fusable, i.e., they are a generalized fusion with a monotone local
extra obstruction.
- `DeflationFactory` which adds rules where cells can be deflated into increasing or
decreasing cells as obstructions can't occur across the sum/skew components in that
cell.
- `CellReductionFactory` which changes a cell to monotone if at most one point of
any crossing gp touches that cell.
- `PositiveCorroborationFactory` that inserts into cells which if positive makes
another cell empty. Also, the `PointCorroborationFactory`, which does this for
point or empty cells which is added to most packs.
- `TargetedCellInsertionFactory` which inserts factors of gridded perms if it can
lead to factoring out a verified sub tiling.
- `BasisPatternInsertionFactory` which inserts permutations which are contained in
every pattern in the basis
- `ComponentVerificationStrategy` which is added to component fusion packs.
- `ComponentToPointAssumptionStrategy` that changes component assumptions to point
assumptions. These strategies are yielded in `RearrangeAssumptionFactory`.
- `StrategyPack.kitchen_sinkify` to add many experimental strategies to the pack
- `SubobstructionInsertionFactory` that inserts subobstructions and the pack
`TileScopePack.subobstruction_placements` which uses it.
- `FactorWithInterleavingStrategy.backward_map` so you can now generate permutation
from specifications using interleaving factors.
- `DummyStrategy` that gives a quick template for making strategies.
- `PointingStrategy`, `AssumptionPointingFactory` and `RequirementPointingFactory`
that place points directionless in non-point cells. This are a non-productive
strategy so should be used with `RuleDBForest`.
- `UnfusionFactory` that unfuses either all the rows or columns. Also non-productive.
- `FusableRowAndColumnPlacementFactory` places fusable rows and columns.
- `TrackedClassDB` used by `TrackedSearcher`
- counting for `GeneralizedSlidingStrategy` of rows (i.e., `rotate=True`)

### Fixed
- `Factor` was not factoring correctly with respect to component assumptions.
- `ComponentAssumption` are flipped when taking symmetries
- `Tiling.get_minimum_value` fixed for component assumptions
- `RearrangeAssumptionFactory` will ignore component assumptions
- `GriddedPermReduction.minimal_reqs` was removing requirements if they
were duplicates.
- `RequirementPlacement` algorithm didn't minimise obstructions correctly when
placing size 2 or higher gridded perms.
- added missing condition in `MonotoneSlidingFactory` for consecutive
values. Previous rules failing this condition will now raise
`StrategyDoesNotApply` if it fails this condition.
- `LocalVerificationStrategy` needs to be a `BasisAwareVerificationStrategy`
- `PointJumping` maps component assumption to component assumptions.
- `Tiling.all_symmetries` had a premature break statement that was removed
- `shift_from_spec` method would previously fail if any tiling had two or
more interleaving cells.

### Changed
- `TileScopePack.make_tracked` will add the appropriate tracking methods for
interleaving factors and make strategies tracked if it can be.
- The `GriddedPermReduction` limits the size of obstructions it tries to infer in
the `minimal_obs` method to the size of the largest obstruction already on the
tiling.
- The `SymmetriesFactory` takes a basis and will not return any symmetries where
any of the patterns of the obstruction are not subpatterns of some basis element.
If no basis is given, all symmetries are returned.
- `RequirementPlacement` adds empty cells when placing a point cell. This saves
some inferral in partial placements.
- Don't reinitialise in the `Tiling.from_dict` method.
- `GuidedSearcher` expands every symmetry
- `TileScopePack.pattern_placements` factors as an initial strategy.
- `is_component` method of assumptions updated to consider cell decomposition
- `AddAssumptionsStrategy.is_reverible` is now True when the assumption covers the
whole tiling.
- The default behavior for `RequirementInsertion` is to allow insertion of factorable
requirements
- `OneByOneVerificationStrategy` will look up permpal.com to find the generating
functions and min polys, and also use permpal specs for counting, sampling and
generating objects.
- The `kitchen_sinkify` function on `TileScopePack` now takes a level between 1 and 5
as input, which is used to determine how crazy the added strategies should be.

### Removed
- `AddInterleavingAssumptionsFactory`. The factor strategy now adds the relevant
assumptions where necessary directly, lowering the number of CVs needed.


## [3.1.0] - 2022-01-17
### Added
Expand Down
2 changes: 1 addition & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -573,7 +573,7 @@ You can make any pack use the fusion strategy by using the method
>>> print(pack)
Looking for recursive combinatorial specification with the strategies:
Inferral: row and column separation, obstruction transitivity
Initial: rearrange assumptions, add assumptions, factor, tracked fusion
Initial: rearrange assumptions, add assumptions, factor, point corroboration, tracked fusion
Verification: verify atoms, insertion encoding verified, one by one verification, locally factorable verification
Set 1: row placement

Expand Down
1 change: 1 addition & 0 deletions mypy.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
[mypy]
check_untyped_defs = True
warn_return_any = True
warn_unused_configs = True
warn_no_return = False
Expand Down
84 changes: 3 additions & 81 deletions pylintrc
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ limit-inference-results=100

# List of plugins (as comma separated values of python module names) to load,
# usually to register additional checkers.
load-plugins=
load-plugins=pylint.extensions.no_self_use

# Pickle collected data for later comparisons.
persistent=yes
Expand Down Expand Up @@ -63,6 +63,7 @@ confidence=
disable=missing-class-docstring,
too-few-public-methods,
unsubscriptable-object, # Pylint does not support Genric class see https://github.com/PyCQA/pylint/issues/3520
wrong-import-order, # isort is taking care of import order for us

cyclic-import,
no-member,
Expand All @@ -75,88 +76,16 @@ disable=missing-class-docstring,
inconsistent-return-statements,
invalid-name,
unused-argument,
bad-continuation,
missing-function-docstring,
missing-module-docstring,
print-statement,
parameter-unpacking,
unpacking-in-except,
old-raise-syntax,
backtick,
long-suffix,
old-ne-operator,
old-octal-literal,
import-star-module-level,
non-ascii-bytes-literal,
raw-checker-failed,
bad-inline-option,
locally-disabled,
file-ignored,
suppressed-message,
useless-suppression,
deprecated-pragma,
use-symbolic-message-instead,
apply-builtin,
basestring-builtin,
buffer-builtin,
cmp-builtin,
coerce-builtin,
execfile-builtin,
file-builtin,
long-builtin,
raw_input-builtin,
reduce-builtin,
standarderror-builtin,
unicode-builtin,
xrange-builtin,
coerce-method,
delslice-method,
getslice-method,
setslice-method,
no-absolute-import,
old-division,
dict-iter-method,
dict-view-method,
next-method-called,
metaclass-assignment,
indexing-exception,
raising-string,
reload-builtin,
oct-method,
hex-method,
nonzero-method,
cmp-method,
input-builtin,
round-builtin,
intern-builtin,
unichr-builtin,
map-builtin-not-iterating,
zip-builtin-not-iterating,
range-builtin-not-iterating,
filter-builtin-not-iterating,
using-cmp-argument,
eq-without-hash,
div-method,
idiv-method,
rdiv-method,
exception-message-attribute,
invalid-str-codec,
sys-max-int,
bad-python3-import,
deprecated-string-function,
deprecated-str-translate-call,
deprecated-itertools-function,
deprecated-types-field,
next-method-defined,
dict-items-not-iterating,
dict-keys-not-iterating,
dict-values-not-iterating,
deprecated-operator-function,
deprecated-urllib-function,
xreadlines-attribute,
deprecated-sys-function,
exception-escape,
comprehension-escape
use-symbolic-message-instead

# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option
Expand Down Expand Up @@ -223,13 +152,6 @@ max-line-length=100
# Maximum number of lines in a module.
max-module-lines=1000

# List of optional constructs for which whitespace checking is disabled. `dict-
# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}.
# `trailing-comma` allows a space between comma and closing bracket: (a, ).
# `empty-line` allows space-only lines.
no-space-check=trailing-comma,
dict-separator

# Allow the body of a class to be on the same line as the declaration if body
# contains single statement.
single-line-class-stmt=no
Expand Down
6 changes: 3 additions & 3 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@ def get_version(rel_path):
packages=find_packages(exclude=["*.tests", "*.tests.*", "tests.*", "tests"]),
long_description=read("README.rst"),
install_requires=[
"comb-spec-searcher==4.1.0",
"permuta==2.2.0",
"comb-spec-searcher==4.2.0",
"permuta==2.3.0",
],
python_requires=">=3.7",
python_requires=">=3.8",
include_package_data=True,
classifiers=[
"Development Status :: 5 - Production/Stable",
Expand Down
Loading
Loading