Code Monkey home page Code Monkey logo

kiwi's People

Contributors

bwagner avatar chriscarini avatar data-man avatar dwillmer avatar felipealmeida avatar hugovk avatar inffinite avatar jklymak avatar jmroot avatar johnthagen avatar jwiggins avatar maebert avatar matthieudartiailh avatar maujin111 avatar ossdev07 avatar paulkernfeld avatar pgrimaud avatar philippe91 avatar qix- avatar qulogic avatar sccolbert avatar sirlynix avatar srinivas32 avatar totph avatar zougloub avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kiwi's Issues

No way to weight constraints of equal strength

As far as I know, the default implementation of Cassowary allows for "weighting" constraints of equal strength.
In short: If two constraints of equal strength existed and both can't be satisfied at once, the one with greater weight would be prioritized.

Why has this been opted out?

Inconsistent state

On large LPs I have seen the kiwi solver return values that don't satisfy the constraints even though the problem is feasible. We then remain in such an inconsistent state after further changes of the constraints. Reseting the solver seems to solve the issue.

solver not always deterministic....

We are using kiwi solver in Matplotlib for our constrained layout system. It usually works great, though we can ocasionally be hit by #15

Equally mysterious, is that very occasionally one of our complicated tests fails to find a good solution, doesn't give an error. I think we are OK with that outcome (optimization routines do not always find an optimal solution), but we were wondering if it is possible to make the outcome more deterministic? Is there is a random starting point in the optimization routine, and maybe its possible to set a seed to a single value so that "random" point is the same for each test?

Of course the fact that we get an un-optimal response sometimes possibly means the constraints have not been set up properly. But its hard to know how to test for that and see where the logic is incorrect. If we suggest values that are from a working solution will that allow it to optimize better?

Thanks a lot for any suggestions.

See matplotlib/matplotlib#12683 and matplotlib/matplotlib#12433

New Release?

Python 3 support has been in the repository for a while thanks to @jwiggins, but there hasn't been a release which includes this. It would be helpful if we could have such a release for downstream projects (particularly Enable and Chaco).

Manual solve

This is mostly an optimization issue, but in essence you sometimes know when say 10 variables will be edited at once, and there is no need to solve in between each.

An option to set AutoSolve = true/false would be preferable (like the original implementation), with a dedicated ManualSolve()-method.

C++ Example Usage?

Can't find a C++ example, and parsing the Python binding code is a bit difficult -
Are there some available?

unknown vars count

hi,
thanks for great library, I am trying to use it for my gui layout and I'm stuck with simple problem: the position and size of my widgets are kiwi Variables, i don't know how many of them (widgets) there will be, but to calculate the proper layout i need a constraint that deals with them all, for example i want to say that the sum of the widths of all widgets should be equal to the size of the parent widget, how can i do that?

i want' to write sth like that
solver.addConstraint( width0 + width1 + width2 + (...) == parentWidth);

cheers

install w/ python3 `distribute` issue

Hi,

This library depends on distribute, which works fine for python 2.7, but throws errors for python 3.6:

Collecting distribute
  Using cached distribute-0.7.3.zip
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
....
   AttributeError: module 'importlib._bootstrap' has no attribute 'SourceFileLoader'

Quick internet searches just say "too bad, you are using the wrong version of python". Does kiwi really need distribute?

"ImportError: DLL load failed" on fresh Windows 10 installation

I was trying to import matplotlib (which uses kiwisolver) and it failed with ImportError: DLL load failed and it turned out it was kiwisolver which actually failed to import.

The problem was solved by installing Microsoft Visual C++ redistributable 2015. Some dependencies (maybe fore precompiled binaries) must have been missing on the fresh/clean install of Windows 10.

See also:
https://stackoverflow.com/a/38350913/4993453
matplotlib/matplotlib#14303

kiwisolver build fails on TravisCI

The TravisCI build fails when trying to install kiwisolver with the following error:

Searching for kiwisolver

Reading https://pypi.python.org/simple/kiwisolver/

Best match: kiwisolver 0.1.2

Downloading https://pypi.python.org/packages/source/k/kiwisolver/kiwisolver-0.1.2.zip#md5=33ebf7f5b90d8ff05f31850d6127ddde

Processing kiwisolver-0.1.2.zip

Writing /tmp/easy_install-CN0qs5/kiwisolver-0.1.2/setup.cfg

Running kiwisolver-0.1.2/setup.py -q bdist_egg --dist-dir /tmp/easy_install-CN0qs5/kiwisolver-0.1.2/egg-dist-tmp-CnHX9L

warning: no previously-included files found matching 'build.py'

error: Setup script exited with error: SandboxViolation: os.open('/tmp/tmpWHRYWb/ZyaJNy', 131266, 384) {}

The package setup script has attempted to modify files on your system

that are not within the EasyInstall build area, and has been aborted.

This package cannot be safely installed by EasyInstall, and may not

support alternate installation locations even if you run its setup

script by hand. Please inform the package's author and the EasyInstall

maintainers to find out if a fix or workaround is available.

The command "python setup.py develop" failed and exited with 1 during .

Your build has been stopped.

Any ideas why it's trying to access /tmp/ or how to fix?

'gcc' failed with exit status 1

Hi, I encountered an issue regarding kiwisolver while trying to install the matplot package. Here is the error I am getting:

Building wheels for collected packages: kiwisolver
  Building wheel for kiwisolver (setup.py) ... error
  ERROR: Complete output from command /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 -u -c 'import setuptools, tokenize;__file__='"'"'/private/var/folders/y0/dvvbdzp11651gmh8z1xqh8mr0000gp/T/pip-install-n8lt67v6/kiwisolver/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /private/var/folders/y0/dvvbdzp11651gmh8z1xqh8mr0000gp/T/pip-wheel-ilzti1fg --python-tag cp36:
  ERROR: running bdist_wheel
  running build
  running build_ext
  building 'kiwisolver' extension
  creating build
  creating build/temp.macosx-10.6-intel-3.6
  creating build/temp.macosx-10.6-intel-3.6/py
  gcc -fno-strict-aliasing -Wsign-compare -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch i386 -arch x86_64 -g -I. -I/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m -c py/kiwisolver.cpp -o build/temp.macosx-10.6-intel-3.6/py/kiwisolver.o
  warning: include path for stdlibc++ headers not found; pass '-stdlib=libc++' on the command line to use the libc++ standard library instead [-Wstdlibcxx-not-found]
  In file included from py/kiwisolver.cpp:9:
  In file included from ./kiwi/kiwi.h:9:
  ./kiwi/constraint.h:9:10: fatal error: 'map' file not found
  #include <map>
           ^~~~~
  1 warning and 1 error generated.
  error: command 'gcc' failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for kiwisolver
  Running setup.py clean for kiwisolver
Failed to build kiwisolver
Installing collected packages: kiwisolver, cycler, matplotlib

Many-constraints issue

OK, more a question than an issue... I don't think anything is buggy per-se, but would appreciate some advice.

In matplotlib we do the layout using kiwi, and it works quite well.

However, I am trying to add a constraint to set the aspect-ratio of an axes: (i.e. c = axlb.width == aspect * axlb.height | strength), and suddenly the solver cannot handle this for many axes. For example 10x10 works fine w/o this extra constraint; but 5x5 won't converge with this constraint; 4x4 does converge, and the constraints work as expected, so I think I did them properly. By "won't converge" I mean it either just sits and spins until I kill the process, or it returns with and "unbounded" solution error.

I think what is happening is that the problem was independent in x and y before. i.e. the width calculations never needed to know about the height calculations, though I never consciously separated them. So I think the solver is solving something like 2*N problem.

However, when I introduce the constraint above, suddenly the widths and heights depend on each other, and I think the problem effectively blossoms to an N-squared problem.

The fact of the matter is that the overall layout doesn't particularly care about this new constraint - its an inner "box" that has one of its two dimensions constrained by the parent box size, and the other one by the aspect ratio. The parent box size doesn't change due to this inner box - the only reason I need the inner box is to line up the top of a colorbar with it.

So, have I just run up against a limitation of kiwi? Or is there something I should be doing to make this more robust? We could just say "you can't do that w/ a 5x5 array of axes" but that is hard to enforce.

sig abort after kiwi::InternalSolverError

Hello,
I am using kiwi on a project to move temporal element with flexible time intervals between them code here (https://github.com/OSSIA/i-score/tree/dev).

When manipulating, I often get a crash right after kiwi throw an InternalSolverError.

outuput
terminate called after throwing an instance of 'kiwi::InternalSolverError'
  what():  Dual optimize failed.
done debugging.
0   raise           0x7ffff546b5f8  
1   abort           0x7ffff546ca7a  
2   __gnu_cxx::__verbose_terminate_handler  /usr/lib/libstdc++.so.6 95  0x7ffff5d7fb3d  
3   __cxxabiv1::__terminate /usr/lib/libstdc++.so.6 47  0x7ffff5d7d996  
4   __cxa_call_terminate    /usr/lib/libstdc++.so.6 54  0x7ffff5d7c989  
5   __cxxabiv1::__gxx_personality_v0    /usr/lib/libstdc++.so.6 676 0x7ffff5d7d2e5  
6   _Unwind_RaiseException_Phase2   /usr/lib/libgcc_s.so.1  62  0x7ffff57ebed3  
7   _Unwind_Resume  /usr/lib/libgcc_s.so.1  230 0x7ffff57ec3f7  
8   kiwi::impl::SolverImpl::dualOptimize    solverimpl.h    605 0x7fffdb3af380  
9   kiwi::impl::SolverImpl::DualOptimizeGuard::~DualOptimizeGuard   solverimpl.h    58  0x7fffdb3acf7d  
10  kiwi::impl::SolverImpl::suggestValue    solverimpl.h    284 0x7fffdb3adf82  
11  kiwi::Solver::suggestValue  solver.h    120 0x7fffdb3afcdb  
12  CSPDisplacementPolicy::computeDisplacement  CSPDisplacementPolicy.cpp   61  0x7fffdb3dee32  
13  Scenario::Command::MoveEvent<CSPDisplacementPolicy>::update MoveEvent.hpp   106 0x7fffdb3dc588  
14  Scenario::Command::MoveEvent<CSPDisplacementPolicy>::MoveEvent(Path<ScenarioModel>&&, id_base_t<EventModel, boost::optional<int>> const&, TimeValue_T<double> const&, ExpandMode)   MoveEvent.hpp   82  0x7fffdb3dc348  
15  MoveEventCSPFactory::make(Path<ScenarioModel>&&, id_base_t<EventModel, boost::optional<int>> const&, TimeValue_T<double> const&, ExpandMode)    MoveEventCSPFactory.cpp 11  0x7fffdb3dc07c  
16  MoveEventMeta::MoveEventMeta(Path<ScenarioModel>&&, id_base_t<EventModel, boost::optional<int>> const&, TimeValue_T<double> const&, ExpandMode) MoveEventMeta.cpp   11  0x7fffdd215ac3  
17  std::make_unique<MoveEventMeta, Path<ScenarioModel>, id_base_t<EventModel, boost::optional<int>>&, TimeValue_T<double>&, ExpandMode const&>(Path<ScenarioModel>&&, id_base_t<EventModel, boost::optional<int>>&, TimeValue_T<double>&, ExpandMode const&)   unique_ptr.h    765 0x7fffdd2b51fe  
18  SingleOngoingCommandDispatcher<MoveEventMeta>::submitCommand<Path<ScenarioModel>, id_base_t<EventModel, boost::optional<int>>&, TimeValue_T<double>&, ExpandMode const&>(Path<ScenarioModel>&&, id_base_t<EventModel, boost::optional<int>>&, TimeValue_T<double>&, ExpandMode const&)  SingleOngoingCommandDispatcher.hpp  30  0x7fffdd2b49a7  
19  MoveEventState::MoveEventState(ScenarioStateMachine const&, Path<ScenarioModel> const&, iscore::CommandStack&, iscore::ObjectLocker&, QState *)::{lambda()#1}::operator()() const   MoveStates.cpp  124 0x7fffdd2b1fef  
... <plus>

I am confused, do you think is is comming from my side?

regards,
Simon.

ps: sorry if bad english

Testing an installed kiwisolver

Thanks for the package.

@tacaswell pointed me here, to ask if I could help with building wheels, so we can use kiwi for Matplotlib.

I had a quick shot, but there is a problem I would like to ask your advice on:

I don't think it's possible to test an installed kiwisolver. At least, when I try:

pip install .
mkdir tmp
cd tmp
py.test --pyargs kiwisolver

I get:

=============================================================== test session starts ===============================================================
platform darwin -- Python 3.5.1, pytest-3.4.0, py-1.5.2, pluggy-0.6.0
rootdir: /Users/mb312/dev_trees/kiwisolver-wheels/kiwi, inifile:
collecting 0 items                                                                                                                                
========================================================== no tests ran in 0.00 seconds ===========================================================
ERROR: not found: /Users/mb312/.virtualenvs/test3/lib/python3.5/site-packages/kiwisolver.cpython-35m-darwin.so
(no name '/Users/mb312/.virtualenvs/test3/lib/python3.5/site-packages/kiwisolver.cpython-35m-darwin.so' in any of [])

This is a killer for wheels, because we obviously want to make sure that the installed wheel is functioning correctly, before shipping. Do you have any suggestions?

Changing expression constant

Hello, what is the proper way to animate the constraint? With iOS/MacOS auto layout you would normally animate the constant of an already added constraint, but I can't see a proper way to do it with kiwi.

[kiwijs] Constraint C Strength affects the priority at which constraint A beats constraint B

In this setup, there is initially one variable and two constraint. One Constraint (A) is an inequality, the other constraint (B) is an equality used to set a value on the variable. B can break A or not.

priority is a strength created like this : kiwi.Strength.create(0, 1, 0, priority).

A: variable >= 100 (priority 501)
B: variable = 90 (500)

After solving, the result is variable = 100 and is the expected result.

Now, if I add another equality constraint C with a very low priority variable = 50 (10) the variable value after solving is 90. It means that adding this constraint helps constraint B to break constraint A even if constraint B priority < A priority && C priority < A&B priority.

With the C constraint, the A priority needed to break constraint B is equal to (B + C).

A: variable >= 100 (501)
B: variable = 90 (500)
C: variable = 10 (10)
=> variable == 90 (Not expected)
A: variable >= 100 (511)
B: variable = 90 (500)
C: variable = 10 (10)
=> variable == 100 (Expected)

I also tried to suggestValue(variable, 90) instead of using constraint B and got the same results.

It seems that a third constraint affects the priority at which a constraint beats another , even if this third constraint priority is lower than the two other constraints fighting.

Is this a bug or the regular behavior ?

Test here: https://runkit.com/cacaodev/kiwi-bug (Hit the green button to run the test).

Sciter is using Kiwi

Just let you know that Sciter Engine is using Kiwi for some flow calculations.

This style:

section {
 flow: grid(1 2,
            3 3);

with this markup

<section>
   <div>1</div>
   <div>2</div>
   <div>3 (second row, spans two columns)</div>
</section>

invokes kiwi constraint solver.

Naming

It seems that there is a name conflict with kiwi on pypi would it be possible to resolve this?

Does not even compile ...

This library use non-existent STL like std::auto_ptr and std::binary_function

Are there plans to fix this?

STL containers are too slow in debug

I have around 200 variables and 2000 constraints, this works ok in release (takes around 0.2s to add everything), but times in debug are ridiculous: around 7s. After profiling a bit, it looks like all the time is taken in STL/Loki stuff:

image

Would be nice to workaround it somehow, maybe using custom memory efficient containers? Or maybe add ability to prepare solver state in offline and just load it as-is in online without doing much work.

Leaking rows on failed addConstraint

SolverImpl::addConstraint can fail in this code:
if( subject.type() == Symbol::Invalid )
{
if( !addWithArtificialVariable( *rowptr ) )
throw UnsatisfiableConstraint( constraint );

if addWithArtificialVariable returns false and will throw an exception. That is fine except for the fact that addWithArtificialVariable adds a row which is not deleted on failure.

Use as a regular LP solver -> no API to forcibly set the objective.

The only way I could find to specify the objective function for the LP was to have all the constraint strengths be equal to zero except one, which is made so that the corresponding slack variable is what I want to minimize (up to a constant).

Is there a more elegant way to do this?

Provide wheel for linux_armv7l

Hi Nucleic Team!

I'm building a system for an embedded linux_armv7l platform. It makes use of scikit-image, which has kiwi as a dependency.

Is there anyway you could find it in your heart to build a wheel for this platform/architecture? I'm struggling greatly to manually build a wheel as the platform does not come equipped with a toolchain (and installing one is off the table).

Thanks for reading, and I hope to hear from someone soon! ๐Ÿ˜„

Constraint with higher priority don't have effect.

from kiwisolver import Solver, Variable
s = Solver()
w = Variable('w')
s.addConstraint((w==1) | 1001)
s.addConstraint((w==2) | 1002)
s.addConstraint((w==3) | 1003)
s.addConstraint((w==4) | 1004)
s.updateVariables()
s.dump()
print('value of w:', w.value())

Output:

Objective
---------
4008 + 2002 * e3 + 2004 * e5 + 2002 * e6 + 4 * e7 + 2008 * e8

Tableau
-------
v1 | 3 + 1 * e6 + -1 * e7
e2 | 2 + 1 * e3 + 1 * e6 + -1 * e7
e4 | 1 + 1 * e5 + 1 * e6 + -1 * e7
e9 | 1 + -1 * e6 + 1 * e7 + 1 * e8

Infeasible
----------

Variables
---------
w = v1

Edit Variables
--------------

Constraints
-----------
1 * w + -4 == 0  | strength = 1004
1 * w + -3 == 0  | strength = 1003
1 * w + -2 == 0  | strength = 1002
1 * w + -1 == 0  | strength = 1001


('value of w:', 3.0)

The value of w should be 4.0.

Question about JS solver - _addWithArtificialVariable

I want to optimize the JS solver (especially array usage) and before I need to ensure my tests cover 100% of all code path.
Can you give a simple constraints example where _addWithArtificialVariable is beeing used.

Failing test on Windows / Python 2.7 + 3.4

Format of exponent in output string appears to be different from other platforms on Windows Python 2.7 and 3.4:

================================== FAILURES ===================================
__________________________ test_constraint_creation ___________________________
    def test_constraint_creation():
        """Test constraints creation and methods.
    
        """
        v = Variable('foo')
        c = Constraint(v + 1, '==')
    
        assert c.strength() == strength.required and c.op() == '=='
        e = c.expression()
        t = e.terms()
        assert (e.constant() == 1 and
                len(t) == 1 and t[0].variable() is v and t[0].coefficient() == 1)
    
>       assert str(c) == '1 * foo + 1 == 0 | strength = 1.001e+09'
E       AssertionError: assert '1 * foo + 1 ... = 1.001e+009' == '1 * foo + 1 =...h = 1.001e+09'
E         - 1 * foo + 1 == 0 | strength = 1.001e+009
E         ?                                       -
E         + 1 * foo + 1 == 0 | strength = 1.001e+09
..\kiwi\py\tests\test_constraint.py:25: AssertionError

Maybe worth a platform check in the test?

Can cassowary solve for modulo and modulus?

So the two operations that would make a lot of constraints easier to model (some of which are impossible without) are modulo (a % b) and modulus (absolute value, or |a|). I know the absolute value one might be tricky API-wise since there's no operator for it, though a == b.abs() would be acceptable I would think.

Is this something the solver could actually solve? The operations are a bit much for me to comprehend without understanding cassowary at its core I feel like, or else I'd either 1) know the answer, or 2) submit a PR.

required constraints of zero-size not handled correctly

from kiwisolver import *


x1 = Variable('x1')
w1 = Variable('w1')
x2 = Variable('x2')
w2 = Variable('w2')
w = Variable('w')


cns = [
    w >= 0,
    x1 >= 0,
    x2 >= 0,
    w1 >= 0,
    w2 >= 0,

    x1 == 0.000,
    w1 == 0.000,

    x1 + w1 == x2,

    x2 + w2 == w,

]

solver = Solver()
for cn in cns:
    solver.addConstraint(cn)

solver.addEditVariable(w, strength.medium)

for value in (20,):
    solver.suggestValue(w, value)
    solver.updateVariables()
    print 'x1', x1.value()
    print 'w1', x1.value()
    print
    print 'x2', x2.value()
    print 'w2', w2.value()
    print
    print 'w', w.value()

results are incorrect:

x1 20.0
w1 20.0

x2 20.0
w2 0.0

w 20.0

change x1 and w1:

    x1 == 0.001,
    w1 == 0.001,

results are correct:

x1 0.001
w1 0.001

x2 0.002
w2 19.998

w 20.0

py27+kiwi doesn't like `from __future__ import unicode_literals`

The following fails when using python 2.7 (works fine w/ python 3.6).

from __future__ import unicode_literals

import kiwisolver as kiwi

Variable = kiwi.Variable
solver = kiwi.Solver()
top = Variable('boo')

with:

python testkiwi27.py
Traceback (most recent call last):
  File "testkiwi27.py", line 7, in <module>
    top = Variable('boo')
TypeError: __new__() argument 1 must be string, not unicode

If I remove the __future__ it works fine, but the project I'm working with uses the future, so I can't really remove it (matplotlib).

I can cast all kiwi string arbuments to String, but maybe its a better solution for kiwi to recognize Unicode or do the cast itself?

Other string arguments fail as well (i.e. the strength arguments).

Thanks!

Stay constraints

I came across this library yesterday, and I'm very impressed how much smaller and faster it is compared to the original implementation! One of the things I noticed is that there are no stay constraints. I always found them a bit of a nuisance, and if it is possible to remove them I'd like to do this as well for my own C++ Cassowary lib, Rhea.

How did you redesign stay constraints? Are they implicit for all variables now?

License

Would you consider switching to MIT license? I love MIT for its simplicity.

MacOSX: avoid libstdc++ vs libc++ error

One option would be to pass -stdlib=libc++ as an option to the compiler through setuptools. It is probably the easiest way and should a minimal unwanted effect. If anybody has an opinon on this I would be interested to hear it.

no tag for version 0.1.3

I'm just wondering why there is no git tag for version 0.1.3, even though on PyPI kiwisolver 0.1.3 is available.

ImportError: No module named 'kiwisolver'

Hi,

I am getting the error when I'm executing the command python3 legacy/train.py --logtostderr --train_dir=training/ --pipeline_config_path=training/ssd_mobilenet_v1_pets.config.

So, I have tried to install kiwisolver by following command pip3 install kiwisolver. Even though the error not getting resolved. So, I went checked into the kiwisolver installed directory. Only one directory is available in the name "kiwisolver-1.1.0.dist-info". No kiwisolver libraries has been installed. How to install kiwisolver properly?

I am working on ubuntu 16.04.

Thanks.

variables map grows in size

In dynamic environment, when constraints added and removed frequently, solver's variables map grows in size. It is because variable never removed from map even if every constraint it is used in are removed. Here is the code:

from kiwisolver import *

solver = Solver()
for i in range(10):
    v = Variable("var%d"%i)
    c = v == 100;
    solver.addConstraint(c)
    solver.removeConstraint(c)
solver.dump()

I expected no variables, but got:

Variables
---------
var0 = v1
var3 = v7
var7 = v15
var2 = v5
var9 = v19
var6 = v13
var8 = v17
var5 = v11
var1 = v3
var4 = v9

Welcome to overconstrained.slack.com

I hope you guys will join us on overconstrained.slack.com. Request an invite by sending a mail to [email protected] or let me know on this thread.

There we can discuss all things cassowary and friends. Peeps from The Grid, Rhea and Auto Layout for iOS is there.

ImportError

Hi there,

I have written a program that imports kiwisolver through one of the other modules that it uses, and am trying to run it on Linux Mint 18.0. I have installed the latest version of kiwisolver from source i.e. by running python3 setup.py install. Even with kiwisolver installed, I get the following error:

Traceback (most recent call last):
File "/home/justin/Methodology_Rotation1/Quantum_Neuron_Sim/Redfield_Simulation/redfield_test.py", line 5, in
import matplotlib.pyplot as plt
File "/usr/local/lib/python3.5/dist-packages/matplotlib/pyplot.py", line 31, in
import matplotlib.colorbar
File "/usr/local/lib/python3.5/dist-packages/matplotlib/colorbar.py", line 38, in
import matplotlib.gridspec as gridspec
File "/usr/local/lib/python3.5/dist-packages/matplotlib/gridspec.py", line 29, in
import matplotlib._layoutbox as layoutbox
File "/usr/local/lib/python3.5/dist-packages/matplotlib/_layoutbox.py", line 23, in
import kiwisolver as kiwi
ImportError: No module named 'kiwisolver'

Please let me know what changes I should make to setup.py in order to ensure that kiwisolver installs correctly.

Thank you very much for your help.

package requirements: setuptools

Hi,

when we packaged kiwisolver with conda we discovered that the package has a dependency to setuptools.

Is this dependency really required for kiwisolver to run? I cannot see any use of the package anywhere in the source code.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.