I managed to reproduce your error. To fix it you just have to declare the mixtures dtype as int64:
n = 1000
on_count = 3
schema_count = 10
pTri_given_on = 1.
pTri_given_not_on = .7
tri_delta_on = pTri_given_on - pTri_given_not_on
with pymc3.Model() as model:
# On
pOn = pymc3.Beta('pOn', alpha=on_count, beta=(schema_count - on_count))
on = pymc3.Bernoulli('on', p=pOn)
# Triangle
triangle_mixture_weights = [on, (1. - on)]
tri_giv_on = pymc3.Bernoulli.dist(pTri_given_not_on + tri_delta_on)
tri_giv_not_on = pymc3.Bernoulli.dist(pTri_given_not_on)
triangle = pymc3.Mixture('triangle', w=triangle_mixture_weights,
comp_dists=[tri_giv_on, tri_giv_not_on],
shape=2, dtype="int64")
res = pymc3.sample(n)
Note that you havent passed observed to triangle. When I did, everything worked regardless of passing dtype or not.