ZNE is incompatible with AdaptVQE()

Describe the bug
I have been trying to use AdaptVQE() with ZNE by setting the resilience_level but have been running into the following error:
2023-03-30T15:28:36.439337986Z Traceback (most recent call last):
2023-03-30T15:28:36.439366661Z   File "/provider/programruntime/program_starter_wrapper.py", line 91, in execute
2023-03-30T15:28:36.439416418Z     final_result = self.main(backend, self.messenger, **self.user_params)
2023-03-30T15:28:36.439427471Z   File "/code/program.py", line 1507, in main
2023-03-30T15:28:36.439438964Z     result = job.result()
2023-03-30T15:28:36.439450175Z   File "/opt/app-root/lib64/python3.9/site-packages/zne/meta/job.py", line 62, in result
2023-03-30T15:28:36.439460209Z     result = self.zne_strategy.mitigate_noisy_result(result)
2023-03-30T15:28:36.439469620Z   File "/opt/app-root/lib64/python3.9/site-packages/zne/zne_strategy.py", line 257, in mitigate_noisy_result
2023-03-30T15:28:36.439481389Z     val, meta = self.extrapolator.extrapolate_zero(data)
2023-03-30T15:28:36.439493970Z   File "/opt/app-root/lib64/python3.9/site-packages/zne/extrapolation/extrapolator.py", line 78, in extrapolate_zero
2023-03-30T15:28:36.439532518Z     return self.infer(0, data)
2023-03-30T15:28:36.439543991Z   File "/opt/app-root/lib64/python3.9/site-packages/zne/extrapolation/extrapolator.py", line 70, in infer
2023-03-30T15:28:36.439554151Z     model, metadata = self.fit_regression_model(data)
2023-03-30T15:28:36.439562787Z   File "/opt/app-root/lib64/python3.9/site-packages/zne/extrapolation/extrapolator.py", line 56, in fit_regression_model
2023-03-30T15:28:36.439572911Z     data = self._validate_data(data)
2023-03-30T15:28:36.439587111Z   File "/opt/app-root/lib64/python3.9/site-packages/zne/extrapolation/extrapolator.py", line 102, in _validate_data
2023-03-30T15:28:36.439597188Z     raise TypeError(
2023-03-30T15:28:36.439637867Z TypeError: Invalid data provided, expeceted Sequence[Sequence[float, float, float]].

This seems related to the way that the results from the job are formatted as the error happens during the extrapolation procedure while it tries to read the results.
Steps to reproduce
I'll attach a python script in the next comment to reproduce the issue. Note that it requires PySCF and qiskit-nature.
The retry_primitves.py is so that it can implement a max_retries option on the estimator and was taken from #598. The problem persists even if you use the standard Runtime Estimator().
Expected behavior
Ideally, it would work like it does when you use standard VQE. You can modify the attached script to use Standard VQE and it runs without issues.
Suggested solutions
I'm unsure if the modification would need to be in AdaptVQE() or in the ZNE files. I've taken a look at the files in the zne-prototype repo hoping they would be similar but it didn't help to come up with a solution.
Additional Information

qiskit-ibm-runtime version: 0.9.1
Python version: 3.9
Operating system: Mac OS 12.6 arm64

Python script to reproduce the issue
from qiskit.algorithms import VQE, NumPyMinimumEigensolver, NumPyEigensolver #Algorithms

#Qiskit odds and ends
from qiskit.circuit.library import EfficientSU2, EvolvedOperatorAnsatz
from qiskit.algorithms.optimizers import COBYLA, SPSA, SLSQP, L_BFGS_B
from qiskit.opflow import Z2Symmetries, X, Y, Z, I, PauliSumOp, Gradient, NaturalGradient
from qiskit import IBMQ, BasicAer, Aer, transpile
from qiskit.utils import QuantumInstance, algorithm_globals
from qiskit.utils.mitigation import CompleteMeasFitter #Measurement error mitigatioin
from qiskit.tools.visualization import circuit_drawer
from qiskit.providers.aer import AerSimulator
from qiskit.providers.aer.noise import NoiseModel
from qiskit.algorithms.minimum_eigensolvers import VQE, AdaptVQE, MinimumEigensolverResult
from qiskit.primitives import Estimator
from qiskit_aer.primitives import Estimator as AerEstimator
from qiskit.quantum_info import SparsePauliOp

#qiskit_nature
from qiskit_nature.second_q.drivers import PySCFDriver, MethodType
from qiskit_nature.second_q.formats.molecule_info import MoleculeInfo
from qiskit_nature.units import DistanceUnit
from qiskit_nature.second_q.circuit.library import UCCSD, PUCCD, SUCCD, HartreeFock, CHC, VSCF
from qiskit_nature.second_q.operators.fermionic_op import FermionicOp
from qiskit_nature.second_q.transformers import ActiveSpaceTransformer , FreezeCoreTransformer
from qiskit_nature.second_q.problems import ElectronicStructureProblem, EigenstateResult
from qiskit_nature.second_q.mappers import QubitConverter, ParityMapper, BravyiKitaevMapper, JordanWignerMapper
from qiskit_nature.second_q.algorithms.ground_state_solvers.minimum_eigensolver_factories.vqe_ucc_factory import VQEUCCFactory
from qiskit_nature.second_q.algorithms.ground_state_solvers.minimum_eigensolver_factories.numpy_minimum_eigensolver_factory import NumPyMinimumEigensolverFactory
from qiskit_nature.second_q.algorithms.ground_state_solvers import GroundStateEigensolver
from qiskit_nature.second_q.algorithms.excited_states_solvers.eigensolver_factories.numpy_eigensolver_factory import NumPyEigensolverFactory
from qiskit_nature.second_q.algorithms.excited_states_solvers import QEOM, ExcitedStatesEigensolver

#Runtime
from qiskit_ibm_runtime import (QiskitRuntimeService, Session,
                                Estimator as RuntimeEstimator)
from qiskit_ibm_runtime.options import Options, ResilienceOptions, SimulatorOptions, TranspilationOptions, ExecutionOptions
from retry_primitives import RetryEstimator

#PySCF
from functools import reduce
import scipy.linalg
from pyscf import scf
from pyscf import gto, dft
from pyscf import mcscf, fci
from functools import reduce
from pyscf.mcscf import avas, dmet_cas

#Python odds and ends
import matplotlib
import matplotlib.pyplot as plt
import pylab
import numpy as np
import os
import pyscf
from IPython.display import display, clear_output
import mapomatic as mm

from datetime import datetime

## Python program to store list to file using pickle module
import pickle

# write list to binary file
def write_list(a_list,filename):
    # store list in binary file so 'wb' mode
    with open(filename, 'wb') as fp:
        pickle.dump(a_list, fp)
        print('Done writing list into a binary file')

def write_dict(a_dict,filename):
    # store list in binary file so 'wb' mode
    with open(filename, 'wb') as fp:
        pickle.dump(a_dict, fp,protocol=pickle.HIGHEST_PROTOCOL)
        print('Done writing dict into a binary file')

# Read list to memory
def read(filename):
    # for reading also binary mode is important
    with open(filename, 'rb') as fp:
        n_list = pickle.load(fp)
        return n_list

IBMQ.load_account()
service = QiskitRuntimeService(channel='ibm_quantum')
#set Backends
#simulators
seed=42

def callback(eval_count, param, val,meta):
    # Overwrites the same line when printing
    counts.append(eval_count)
    interim_info['counts'].append(eval_count)
    values.append(val)
    interim_info['values'].append(val)
    params.append(param)
    interim_info['params'].append(param)
    meta_dicts.append(meta)
    mean=np.mean(values)
    std=np.std(values)

    write_dict(interim_info,f'MG+H2O_mont_4qubit_zne_interim_info_{int(distances[0]*10)}')
    display("Evaluation: {}, Energy: {}, Mean: {}, STD: {}, Metadata: {}".format(eval_count, val,mean,std, meta))
    clear_output(wait=True)

def adapt_solver(distances,mapper,optimizer,freeze_core):

    dists=[]
    results=[]
    problems=[]
    hf_energies=[]
    initial_points=[]
    ops=[]
    ansatze=[]
    for dist in distances:
        #Driver
        driver,og_problem=make_driver(dist)
        #Qubit_Op
        qubit_op, problem, converter,hf_energy = make_qubit_op(dist,og_problem,mapper,freeze_core)
        ops.append(qubit_op)
        problems.append(problem)
        #Initial State
        init_state = HartreeFock(problem.num_spatial_orbitals, problem.num_particles, converter)

        #ansatz
        ansatz = UCCSD(num_spatial_orbitals=problem.num_spatial_orbitals,num_particles=problem.num_particles,qubit_converter=converter,initial_state=init_state)

        operator_pool = []
        for op in ansatz.operators:
            sop = op.primitive
            for pauli, coeff in zip(sop.paulis, sop.coeffs):
                if sum(pauli.x & pauli.z) % 2 == 0:
                    continue
            operator_pool.append(PauliSumOp(coeff * SparsePauliOp(pauli)))

        ansatz = EvolvedOperatorAnsatz(
        operators=operator_pool,
        initial_state=init_state,
        )
        ansatze.append(ansatz)

        # Set initial parameters of the ansatz
        if len(initial_points)!=0 and ops[-1].num_qubits==ops[-2].num_qubits:
            initial_point=initial_points[-1]
        elif len(initial_points)!=0:
            old_ans=ansatz[-1]
            if ansatz.num_parameters>old_ans.num_parameters:
                initial_point=np.append(initial_points[-1],np.zeros(ansatz.num_parameters - old_ans.num_parameters))
            else:
                to_remove=old_ans.num_parameters-ansatz.num_parameters
                initial_point=np.delete(initial_points[-1],np.arange(-1,-to_remove-1,-1))
        else:
            #initial_point = np.pi/4 * np.random.rand(ansatz.num_parameters)
            initial_point= np.zeros(ansatz.num_parameters)

        estimator = Estimator([ansatz], [qubit_op])

        counts = []
        values = []
        deviation = []

        custom_vqe =VQE(estimator=estimator, ansatz=ansatz, optimizer=optimizer,initial_point=initial_point, callback=callback)

        adapt_vqe=AdaptVQE(custom_vqe)
        adapt_vqe.supports_aux_operators = lambda: True
        adapt_vqe.threshold=1e-3
        adapt_vqe.max_iterations=4
        adapt_vqe.delta=1e-4

        solver = GroundStateEigensolver(converter, adapt_vqe)
        result = solver.solve(problem)

        initial_points.append(result.raw_result.optimal_point)
        results.append(result)
        dists.append(dist)
        hf_energies.append(hf_energy)

    return results, problems ,distances, hf_energies

def real_solver(distances, mapper, optimizer,freeze_core,est_options, device):

    dists=[]
    results=[]
    problems=[]
    hf_energies=[]
    initial_points=[]
    ops=[]
    ansatze=[]

    for dist in distances:
        #Driver
        driver,og_problem=make_driver(dist)
        #Qubit_Op
        qubit_op, problem, converter,hf_energy = make_qubit_op(dist,og_problem,mapper,freeze_core)
        ops.append(qubit_op)
        problems.append(problem)
        #Initial State
        init_state = HartreeFock(problem.num_spatial_orbitals, problem.num_particles, converter)

        #ansatz
        #ansatz = UCCSD(num_spatial_orbitals,num_particles,converter)

        ansatz = UCCSD(num_spatial_orbitals=problem.num_spatial_orbitals,num_particles=problem.num_particles,qubit_converter=converter,initial_state=init_state)

        operator_pool = []
        for op in ansatz.operators:
            sop = op.primitive
            for pauli, coeff in zip(sop.paulis, sop.coeffs):
                if sum(pauli.x & pauli.z) % 2 == 0:
                    continue
            operator_pool.append(PauliSumOp(coeff * SparsePauliOp(pauli)))

        ansatz = EvolvedOperatorAnsatz(
        operators=operator_pool,
        initial_state=init_state,
        )
        ansatze.append(ansatz)
        #ansatz = EfficientSU2(num_qubits=qubit_op.num_qubits,su2_gates='ry', entanglement='linear', reps=3, initial_state=init_state)

        #ansatz_opt = transpile(ansatz, backend=provider.get_backend(device),optimization_level=3,routing_method='sabre')
        #small_qc = mm.deflate_circuit(ansatz_opt)
        #layouts = mm.matching_layouts(small_qc, provider.get_backend(device))
        #scores = mm.evaluate_layouts(small_qc, layouts, provider.get_backend(device))
        #ansatz = transpile(small_qc, backend=provider.get_backend(device),initial_layout=scores[0][0],optimization_level=3,routing_method='sabre')

        # Set initial parameters of the ansatz
        if len(initial_points)!=0 and ops[-1].num_qubits==ops[-2].num_qubits:
            initial_point=initial_points[-1]
        elif len(initial_points)!=0:
            old_ans=ansatze[-1]
            if ansatz.num_parameters>old_ans.num_parameters:
                initial_point=np.append(initial_points[-1],np.zeros(ansatz.num_parameters - old_ans.num_parameters))
            else:
                to_remove=old_ans.num_parameters-ansatz.num_parameters
                initial_point=np.delete(initial_points[-1],np.arange(-1,-to_remove-1,-1))
        else:
            #initial_point = np.pi/4 * np.random.rand(ansatz.num_parameters)
            initial_point= np.zeros(ansatz.num_parameters)

        counts= []
        values = []
        deviation = []
        params=[]

        with Session(service=service, backend=device, max_time=288000) as session:
            # Prepare primitive
            rt_estimator = RetryEstimator(session=session,options=est_options,max_retries=6,timeout=18000)
            # Set up algorithm
            custom_vqe = VQE(rt_estimator, ansatz, optimizer,initial_point=initial_point, callback=callback)
            adapt_vqe=AdaptVQE(custom_vqe)
            adapt_vqe.supports_aux_operators = lambda: True
            adapt_vqe.threshold=1e-3
            adapt_vqe.max_iterations=4
            adapt_vqe.delta=1e-4
            # Run algorithm
            solver = GroundStateEigensolver(converter, adapt_vqe)
            result = solver.solve(problem)
            #result = custom_vqe.compute_minimum_eigenvalue(qubit_op,initial_point)

        initial_points.append(result.raw_result.optimal_point)
        results.append(result)
        dists.append(dist)
        hf_energies.append(hf_energy)

        problems.append(problem)

    return results,problems, distances

def make_driver(d):

    molecule = MoleculeInfo(
             # coordinates in Angstrom
                     symbols=['O','H','H','Mg'],
                     coords=[
                            # (d+0.504284,0.0,0.758602),
                            # (d,0.0,0.0),
                            # (d+2*0.504284,0.0,0.0),
                            # (0.0, 0.0, 0.0),
                            (0.0,0.0,0.0),
                            (-0.504284,0.0,-0.758602),
                            (0.504284,0.0,-0.758602),
                            (0.0, 0.0, d),
                            ],
                     multiplicity=1,  # = 2*spin + 1
                     charge=2,
                     units=DistanceUnit.ANGSTROM
                    )

    #Set driver
    #driver = PySCFDriver.from_molecule(molecule, basis="sto3g", method=MethodType.ROHF)
    #driver.xc_functional='pbe,pbe'
    driver = PySCFDriver.from_molecule(molecule, basis="6-31g*", method=MethodType.ROKS)
    driver.xc_functional='b3lyp'
    driver.conv_tol = 1e-6

    #Get properties
    problem = driver.run()

    return driver, problem

def make_qubit_op(d,og_problem, mapper,freeze_core):
    mol = gto.Mole()
    mol.atom = [
        # ['O',(d+0.504284,0.0,0.758602)],
        # ['H',(d,0.0,0.0),],
        # ['H',(d+2*0.504284,0.0,0.0)],
        # ['Mg',(0.0, 0.0, 0.0)]
        ['O',(0.0,0.0,0)],
        ['H',(-0.504284,0.0,-0.758602),],
        ['H',(0.504284,0.0,-0.758602)],
        ['Mg',(0.0, 0.0, d)]
        ]
    mol.charge=2
    mol.basis = '6-31g*'
    mol.spin = 0
    mol.build()

    #mf= scf.ROHF(mol).x2c()
    mf = dft.ROKS(mol).density_fit(auxbasis='def2-universal-jfit')
    mf.xc ='pbe,pbe'
    mf.max_cycle = 50
    mf.conv_tol = 1e-6

    first_run=mf.kernel()
    a = mf.stability()[0]
    if(mf.converged):
        energy=first_run
    else:
        mf.max_cycle = 80
        mf.conv_tol = 1e-6
        mf = scf.newton(mf)
        scnd_run=mf.kernel(dm0 = mf.make_rdm1(a,mf.mo_occ)) # using rdm1 constructed from stability analysis
      #mf.kernel(mf.make_rdm1()) #using the rdm from the non-converged calculation
        if(mf.converged):
            energy=scnd_run
        else:
            mf.conv_tol = 1e-6
            mf.max_cycle = 80
            mf = scf.newton(mf) #Second order solver
            energy=mf.kernel(dm0 = mf.make_rdm1())

    ao_labels = ['Mg 2p', 'O 2p']
    avas_obj = avas.AVAS(mf, ao_labels)
    avas_obj.kernel()
    weights=np.append(avas_obj.occ_weights,avas_obj.vir_weights)
    weights=(weights>0.2)*weights
    orbs=np.nonzero(weights)
    orbs=np.nonzero(weights)

    transformer = ActiveSpaceTransformer(
            num_electrons=(3,3), #Electrons in active space
            num_spatial_orbitals=4, #Orbitals in active space
            #active_orbitals=orbs[0].tolist().append(orbs[0][-1]+1)
        )
    fz_transformer=FreezeCoreTransformer(freeze_core=freeze_core)

    #Define the problem

    problem=transformer.transform(og_problem)
    if freeze_core==True:
        problem=fz_transformer.transform(problem)
        converter = QubitConverter(mapper)
    else:
        converter = QubitConverter(mapper,two_qubit_reduction=True, z2symmetry_reduction='auto')

    hamiltonian=problem.hamiltonian
    second_q_op = hamiltonian.second_q_op()

    num_spatial_orbitals = problem.num_spatial_orbitals
    num_particles = problem.num_particles

    qubit_op = converter.convert(second_q_op,num_particles=num_particles,sector_locator=problem.symmetry_sector_locator)

    return qubit_op, problem,  converter, energy

#Runtime Estimator options
ts_opt=TranspilationOptions(
    skip_transpilation=False
)

res_opt=ResilienceOptions(
    #noise_factors=tuple(range(1, 6, 2)),
    noise_amplifier='LocalFoldingAmplifier'
    #extrapolator='LinearExtrapolator'
)

ex_opt=ExecutionOptions(
    shots=1024
)
est_options=Options(
    resilience_level=2,
    optimization_level=3,
    execution=ex_opt,
    #resilience=res_opt,
    #transpilation=ts_opt
)

distances = [0.3,0.6,0.9,1.2,1.5,1.8,2.1,2.4,2.7,3.0,3.3]
optimizer = SPSA(maxiter=100)
mapper=ParityMapper()

algorithm_globals.random_seed = seed

counts = []
values = []
params = []
meta_dicts=[]
interim_info={'counts':[],
              'values':[],
              'params':[]
             }

vqe_results,vqe_problems,dists=real_solver(distances=[distances[0]],
                                            mapper=mapper,
                                            optimizer=optimizer,
                                            freeze_core=False,
                                            est_options=est_options,
                                            device='ibmq_montreal'
                                          )

write_list(vqe_results,f'MG+H2O_mont_4qubit_zne_vqe_results_{int(distances[0]*10)}')
write_list(vqe_problems,f'MG+H2O_mont_4qubit_zne_vqe_problems_{int(distances[0]*10)}')

retry_primitives.py:
import signal, time

from qiskit_ibm_runtime import Sampler, Estimator, Session
from qiskit.providers import JobStatus

def timeout_handler(signum, frame):
    raise Exception('Iteration timed out')

class RetryPrimitiveMixin:
    """RetryPrimitive class.

    This class inherits from Qiskit IBM Runtime's Primitives and overwrites its run method such that it retries calling it
    a maximum of 'max_retries' consecutive times, if it encounters one of the following randomly occuring errors:

    * A Primitive error (in this case "Job.ERROR" is printed, and the job is cancelled automatically)
    * A timeout error where the job either remains running or completes but does not return anything, for a time larger
      than 'timeout' (in this case the job is cancelled by the patch and "Job.CANCELLED" is printed)
    * A creation error, where the job fails to be created because connection is lost between the runtime server and the
      quantum computer (in this case "Failed to create job." is printed). If this error occurs, the patch connects the user
      to a new Session (to be handled with care! also, this will unfortunately put the next job in the queue).
    """

    def __init__(self, *args, max_retries: int = 5, timeout: int = 3600, **kwargs) -> None:
        super().__init__(*args, **kwargs)
        self.max_retries = max_retries
        self.timeout = timeout
        self.backend = super().session._backend
        signal.signal(signal.SIGALRM, timeout_handler)

    def run(self, *args, **kwargs):
        result = None
        for i in range(self.max_retries):
            try:
                job = super().run(*args, **kwargs)
                while job.status() in [JobStatus.INITIALIZING, JobStatus.QUEUED, JobStatus.VALIDATING]:
                    time.sleep(5) # Check every 5 seconds whether job status has changed
                signal.alarm(self.timeout) # Once job starts running, set timeout to 1 hour by default
                result = job.result()
                if result is not None:
                    signal.alarm(0) # Reset timer
                    return job
            except Exception as e:
                signal.alarm(0) # Reset timer
                print("\nSomething went wrong...")
                print(f"\n\nERROR MESSAGE:\n{e}\n\n")
                if 'job' in locals(): # Sometimes job fails to create
                    print(f"Job ID: {job.job_id}. Job status: {job.status()}.")
                    if job.status() not in [JobStatus.DONE, JobStatus.ERROR, JobStatus.CANCELLED]:
                        job.cancel()
                else:
                    print("Failed to create job.")
                    try:
                        super().session.close()
                        print("Current session was closed.")
                    except:
                        print("Current session could not be closed. Will leave it to close automatically.")
                    print(f"Creating new session...\n")
                    self._session = Session(backend=self.backend)
                print(f"Starting trial number {i+2}...\n")
                signal.alarm(0) # Reset timer
        if result is None:
            raise RuntimeError(f"Program failed! Maximum number of retries ({self.max_retries}) exceeded")

class RetrySampler(RetryPrimitiveMixin, Sampler):
    pass

class RetryEstimator(RetryPrimitiveMixin, Estimator):
    pass

this should be transferred to qiskit-algorithms


Screenconnect inf file points to wrong tar.bz

https://github.com/IGEL-Community/IGEL-Custom-Partitions/blob/master/CP_Source/Apps/ConnectWise_Control_ScreenConnect/screenconnect_20.1.29489.7513.inf
file="screenconnect_20.1.29489.7513.tar.bz2"
https://github.com/IGEL-Community/IGEL-Custom-Partitions/blob/master/CP_Source/Apps/ConnectWise_Control_ScreenConnect/screenconnect_20.1.29489.7513_etc_igel1.tar.bz2
screenconnect_20.1.29489.7513_etc_igel1.tar.bz2

Well, the etc tar just has the following in it. I did not want to call it the final tar.bz2 name.  Customization: Replaced /etc/init.d with systemd / systemctl for starting and stopping ScreenConnect service (/etc/systemd/system/screenconnect.service).


Reverse proxy example doesn't build on Windows

Doing dub init proxy_test -t vibe.d, pasting in this source:
import vibe.appmain;
import vibe.http.proxy;
import vibe.http.server;

shared static this()
{
	auto settings = new HTTPServerSettings;
	settings.port = 8080;
	settings.bindAddresses = ["::1", "<IP_ADDRESS>"];

	listenHTTPReverseProxy(settings, "vibed.org", 80);
}

Results in a number of linker errors culminating in
OPTLINK : Warning 134: No Start Address
Error: linker exited with status 527
dmd failed with exit code 527.

I've attached an unabridge dump of all the errors. There appear to be some (possibly Unicode-related) text garbling in there.
Platform is Windows 10 1703 (Creator's Update) x64, DUB 1.2.1 and DMD 2.074.1.
Full dump:
errors.txt

Looks like dmd is trying to 'link' a single object file, and thus is missing relevant libs. (druntime/phobos/vibe-d)
Could this be related to import vibe.appmain, instead of using the VibeDefaultMain version?

Welp, now I look dumb. Copying the "versions": "VibeDefaultMain" from the example's JSON to my project's JSON solved all my problems. No more undefined symbols, no more linker error. Builds and runs just fine. I guess I figured DUB would take care of things with the -t vibe.d. Is there a place I could look for documentation on what the version specifiers mean, particularly for vibe? I found this but I don't know that the version specifiers mean.


passage: init at unstable-2022-05-01

Built on platform(s)

[x] x86_64-linux

[x] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

@happysalada Can you please review this one too?

Thank you for this, interesting software!
I was a bit surprised by the version being unstable, but it just looks like the software doesn't have releases.
Feel free to mention details (that you know) in the PR body to make it easier to review!

It is forked from pass=1.7.4, and unfortunately, it does not have releases on its own.


Something wrong when viewing CNBC pages

Thorium Version: Thorium for Windows with AVX2 109.0.5362.0
System: Windows 11 Pro for Workstations 22623.870
CPU: Intel Core i5-12500H 2.50 GHz
GPU 0: Intel Iris Xe Graphics
GPU 1: NVIDIA GeForce RTX 2050
RAM: 16 GiB
Pages that have the problem: any CNBC pages, such as https://www.cnbc.com/2022/05/14/elon-musk-has-wrong-approach-to-count-fakes-spam-on-twitter-experts.html
As title and the picture below
I've tested to turn off all the extensions, there is still the problem; I've tested the latest version of Chromium (downloaded on https://download-chromium.appspot.com), it's no problem on Chromium.

@Moe23333 Yeah latest version should fix this and alot of other problems with the avx2 version.


update README.md

Thanks, @eashsaxena for adding some context about Xamarin to the readme. However, the text you're proposing to add is taken directly from Wikipedia. In its current form, it doesn't comply with Wikipedia's policy for reuse of text. Nor is reproducing the content of the Wikipedia topic something that we'd be interested in doing. Consequently, I'll close your PR.


Remove journey boxes from docs' landing page

Problem
https://noir-lang.org/ current lands on the index.jsx page with boxes for readers to self-categorize their interests and backgrounds:

@noir-lang/developerrelations brought up the self-categorization could hurt DocEx instead of improving it though, leaving readers confused and frustrated as their understanding of the categories might not necessarily match how doc authors comprehend them.
Happy Case
Remove the self-categorization boxes from index.jsx.
Project Impact
Nice-to-have
Impact Context
Improve docs reading experience.
Workaround
Yes
Workaround Description
Promote https://noir-lang.org/docs/ instead of https://noir-lang.org/.
Additional Context
The index.jsx page was introduced in https://github.com/noir-lang/noir/pull/4081.
Would you like to submit a PR for this Issue?
None
Support Needs
No response

Discussed further with @noir-lang/developerrelations: instead of removing the landing page, we should remove the boxes for this Issue (and update content on the landing page where necessary with further PRs).
Issue updated accordingly.


Fix an issue where selecting a blank fuel class causes a js error

#1274 #1275
Updated some of the labels and fixed an issue where a blank fuel class is causing the page to crash
Changelog:

Updated some text
Value is checked before being added for the energy effectiveness ratio so it doesn't crash the page

 Compliance Report | Adjust confirmation alert messaging when saving a compliance report |1|

 Compliance Report B | Minor adjustments to column labels in Schedule B |1|

 Fuel Codes | Provide indicator of fuel code overlap when hovering mouse over red marked fuel code entries |2|v1.4.11


Maven dependency in Readme file is wrong

GroupId should be org.pac4j.vertx instead of org.pac4j for 2.0.0-SNAPSHOT
https://github.com/pac4j/vertx-pac4j#dependencies-1
:)

For consistency (with other implementations), the groupId is always org.pac4j.

Updateed groupId in the pom.xml file


Helm Chart: update stack versions for v0.4.0 release

Signed-off-by: Hasan Turken<EMAIL_ADDRESS>
Description of your changes

This PR updates default stack versions in helm chart for Crossplane v0.4.0 release.
Checklist

I have:

[x] Run make reviewable to ensure this PR is ready for review.
[x] Ensured this PR contains a neat, self documenting set of commits.
[ ] Updated any relevant documentation, examples, or release notes.
[ ] Updated the RBAC permissions in clusterrole.yaml to include any new types.

Closing since correct versions already set on release-0.4 branch and it makes more sense to set as master on master branch which will be done with this PR: https://github.com/crossplaneio/crossplane/pull/1020


'set' doesn't trigger onSelect

onSelect is not triggered when the 'set' method is used.
Example;
$('#photo-rating').barrating('set',4)

Thanks for reporting, the callback will be triggered when 'set' method is used.

Awesome, thanks!

We just came across this change in the new version.  This is the type of change that will break existing code; it deserves at least a minor version update, as well as an explanation of the change.
As an example, most client code has to deal with asynchronous data from the server, as well as user input.  We can assume the client is listening to the onSelect event in order to update a record when the user selects a rating.  However, if the server reports a change to the rating, after the client has rendered the old rating, the client will then update the rating view using the set method.  Now, with this change, the client will receive the event due to its own change, and try to update the server with the new value, which isn't new at all.
Whether programmatic changes should invoke callbacks is outside the scope of this issue (and almost certainly a question that will remain as unanswered as most holy-war-style questions).  However, this is a real problem, and one that will affect many users of your library (most, probably, without their knowledge, leading no doubt to some frustrating bugs).  If this is the approach you prefer, I would suggest a silent option, allowing the set method to set ratings without triggering the callback.

Sorry to hear this latest update caused you trouble.
The change was introduced in version 1.1.2. I'd suggest to always install a specific version of the plugin and check the changelog when upgrading to a newer version to avoid any surprises.
I will also consider the silent option you mentioned.

I added a silent option for those people that do not want the callbacks to be fired when the rating is controlled programmatically with methods such as set.

Thanks for adding the silent option; could we please have a new version with this feature?

Here you go:
https://github.com/antennaio/jquery-bar-rating/releases/tag/v1.1.3


Adding getting started with ens guide for dapp devs

Fixes https://github.com/ensdomains/docs/issues/10

Hey @lyricalpolymath are you with the ENS team? Thanks for the comments, I was the bounty staker for this task. The original brief was for a tutorial, hence the tutorial style submission. I'll take a look through the comments you submitted, and I am just about to start an overall language and grammar sweep anyway.

Nice work @ChrisChinchilla ! Please replace UTF-8 quotes ‘ .. ’ and “ ... ” with ASCII.

@industral done!!

Reviewing and testing this now. Watch this space.

@nanspro this required quite a lot of editing (that you can find in this PR - https://github.com/nanspro/docs/pull/1), and the first half was mostly from the existing blog post, I'm uncertain how useful the 2nd half is, as it's not full examples, but code snippets. It's a good start, but not quite a getting started guide yet.
@Arachnid are you able to offer any opinions on if this at least as start to what you were looking for? And we can figure out what's needed to get it finished up.

Apologies for this @ChrisChinchilla , me and @owans will update this PR and will do a proper check on other 3 PR's also to make it better

OK, this is now good for me and I'll pay the bounty out. I can work with the ENS team to do the final polish and get it merged.


Keep track of who you gifted

Description
Track last gift time and display on user page.
Implementation

[x] Add area for gift history to user page
[x] If there is no gift history, display a message
[x] If there is a gift history, display X most recent gifts
[x] Maybe split into In/Out columns?
[ ] Maybe provide "Summary" stats that count cumulative gifts?

Links
/forums.php?action=viewtopic&topicid=48412

Since this feature is currently the one holding up all the recent bug fixes and features that have been added, here is a WIP. I still need to limit the number of recent gifts to show (or make the entire history scrollable) and add summarizing of Gift/Wedge amounts. I believe the endpoint only returns the 50 most recent gifts, so the summary may not be accurate in extreme cases, but I feel like making two separate calls per userpage visited (points + wedges) would be unnecessary when 99.99% of the time those calls won't be returning a full 50 gifts of either type.
Any thoughts on the current implementation before I push the feature, @ooglyboogly?

The formatting looks good to me, and I think scrolling would be better than eliminating data. Will be interesting to see how it works with limited history returns from endpoint. Guess I am not exactly sure how youre calling endpoint to get history with specific user and how long-term this feature is intended to maintain a full gift history vs just seeing some recent transaction you made to avoid double gifting.

The primary purpose of the feature is, in my opinion, to avoid double-gifting or other similar use cases. While it would be nice to have all the data (for completion's sake) information that old probably isn't that useful anyway outside of having a perfectly accurate total.
The endpoint for a specific user is accessed with ?other_userid=${user} and you could check for points and wedge history separately (ex. with &type[]=giftPoints) but that might only get you an additional 10 history slots since FL wedges are typically sent less frequently. Not worth the extra server load when I haven't figured out how to get the JSON request to work with the cdn. hosted site data.

Not to add more work to this feature, but what do you think about adding a quick subset(last 3?) of the history to the popup confirming desire to send gift, and indicating if any were in the last 48 hours? At least on the user page this might be relatively easy to do, on the shoutbox side if wanted to implement it would need to be shown within the 3dot menu which could be trickier.

P.S. i have no idea what the CDN is, so I am in the same boat :D

Haven't touched the pop-up boxes with any of my previous features, so not sure how much of an issue that would be to implement. The "within 48 hours" notification could be useful. I'm considering this current feature implemented, but you're free to open another feature request for the pop-up message if you want.


dynamic height to  data row height  property?

some data row needs to be bigger in size than other due to its content that does not fits in it so how it can take fixed height for all the data row this needs to be fixed , and should be sized according to its content and should not be fixed for all the data rows .

DataRows2 can have individual width defined, just like with auto width (determining colum width based on the largest cell) data row width will require a separate pass measuring cell's contents. That kind if capability was discarded at the very beginning of that package due to implementation detail and performance considerations.

Any possible way to implement dynamic height for rows, bro ?
and also will be useful to have minWidth for specific columns.


Empty Speech Title Error

if you name a speech with an empty title, it breaks everything

as in, its makes a weird thing thats annoying

We could solve this by just stopping the user from creating an unamed speech like it does for cards. I think that is the best solution

Fixed in latest speechEditorFix


What font is that in the screenshots?

I know this is not a real issue, but I am really curious. The font looks really nice.

Operator by Hoefler & Co.


Values restrictions shouldn't duplicate property range

It is not necessary to restate the range of a property in a property restriction. For example:
	<owl:Class rdf:about="&gist;Message">
		<rdfs:label rdf:datatype="&xsd;string">Message</rdfs:label>
		<rdfs:comment rdf:datatype="&xsd;string">A specific instance of content sent from an Organization, Person, or Application to at least one other Organization, Person, or Application.</rdfs:comment>
		<rdfs:comment rdf:datatype="&xsd;string">EXAMPLES: An email message, a phone call, a voice message, or a Web Service message.</rdfs:comment>
		<owl:equivalentClass>
			<owl:Class>
				<owl:intersectionOf rdf:parseType="Collection">
					<rdf:Description rdf:about="&gist;ContentExpression">
					</rdf:Description>
					<owl:Restriction>
						<owl:onProperty rdf:resource="&gist;fromAgent"/>
						<owl:someValuesFrom>
							<owl:Class>
								<owl:unionOf rdf:parseType="Collection">
									<rdf:Description rdf:about="&gist;Address">
									</rdf:Description>
									<rdf:Description rdf:about="&gist;Organization">
									</rdf:Description>
									<rdf:Description rdf:about="&gist;Person">
									</rdf:Description>
								</owl:unionOf>
							</owl:Class>
						</owl:someValuesFrom>
					</owl:Restriction>
                                   ...
				</owl:intersectionOf>
			</owl:Class>
		</owl:equivalentClass>
	</owl:Class>

The range of fromAgent is the union of Address, Organization, and Person. IMO it's preferable to state this as a minCardinality restriction, or at least someValuesFrom owl:Thing, in order to avoid logical redundancy and giving the false impression that we are saying something new. In most contexts we strictly avoid redundant axioms - e.g., in stating an inverse, domain, and range on only one of two inverse properties.
A similar example is the hasParty restriction on Agreement.

As it stands, it is logically redundant.  And in a static world that would be the end of it. But as a modeler in a changing world, I know that a range may change, but I want to make sure that my restriction has the same filter.  Sometimes redundancy serves a purpose.   Having explicit imports instead of relying on transitivity is also strictly redundayt, but serves a purpose.
So my vote is to not just willy nilly remove all these w/o some thoughtfulness.
M>

Interesting point - I hadn't thought of looking at it that way. But since we control both the property and class definitions, I would imagine that before changing the range of a property we would check to see what that might affect. Then the restriction could be added if necessary. We don't have to guard against what we ourselves might do. What you say makes sense in the context of a client-defined class with a restriction on a gist property.

I don't mind either way.

@rjyounes This has been ongoing for a long time. Did we not address this recently?

@rjyounes

It's part of our internal cardinality discussion, so we can close the issue. It's not gist-specific in any case.

No, but the decision about cardinality could directly impact gist, and this issue would be alive again. I guess any cardinality decision would mean walk through all of gist to see what changes are warranted.


Ability to deduplicate labels on compact phase

Is your proposal related to a problem?

Running prometheus in HA will produce duplicated data on object store, which is consuming twice as storage than expected.
Describe the solution you'd like

Compact component should accept --compact.replica-label similar to #1174 and delete duplicate blocks.
Describe alternatives you've considered
None, if there is any please let me know.

Hi, have you looked into vertical compaction: https://thanos.io/tip/components/compact.md/#vertical-compactions? I think it solves your problem.

@GiedriusS yes! That's exactly what I was looking for, sorry I missed it in docs and I was looking just into list of compact command options and hidden options are not listed there 🙁. Thanks for reply!


Check formatting on CI

While the code now conforms to the default rules of rustfmt it can be easy for it to diverge, as there is no feedback if someone introduces a change that is not formatted properly.
A CI build job that fails when formatting is off could be useful.
See discussion in #1390 for more background - in short it is not easy to specify a version of rustfmt that we can rely on.

@kinnison This should be closed .

Indeed it should, well spotted.
We have been checking formatting as part of CI for several months now.


Add support for spatialite

This issue was imported from CodePlex
aparks wrote 2011-06-16 at 03:41
Add read/write support for spatialite.
FObermaier wrote 2011-06-16 at 11:12
Please have a look at
http://dotspatial.codeplex.com/workitem/206

There is already SpatialLite plugin, and also see #200


Question: extra client-side validators?

Question not bug.
For DataAnnotations there are a number of extra client-side validator extensions, like this one.
So I mean that you can write a custom client-side validator (for jQuery validation plugin) and a custom corresponding server-side validator, and link them. The result is extra validator for both client and server.
Is there a similar library someone wrote with extra validators for FluentValidation? So I don't reinvent wheel.

No, sorry. FV provides adapters for a few common client side scenarios so we have parity with what MVC ships, but that's all.

Ok I understand. Maybe when I make some common ones I publish as extension.
Do you think is possible for us to make more validators and package them as addition to FluentValidation, as separate nuget? Will FV be able to use them if we do that?

Yes- if you want to do that it's fine. The ASP.NET Core integration doesn't support registering custom clientside adaptors yet (the MVC5 version does), but I'll get that added. Essentially you'll be registering the custom adapters with the dictionary mapping in here:
https://github.com/JeremySkinner/FluentValidation/blob/master/src/FluentValidation.AspNetCore/FluentValidationClientModelValidatorProvider.cs
...I'll add an additional "Register" method from there, which you can access from FV's configuration delegate within Startup.

@JeremySkinner That looks like very nice approach. I will do that.
But is not urgent to make Register change now. On my side I must still make extra validators first. Busy porting project to Core, it take time.
Thanks for advice!

That's done- you can access the client side configuration of the configuration lambda in Startup, and from there register additional client side adapters.

I cannot see it. On my side it RC4 is still latest?

It's in rc4

Oh yes I see it now, .ConfigureClientsideValidation(). Excellent!
Thanks for this.


removed engine section due to build conflict in consuming app

Node engine fix implemented

This looks fine to me.


12 is wrong

I think the following is correct.
Z = np.random.randn((3,3,3))
print(Z)

Actually you could use
Z = np.random.randn(3,3,3)

but this would give would samples from the standard normal distribution.


refactor(frontend): Move source address in Send modal

Motivation
We want to reuse the SendModal component for Bitcoin transactions.
There is one part that is specific to IC, which is the address shown in the form and review steps.
In this PR, I move this part up the chain so that we can pass later the bitcoin address instead of the IC one.
This will also help me find pending transactions, which will be keyed by address in a store and disable the form if any is present. This way, the idea of pending transactions doesn't need to be specific to BTC.
Changes

Add prop source to IcSendReview and IcSendForm and use it instead of icrcAccountIdentifierText store.
Add prop IcSendTokenWizard and SendWizard to pass it down.
Create local variable source using icrcAccountIdentifierText store in SendModal and IcSendModal to then pass it down.

Tests
Still working locally.

@AntonioVentilii-DFINITY @peterpeterparker please review
@DenysKarmazynDFINITY FYI

@peterpeterparker ready for another review


make JDK 11 the minimum version

refer discussion in 2009 on Jun 7
plan is:

version 1.3.0 of Karate (which solves the Graal JS issues) will be the last release that uses JDK 8
version 1.4.X onwards Karate will require Java 11 (note that 1.4.0.RC3 is already available to test)
version 1.5.0 onwards the Maven artifact and Java package names will change to io.karatelabs

edit1 to announce 1.4.0.RC1 and that 1.5.0 will be where we move packages

this ticket will also track

the switch of Karate's maven namespace to io.karatelabs.karate and the corresponding Java package changes
we can also take this opportunity to drop JUnit4 support completely

note to self: we need to move the docker container to the karatelabs org: https://hub.docker.com/r/karatelabs/karate-chrome
existing: https://hub.docker.com/r/ptrthomas/karate-chrome

there's a report of classgraph having a vulnerability, so make sure to upgrade that in this ticket: https://ossindex.sonatype.org/component/pkg:maven/io.github.classgraph/classgraph

update: classgraph was upgraded in develop and will make it in the final release of 1.3.0 - any team depending on this is requested to verify

reminder to upgrade picocli to 4.7.0 https://github.com/remkop/picocli/releases/tag/v4.7.0

anyone landing here, please note - a Karate version for Java 11 (plus Graal update) is already available as 1.4.0.RC1 see #2148

note a request to update the ANTLR dep in #2174

Is there any possibility of doing a 1.4.0.RC2 release which will bring in the recent improvements from 1.3.1. Could that also include the ANTLR update as well please? I'd like to keep tracking the 1.4.0 releases but I have a clash with ANTLR versions and I'm not keen to use the "all" classifier as it re-introduces vulnerable dependencies we've previously replaced.

@edwardsph sure. will try in the next day or two. wonder if you had a chance to look at this

Sadly I didn't have the capacity but that's partly the reason for the above request, so I can have a look at those changes in the context of 1.4.0. It was tricky for me to revert to 1.3.1.

all: 1.4.0.RC2 was released and should be available in maven central shortly. in addition to the fixes in 1.3.1 - here are the dependencies updated to latest versions: https://github.com/karatelabs/karate/commit/05bd6af38faff10ecb33cfb9b31987a4ba194b00

dev note: we will drop cucumber and the fake classes in 1.4.0: https://github.com/karatelabs/karate/issues/2214

for anyone landing here, 1.4.0.RC3 is available.
note for 1.5.0 - we will stop releasing the ZIP release as this need is covered by the plugins (VS Code and IntelliJ): https://github.com/karatelabs/karate/wiki/ZIP-Release

1.4.0 released


[gh-pages] [ZEPPELIN-2597] adding technologies and deployments (Main Page)

What is this PR for?
This PR is for Improving more comfortable guidance for point of user view in the main zeppelin homepage.
To sum up, Technologies section is consist of 3 interpreters most people search or want (already talking about this on the mailing list.) and, Deployments section describes single or multiple user setting.
What type of PR is it?
[Improvement]
What is the Jira issue?

ZEPPELIN-2597

How should this be tested?

run bundle exec jekyll serve --watch in this branch
open localhost:4000

Screenshots (if appropriate)

Look Technologies and Deployments sections

Questions:

Does the licenses files need update? No
Is there breaking changes for older versions? No
Does this needs documentation? Yes, this is.

@AhyoungRyu @1ambda @Leemoonsoo, please review again!

I think it would be better if the font sizes inside top box(technologies) and bottom(deployments) were of same size and had a uniform margin / padding scheme. Also about use now and learn more buttons

Improve layout for mobile browsers.

7-1. each panel-content in the TECHNOLOGIES section doesn't have margin-top or bottom. It's not consistent compared to panel-content-user in  the DEPLOYMENTS section.

7-2. It would be nice to add padding-left and padding-left to .advertise (30px might be proper.)
Current

After

@sravan-s, I've fixed to match font size as your mention. Regarding of uniform margin / padding scheme I tried to fit the box ratio. could you check this if you have time?

@1ambda , I've update regarding of  7.Improve layout for mobile browsers. could you confirm, again?

Adjustment margin among components

padding-bottom: 30px for .tech_deploy h2
remove the css tech_deploy class in technologies_deployments.md LINE16: tech_deploy container -> container
padding-top: 22px and padding-bottom: 40px for .tech_deploy
remove padding-bottom and margin-top in technologies_deployments.md: LINE 52
remove padding-bottom and padding-top in the .tech_deploy p class. (DON'T SET to 0, just remove the style)
margin-top: 25px, margin-bottom: 30px for .tech_deploy p
inline style padding-bottom: 8px; for DEPLOYMENTS h2

Current

After

Thanks for your great effort @soralee. LGTM! except

[ ] - comments 4
[ ] - comments 8
[ ] - comments 9-1, 9-2, 9-3
[ ] - comments 10
[ ] - comments 11

I really thank @1ambda and  your a kind explanation as well!
I'll update the following list and let you know that.
 - comment 4 (SQL text font styling)
 - comment 8
 - comments 9-1, 9-2, 9-3
 - comment 10
 - comment 11

@1ambda, I just finished the list about all your comment.
For help to easy your review, I involved comment numbers in title message when I commit.
I appreciate for taking care of this PR, all detailed comment as well!

some improving list

arranged to same line each 'use now' button in the Technologies.
changed contents font style in Technologies and Deployments.
removed bold font of buttons in the Deployments.

LGTM.
Chrome on OSX

Safari on OSX

Old version Firefox (v31) on OSX

@1ambda Thanks a lots of! you're the best! :+1:

Thanks for the great work @soralee! And also thanks for detailed review @1ambda.
Tested and looks nice!
I really like the most of parts. Some minor suggestion is
Technologies

how about using same border color with "Deployment" box #999 instead of #4881B3?

Deployment

how about putting "LEARN MORE" buttons in each deployment section box in the middle instead of right side?
and also we can remove the single & multi user font awesome icons since the text ("single" and "multi") itself already explain what "single-user" and "multi-user" are meaning for.

How about this? It's just my opinion. Please have a look and feel free to share your thought :)

@AhyoungRyu, Thanks for review and suggestions!
Sure, I can change the border color in Technologies section and, I can remove icons in Deployments section.
IMO, about Deployments section, actually the current structure is good to me (including icons).
And especially the buttons, it would be better to keep the current structure to match the buttons in the above technologies.

How about this? :slightly_smiling_face:

or to decorate in Deployments section, How about this structure?

Yeah second option is better for me :)

@AhyoungRyu, Thanks for accepting :+1:
Let me improve this and let you know.

@soralee , sorry, I am having some trouble installing jekyll and stuff in my machine, but your screenshots looks good :)

@AhyoungRyu I updated as your mentions.

Ping, ready to review!

@soralee Since https://github.com/apache/zeppelin/pull/2371 was merged, we can fix the URL names in this PR too.

for spark button: ${PROPER_PREFIX_FOR_0.8.0}/quickstart/spark_with_zeppelin.html
for sql button: ${PROPER_PREFIX_FOR_0.8.0}/quickstart/sql_with_zeppelin.html
for python button: ${PROPER_PREFIX_FOR_0.8.0}/quickstart/python_with_zeppelin.html
single user button: ${PROPER_PREFIX_FOR_0.8.0}/quickstart/install.html
multi user button: ${PROPER_PREFIX_FOR0.8.0}/setup/basics/multi_user_support.html

@1ambda Thanks for arranging list
Updated it.

@1ambda, How about that connecting the latest version documentation? we'd better to guide the latest version to user.
spark - http://zeppelin.apache.org/docs/0.7.2/interpreter/spark.html
sql - http://zeppelin.apache.org/docs/0.7.2/interpreter/jdbc.html
python - http://zeppelin.apache.org/docs/0.7.2/interpreter/python.html

single user - http://zeppelin.apache.org/docs/0.7.2/install/install.html
multi user - http://zeppelin.apache.org/docs/0.7.2/security/shiroauthentication.html

Looks good to me and agree that use old links unile we deploy 0.8.0

Yeah, I updated it (:
thanks @1ambda

@soralee Could you resolve conflict?

@1ambda Fixed!

Looks good to me. Thanks for your contribution.
Merge if no more discussion.


[Question] Individual placement of icons on desktop?

I was not able to figure this out elsewhere: Is it possible to place icons on the desktop individually? At the moment icons are placed in alphabetical order. I would like to place the icons freely like on the "usual" windows desktop.
Thanks for a short reply in advance.
Rgrds, Mark

This is a [Feature Request]

Request: allow alternative desktop icon layouts. Free Arrangement being the specific request in this case

Any updates on this?
I really love Cairo but I have my desktop icons separated based on what category they fall into (left side of the monitor is software, top right is for files, bottom right is for games)
Allowing manually positioning icons based on a grid, and supporting the default format Windows uses (I think its stored somewhere in the registry?) would be huge


Guideline on setting "n_z" parameter of hyperLSTM

How to set "n_z" parameter of hyperLSTM? Are there any guidelines?

The paper suggests using a size smaller than the hyper state size hyper_size


Experimental python3 support

First try on implementing Python3 support.
This was done using futurize (http://python-future.org/) and then manually fixing a few issues.
Changes made:
Adds python-future as dependency which only supports python >=2.6.
Most of the small changes should be pretty straightforward e.g. python3 style print function and no .iteritems() in python3
Probably the most problematic area is strings. Unicodes were converted to use str from python-future library and now that python3 has separate bytes type there are few places where those are converted.
There is also few places where it is explicitly checking if python version is 3 and doing different stuff e.g. logger just skips encode/decode in python3 and probably there is better way to do it.
Redis is now using decode_responses flag which may or may not be the good solution but at least it allowed me to get it working w/o decoding all the responses manually.
Also changed urllib2 to use urllib trough python-future. And needed to add monkey.patch_all(subprocess=False) to mrq_worker to get that running fine. Didn't really dig too deep in this monkeypatching stuff so not sure if this is a problem.
There are few test cases failing but couldn't get them to pass even with master. There is also no automated test runner for python3 ( I was locally testing with modified Dockerfile ).
requirements.txt also now contains different packages based on python version so installing with recent enough pip works but no idea about setuptools(?)
Any feedback on how I could improve this would be great.
( I have been running this with some "real" python3 jobs which seem to work but there is most likely some corner cases which I might be missing and also didn't run any benchmarks so no idea about the performance )

Does mrq/mrq/context.py also need from builtins import str ?

Good catch, should be there

Wow, amazing!! We're going to review this carefully and merge it as soon as possible :)

Anywhere that's performance critical might want to use the dict builtin from futures instead of just switching to .items. I'm not sure what places this is important.
http://python-future.org/what_else.html#dict

Also in a few places it seems you used list(d.keys()) and list(d.items()) while iterating over the dict's keys or items. I think the list is not necessary when iterating.
$ source activate py27
$ python2
Python 2.7.11 |Anaconda 4.0.0 (x86_64)| (default, Dec  6 2015, 18:57:58)
[GCC 4.2.1 (Apple Inc. build 5577)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
>>> d = {1:1, 2:2, 3:3}
>>> [x for x in d.items()]
[(1, 1), (2, 2), (3, 3)]
>>> [x for x in d.keys()]
[1, 2, 3]
>>> [x for x in d.values()]
[1, 2, 3]

$ source deactivate
$ python3
Python 3.5.1 |Anaconda 2.5.0 (x86_64)| (default, Dec  7 2015, 11:24:55)
[GCC 4.2.1 (Apple Inc. build 5577)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> d = {1:1, 2:2, 3:3}
>>> [x for x in d.items()]
[(1, 1), (2, 2), (3, 3)]
>>> [x for x in d.keys()]
[1, 2, 3]
>>> [x for x in d.values()]
[1, 2, 3]

If you want to add six as a dependency to deal with many of those issues, it would be okay!

@sylvinus I think future accomplishes the same. http://python-future.org/faq.html#what-is-the-relationship-between-future-and-six

python-future is a higher-level compatibility layer than six that includes more backported functionality from Python 3, more forward-ported functionality from Python 2, and supports cleaner code, but requires more modern Python versions to run.

Ah, right! I was confused because http://python-future.org/compatible_idioms.html also mentions six :-) Great then!

Yeah that's very nice! You can already consider that the switch to Travis will soon be done to run py 2/3 tests.

Removed extra list calls when iterating. There seems to be couple of files which are missing str import from python-future so those probably need still fixing.

Changed remaining files which were using str straight. Only mrq/queue.py is still using it because bytes.fromhex is expecting string to have a decode method.
Still couple of tests failing with python2 so might need a bit advice what to do with those.

Have been a bit busy with other stuff but could now invest some more time on this... any feedback how I could push this forward?

Sorry @tume for the lag and thanks again for the work!
I'm definitely willing to help. First order of business is switching to Travis and adding python3 to the Dockerfile. Let me do that in master so you can integrate those commits here. I'll provide further feedback once this is done!

@tume: OK the tests are running on Travis!
https://travis-ci.org/pricingassistant/mrq/jobs/148468754
You should maybe merge master in your branch or rebase from it, then we can go over the remaining tests!

@tume did you have some time to review this?

Sorry that took so long to reply but I was on holiday for a month.
Rebased this with master.

@tume travis build fails on this line in mrq/config.py
change to:
config_keys = set(list(default_config.keys()) + list(from_file.keys()))

Good catch @AlJohri !
@tume glad to have you back! Let us know if you need any help, seems we're not far now!

Fixed

will #122 fix the failing travis build? seems to be related to the UUID thing

Is help needed here? I'd be glad to if I can. I'd like to test my stack on python 3 and mrq is the last package to prevent it.
By the way as travis tests are not green on master either, I'm not sure what's still need to be done for this branch to be ok for merge.
Last question: flask version is frozen to 0.10 in requirements-dashboard.txt and thus in setup.py, which blocks upgrade to flask 0.11 to anything depending on MRQ. Is there a reason for this freeze?
Thanks!

@achauve yes let's do it!!
no reason for freezing flask, we can remove it.
there are some long-standing flaky tests, I'm going to fix or skip them short term so we can get back to green and merge this!

Congrats! Thank you all :)

@achauve let me know how your tests go!

@sylvinus Yes I will! Thanks a lot for the cleanings and the merge :)


Feature/embedded/34

In this pull request we create 2 libraries:

STD-TYPES to define our data types.
BIT-MATH to define some math operations on registers.

Keep going


Plugin fails on fields with boolean values

If there is field with boolean type in logstash event, influxdb plugin fails giving the following stack trace:
{:timestamp=>"2016-07-22T18:10:14.701000+0100", :message=>"Failed to flush outgoing items", :outgoing_count=>100, :exception=>"NoMethodError", :backtrace=>["/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-influxdb-3.1.2/lib/logstash/outputs/influxdb.rb:342:in `quoted'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-influxdb-3.1.2/lib/logstash/outputs/influxdb.rb:227:in `events_to_request_body'", "org/jruby/RubyHash.java:1342:in `each'", "org/jruby/RubyEnumerable.java:757:in `map'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-influxdb-3.1.2/lib/logstash/outputs/influxdb.rb:227:in `events_to_request_body'", "org/jruby/RubyArray.java:2414:in `map'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-influxdb-3.1.2/lib/logstash/outputs/influxdb.rb:224:in `events_to_request_body'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-influxdb-3.1.2/lib/logstash/outputs/influxdb.rb:171:in `flush'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/stud-0.0.22/lib/stud/buffer.rb:221:in `buffer_flush'", "org/jruby/RubyHash.java:1342:in `each'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/stud-0.0.22/lib/stud/buffer.rb:216:in `buffer_flush'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/stud-0.0.22/lib/stud/buffer.rb:193:in `buffer_flush'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/stud-0.0.22/lib/stud/buffer.rb:159:in `buffer_receive'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-influxdb-3.1.2/lib/logstash/outputs/influxdb.rb:165:in `receive'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.3-java/lib/logstash/outputs/base.rb:83:in `multi_receive'", "org/jruby/RubyArray.java:1613:in `each'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.3-java/lib/logstash/outputs/base.rb:83:in `multi_receive'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.3-java/lib/logstash/output_delegator.rb:130:in `worker_multi_receive'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.3-java/lib/logstash/output_delegator.rb:114:in `multi_receive'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.3-java/lib/logstash/pipeline.rb:301:in `output_batch'", "org/jruby/RubyHash.java:1342:in `each'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.3-java/lib/logstash/pipeline.rb:301:in `output_batch'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.3-java/lib/logstash/pipeline.rb:232:in `worker_loop'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.3-java/lib/logstash/pipeline.rb:201:in `start_workers'"], :level=>:warn}
This happens only with messages containing boolean fields. See "compr_on" below:
{
                   "message" => "<compressor> 2016-06-23T06:39:11.091+0100;true;0;7.29;0;287.62;0;299.56\r",
                "@timestamp" => "2016-06-23T05:39:11.091Z",
                      "host" => "<IP_ADDRESS>",
                    "source" => "compressor",
                  "compr_on" => true,
    "waterflow_sensor_state" => "0",
                 "waterflow" => "7.29",
    "watertemp_sensor_state" => "0",
         "water_temperature" => "287.62",
           "rt_sensor_state" => "0",
                        "rt" => "299.56"
}

this conversion, in turn, is generated by the following logstash config line:
        mutate {
            remove_field => ["port", "@version"]
            convert => { "compr_on" => "boolean" }
        }

Simply commenting out convert lines eliminates the error.
InfluxDB-relevant part of logstash config is:
influxdb {
                #Connection configuration
                host => "localhost"
                port => "8086"
                user => "logstash"
                password => "password"
                db => "dbname"

                #Data configuration
                measurement => "measurement"
                idle_flush_time => "1"
                use_event_fields_for_data_points => "true"
                send_as_tags => ["host", "source"]
            }

I can confirm this behavior I have the same problem.

A quick fix should be in influxdb.rb code, the escaped funtions are not safe for boolean types sou you need to check:
Escape tag key, tag value, or field key
def escaped(value)
!!value == value ? value : value.gsub(/[ ,=]/, ' ' => '\ ', ',' => ',', '=' => '=')
end
Escape measurements note they don't need to worry about the '=' case
def escaped_measurement(value)
!!value == value ? value : value.gsub(/[ ,]/, ' ' => '\ ', ',' => ',')
end


feature/comment-formater

Adds CommentFormater to allow the same comment's text manipulation from importers.
See https://github.com/umputun/remark/issues/156#issuecomment-411943842

Coverage increased (+0.06%) to 85.193% when pulling 8842f09f653080f83d5442199b514c72e39f3f23 on feature/comment-formater into f15af0c7dc069292a3f3e1751de6b7f2842326d9 on master.


Update quandl config docs/tests for configuration options.

Tracker Ticket: https://quandl.atlassian.net/browse/AP-389
Description

Update quandl config docs/tests for configuration options
add in a caching mechanism to prevent reading of config files on every request in a production environment

Note to the reviewer

Take note of the caching mechanism

Is there a migration?

No

Note to QA

Should be compatible with existing quandl-config usages.

Dependency

None

Screenshot

None

:+1:

@IzzatBamieh This is ready for QA. Please let me know if you want to:

Internal developer QA
QA this directly by using it in ruby/rails code
Build gem and use in wikiposit and run test suite.


Wish to run omp_kmeans on 100G dataset

Hi, I am planning to run this program on a dataset sized almost 100GB on my server(more than 200GB of mem).
Could you please tell how to implement is cause I constantly getting a 'segmentation fault' error message when the memory exceed 4GB.
I have checked the BLAS and LAPACK libraries are all 64 bits version.
omp_kmeans is also compiled using a 64bit gcc compiler.
Thank you for your kindness.

Nvidia is ramping up their deep learning efforts and you can get up to 96GB of graphic memory. It would be really cool if you could consider looking into eliminating the 32bit restriction for the cuda code. For example I noticed on a g2.2xlarge machine with Nvidia CUDA AMI (https://aws.amazon.com/marketplace/pp/B01LZMLK1K) that the read call in cuda_io.cu (binary file) was limited to read 2^31 bytes. It's a bit weird, because the machine supports 64bit

FWIW g2.2xlarge uses a single GPU with 4GB of RAM:

High-performance NVIDIA GPUs, each with 1,536 CUDA cores and 4GB of video memory

Also, 64-bit performance would suffer heavily because it needs the double-precision unit. Most GPUs (but the newest/upcoming Teslas) have miniscule capabilities for that, so a server CPU may easily outperform them. I agree the upcoming Teslas will be better suited for 64-bit though.

They also recently released p2 instances, although the rollout doesn't seem to have finished in practice: https://aws.amazon.com/ec2/instance-types/p2/

Sorry for the shameless promotion, but all people stuck with 4GB memory limit should try https://github.com/src-d/kmcuda It supports as much memory as your GPU has, runs on multiple GPUs in parallel and is capable to handle the data in float16 format with Kahan summation (hence doubled data size) . Yet still 100GB is too much, of course. I would do the following. Pick "best" X GB from 100GB where X is the amount of mem your GPU has, cluster them, and then use the centroids to assign the rest of the dataset.


Remove verify cache functions

Fixes #25

How does coverall decrease when deleting code?
By the way, I've found this useful more moving other cohorts over and https://github.com/arahuja/pytcga/issues/5

Coverage decreased (-0.08%) to 54.174% when pulling b6239492eacc71e651eeaa7b7d0bd52d16d684ca on issue-25 into fb91fe017d7f6ced17c8d2c3e8e841e8d8dac6b8 on master.

LGTM! Weird re coverage; I guess that could make sense if verify_cache got run in the tests?


Adds build for node 0.12

Note: Just realized that sqlite3 doesn't build properly on v0.12 yet - doesn't make much sense merging at this point.

Yeah we'll do this when the deps are ready


Allow showing the diff when using --in-place or --check with --diff

It can be useful to show the difference, e.g. in CI so that users know what is or should be changed.
This adds a --diff option, that, when combined with --check or --in-place, will, in addition, show the diff to stdout.
fix #125

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 0.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
0

Relevant Lines:
0

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 0.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
0

Relevant Lines:
0

💛  - Coveralls


Connection::onEnd issue

Hello Stephan,
I found an issue in node-xmpp. As we've discussed in the past, I think it is better to decouple the Connection from the Socket, so that we can use other types of "socket" to support connection : namely websockets, but also stuff like Bosh for example (if we can ever port node-xmpp to th browser)...
Right now, it assumes that when the socket triggers the 'end' event, it still exist as an object... which doesn't seem to the case for websockets.
Let me know if that makes any sense!
Julien

Forget this please... I find a more elegant solution :) It would be nice that the API on the socket that is being used by the connection is documented though!


wasi add langinfo.h

Reference: langinfo.h

@bors r+

:broken_heart: Test failed - checks-actions

@bors retry

:hourglass: Testing commit b1cb131e52689b701447a638fdc4ce5b969bfd72 with merge 567c0569e7df88fc8e7517079f0473f8289d078f...

:boom: Test timed out

@bors retry

:hourglass: Testing commit b1cb131e52689b701447a638fdc4ce5b969bfd72 with merge d3a5a103c337d4c13e1cb6fd00b50bc63905b795...

:broken_heart: Test failed - checks-actions

@bors retry

:hourglass: Testing commit b1cb131e52689b701447a638fdc4ce5b969bfd72 with merge dbebbb3acb0cb25c642f5664bff1fe439fcaf8c1...

:broken_heart: Test failed - checks-actions

@bors retry

:hourglass: Testing commit b1cb131e52689b701447a638fdc4ce5b969bfd72 with merge c32c02573f7d0fbb9323a6f82979953c4af3acad...

:sunny: Test successful - checks-actions, checks-cirrus-freebsd-11, checks-cirrus-freebsd-12, checks-cirrus-freebsd-13
Approved by: Amanieu
Pushing c32c02573f7d0fbb9323a6f82979953c4af3acad to master...


update dependency, modify session used

Purpose of the pull request

1.Please submit to dev.
2.Please contact me on wechat to discuss the details.


Add support for quartz mod

I've noticed that I can't saw quartz blocks, that are provided by this mod: https://forum.minetest.net/viewtopic.php?f=11&t=5682

Solved it by going to /quartz/settings.txt and changing setting "ENABLE_STAIRSPLUS" to "true".
Thanks to @tenplus1 for this one.


⚠ ClamAV has degraded performance

In d04ad3f, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 675 ms

Resolved: ClamAV performance has improved in f5df982.


fix: Restrict screen display timed out while video is playing

Description:

Added flag to handle screen display timed out while video is playing

fix: LEARNER-10249

The failed test cases will be fixed once https://github.com/edx/edx-mobile-marketplace-android/pull/60 is merged


How can we execute golem from Jenkins?

Hi,
Could you please guide me how can we trigger golem project from Jenkins
or
Do we have any Jenkins -plugin for golem integration.
Thanks,
Madhu

Let's assume you have
a. repository with your Golem project,
b. configured Jenkins.
Target is to create "Jenkins Freestyle Project", and be able to see reports somewhere (to see it somewhere we have script "A", that exports/converts Golem report into format acceptable for other system, and uses some API to push results).

Create New Item
Add Name and select "Freestyle Project"
Select "code management repository" for Golem project
Add "build step" - "Execute shell".
Here you can specify all the list of actions needed to prepare browsers, update python modules, etc.

Click "Build now" button, to start building the project first time, Check the result from "Console output", to find out what is missing.
I suggest also to uncheck "Delete workspace before build starts" checkbox.

Add "build step" - "Execute shell". use "golem run project_name test_name_or_suite_name".
For reporting it is needed to add another - "Execute shell". Keep in mind that "present working directory" pwd, is the project folder. You can find it somewhere in "/var/lib/jenkins/workspace".

Alternatively here's a guide: https://golem-framework.readthedocs.io/en/latest/guides/run-from-jenkins.html


Fix the file filtering in CI jobs

The binaries affected:
What this PR does / why we need it:

Do not run cloud-provider-openstack-unittest and cloud-provider-openstack-format for shell script
Disable the job for Kubernetes in-tree cinder function. I don't know when and why it was added, but don't think it's needed for CPO.
Add files filtering for the job cloud-provider-openstack-acceptance-test-csi-cinder
Do not use ^ in the files regular expression for some jobs, I found sometimes that's not working

Which issue this PR fixes:
fixes #
Special notes for reviewers:

Release note:

NONE

@ramineni @chrigl

/test cloud-provider-openstack-unittest

/test cloud-provider-openstack-unittest

/lgtm
/approve


Move NWM analysis from hytest_notebook_tutorials

Copy and refactor into hytest-org/hytest repo.

I'm plowing through the viz notebook, and I've not been able to quite resolve a question on my own... hoping @sfoks or @thodson-usgs might be able to set direction for me...
I see two different sources for finding the list of benchmark gages:
s3://esip-qhub-public/usgs/hytest/streamflow_benchmark_sites_v09.csv

and
https://raw.githubusercontent.com/USGS-python/hytest-evaluation-workflows/main/misc/streamflow_gages_v1_n5390.csv

As a novice reader, it looks to me like the same gages are represented in each, but with different columns.
I'd like to see if there is an officially blessed table/file, and perhaps we can put it in this new hytest-org/hytest repo.

It seems I did not read closely enough.... i have found that the esip copy is out of date, and the 'official' upstream copy is available from Science Base.
https://doi.org/10.5066/P972P42Z
The direct link to the csv file itself is:
https://www.sciencebase.gov/catalog/file/get/6181ac65d34e9f2789e44897?f=__disk__22%2F1a%2Fd2%2F221ad2fe9d95de17731ad35d0fc6b417a4b53ee1

Will use this as the authoritative list of 'cobalt' gagues.

cobalt = pd.read_csv(
    'https://www.sciencebase.gov/catalog/file/get/6181ac65d34e9f2789e44897?f=__disk__22%2F1a%2Fd2%2F221ad2fe9d95de17731ad35d0fc6b417a4b53ee1',
    dtype={'site_no':str, 'huc_cd':str, 'reachcode':str, 'comid':str, 'gagesII_class':str, 'aggecoregion': str},
    index_col='site_no'
    )
# Re-format the gage_id/site_no string value.  ex:   "1000000"  ==> "USGS-1000000"
cobalt.rename(index=lambda x: f'USGS-{x}', inplace=True)
print(f"{len(cobalt.index)} gages in this benchmark")


[WIP] CSV Export by Workflow

This is a rather ridiculous pull request, but it's mostly just about getting feedback on the method. I attempted to abstract classification exporting to require a "resource" instead of a project, enabling workflows or potentially federations, even though that will likely never be a good idea.
This is a case where duplicating the code would have been the vastly simpler option and this is likely the worse of the two, but I wanted to give it a shot. Most changed files are just "project"-->"resource". Controllers and controller specs are still busted and I'll probably need to ask about how to get those working later regardless.
Review checklist

[ ] First, the most important one: is this PR small enough that you can actually review it? lol. Feel free to just reject a branch if the changes are hard to review due to the length of the diff.
[ ] If there are any migrations, will they the previous version of the app work correctly after they've been run (e.g. the don't remove columns still known about by ActiveRecord).
[ ] If anything changed with regards to the public API, are those changes also documented in the apiary.apib file?
[ ] Are all the changes covered by tests? Think about any possible edge cases that might be left untested.

This seems pretty reasonable to me you as the impact of the instance type difference is pretty minimal. You could have implemented it a couple of other ways, perhaps:

Use composition and Extract the common dump worker code to a module that is included each ClassificationsExportWorker and provide the any custom behaviour in the specific classes.
Use an adapter to take either a Project / Workflow ClassificationsExportWorker instance and fit the current code.
As you said duplicate all the code without refactoring into reusable components, though i don't really think its simpler to maintain more code long term.

Culprit ended up being a one-line fix to add :create_classifications_exports to the require_login prepend_before_action. Added a couple other improvements as well. Pair programming++.

@zwolf :shipit:


Consolidate CLIENT_ID/SECRET and ARTSY_ID/SECRET #migration

https://artsy.slack.com/archives/CP9P4KR35/p1591794809087900
artsy-xapp and artsy-passport both respect implicit ARTSY_ID/SECRET from environment variables and support explicit configuration. However, Force currently maintains 2 sets of environment variables (with the same values):

CLIENT_ID/SECRET for explicitly configuring artsy-xapp, and
ARTSY_ID/SECRET for implicitly configuring artsy-passport.

This consolidates them and only uses CLIENT_ID/SECRET to explicitly configure both dependencies. We can then clean up the ARTSY_ID/SECRET from the environment variables.
I choose CLIENT_ID/SECRET because that's more consistent with other apps, but happy to change if people prefer ARTSY_ID/SECRET or something else.
Migration

[x] After deploying to staging, hokusai staging env unset ARTSY_ID ARTSY_SECRET
[x] After deploying to production, hokusai production env unset ARTSY_ID ARTSY_SECRET

Merging this and give it a try! Thanks for the reviews! 👍

Unset the environment variables for both staging and production.


Reader and processing should be separated

Actually, we send an object of type packageInfo to android/iOS handler. We should work with []byte parameters for testability purposes.

The same applies to the reading process.

Done!


Make CLion Boost.Test and CLion Catch optional dependencies

Description of the feature request:
Using 2<IP_ADDRESS>.1-api-version-223 and earlier of the plugin.
I would like to disable the CLion Boost.Test and CLion Catch plugins because they add more indexing time on top of the already high indexing time for my project. However when I try to do so from the Plugins settings, I get a dialog saying this plugin depends on those so I would also have to disable the Bazel plugin.
My project doesn't use either of these test frameworks, but vendored third-party libraries do, so the plugins trigger their indexing.
I don't know why these plugins are required dependencies.
Thanks for creating and maintaining this plugin!

What underlying problem are you trying to solve with this feature?
Indexing on large projects is already slow. I'm trying to get some speedup by disabling unneeded plugins.
What operating system, Intellij IDE and programming languages are you using? Please provide specific versions.
Ubuntu Linux 18.04, CLion 2022.3, C++
Have you found anything relevant by searching the web?
No
Any other information, logs, or outputs that you want to share?
No response

Would be really great if we could trim those dependencies

Seems like the only reference to these plugins is here so it's reasonable to make them optional
https://github.com/bazelbuild/intellij/blob/f892b55deaa9425153ea8b81f9d67ee5610566c8/clwb/src/com/google/idea/blaze/clwb/run/producers/NonBlazeProducerSuppressor.java

I got this plugin setup for development, but I've never developed Intellij plugins before. If someone could explain what I need to do (apart from removing the lines here), I could take a stab at putting up a PR.


⚠ Processors has degraded performance

In 60063d7, Processors ($STATUS_URL) experienced degraded performance:

HTTP code: 200
Response time: 47 ms

Resolved: Processors performance has improved in 1fd6a6e.


Issue Fixed #7240

Issue Reference

If we are adding multiple products to the cart then the tax will not be visible multiple times

@suraj-webkul
Closing this PR because getting duplicate commits


macOS Support

For new contributors, coming from the download page

if you would like to help you can comment on this issue
if you would like to see macOS officially you can add your 👍 feedback

You can help by building Inexor. You will encounter a multitude of issues listed below:

[ ] Fix Conan packages for Apple Clang 9.0 (@Croydon, @Fohlen )

[ ] CEF/3.2704.1424.gc3f0a5b@inexorgame/testing (COMPLETELY BROKEN ⚡)
[ ] ENet/1.3.13@inexorgame/stable (POTENTIALLY BROKEN? ⚡)

/Applications/Xcode-9.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: lib/libenet.a(win32.c.o) has no symbols
/Applications/Xcode-9.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: lib/libenet.a(win32.c.o) has no symbols

[ ] InexorGlueGen/0.6.1@inexorgame/stable (BROKEN (dependency) ⚡)

[x] Kainjow_Mustache/2.0@inexorgame/stable (header only)
[ ] Boost/1.64.0@lasote/stable (BROKEN ⚡)

[x] bzip2/1.0.6@lasote/stable

[x] pugixml/1.7@inexorgame/stable
[x] zlib/1.2.11@conan/stable

[x] Kainjow_Mustache/2.0@inexorgame/stable (header only)
[x] Protobuf/3.1.0@inexorgame/stable

extreme amounts of deprecated warnings, we should update soon to a newer Protobuf version ⚡

[x] RapidJSON/1.1.0@inexorgame/stable  (header only)
[ ] doxygen/1.8.13@inexorgame/stable (CAN'T HANDLE MACOS AT ALL ⚡)
[x] gRPC/1.1.0@inexorgame/stable

CMake Warning at CMakeLists.txt:191 (find_package):
By not providing "Findgflags.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "gflags", but
CMake did not find one.
Could not find a package configuration file provided by "gflags" with any
of the following names:
gflagsConfig.cmake
gflags-config.cmake
Add the installation prefix of "gflags" to CMAKE_PREFIX_PATH or set
"gflags_DIR" to a directory containing one of the above files.  If "gflags"
provides a separate development package or SDK, be sure it has been
installed.
[x] OpenSSL/1.0.2m@conan/stable

Potential problems: can't find symbols, can't open config file ⚡

[x] Protobuf/3.1.0@inexorgame/stable
[x] zlib/1.2.11@conan/stable

[ ] Boost/1.64.0@lasote/stable (BROKEN ⚡)
[x] bzip2/1.0.6@conan/stable
[ ] SDL2/2.0.5@lasote/testing
[ ] SDL2_image/2.0.1@lasote/stable

[ ] SDL2/2.0.5@lasote/testing
[ ] libjpeg-turbo/1.5.1@lasote/stable (BROKEN ⚡)
[ ] libpng/1.6.21@lasote/stable
[x] zlib/1.2.11@conan/stable

[x] gtest/1.8.0@lasote/stable
[x] spdlog/0.14.0@bincrafters/stable (headers only) (BROKEN (dependency) ⚡)

[ ] fmt/4.0.0@bincrafters/stable

fmt/4.0.0@bincrafters/stable package(): WARN: No files copied! (BROKEN ⚡)

[x] zlib/1.2.11@conan/stable

[ ] CI: Build all of these packages and upload them (@Croydon)

[ ] CEF (COMPLETELY BROKEN ⚡)
[ ] ENet (POTENTIALLY BROKEN? ⚡)

/Applications/Xcode-9.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: lib/libenet.a(win32.c.o) has no symbols
/Applications/Xcode-9.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: lib/libenet.a(win32.c.o) has no symbols

[ ] InexorGlueGen (BROKEN (dependency) ⚡)

[x] Kainjow_Mustache/2.0@inexorgame/stable (header only)
[ ] Boost/1.64.0@lasote/stable (BROKEN ⚡)

[x] bzip2/1.0.6@lasote/stable

[x] pugixml/1.7@inexorgame/stable
[x] zlib/1.2.11@conan/stable

[x] Protobuf
[x] RapidJSON
[ ] doxygen (CAN'T HANDLE MACOS AT ALL ⚡)
[x] gRPC

[x] OpenSSL/1.0.2m@conan/stable
[x] Protobuf/3.1.0@inexorgame/stable
[x] zlib/1.2.11@conan/stable

[ ] Boost (BROKEN ⚡)

[x] bzip2

[ ] OpenSSL
[ ] SDL2
[ ] SDL2_image

[ ] SDL2
[ ] libjpeg-turbo (BROKEN ⚡)
[ ] libpng
[x] zlib

[x] gtest
[x] spdlog

[ ] fmt

fmt/4.0.0@bincrafters/stable package(): WARN: No files copied! (BROKEN ⚡)

[x] zlib

[ ] Get compiling working (@Fohlen, @Croydon)

[ ] Get it running (@Fohlen)

[ ] Upload macOS releases in the future to GitHub releases (@Croydon)

Once all of these issues are squashed, we should be able to compile and offer macOS officially.
Shorthand install instructions
You will need clang (comes with XCode) and pip/python which usually comes pre-installed.
pip3 install conan
git clone https://github.com/inexorgame/inexor-core.git
(mkdir build && cd build && conan install .. --build=missing && conan build ..)

Known issues
It might come to problems with conan profiles. See https://github.com/conan-io/conan/issues/1778

This can take quiet some efforts to do and I am not sure how fast we can proceed :octocat:

Just referenced this issue to our download website notification.

In the case of doxygen I suggest that we are compiling a version of the macOS binaries ourselves because extracting from .dmg files is extremly tidious.

we need to extract from dmg files for:

SDL
CEF <-
doxygen

especially CEF is the problematic one. otherwise: sure everything can be recompiled.
but we do not have a solution to compile CEF anywhere since its really resource hungry to compile and probably will not be able to compile on travis or appveyor (will probably exceed the build time and needs 8GB of RAM.. too much diskspace.. i doubt it will work)

It's possible to open .dmg files with 7-zip. However, in the case of conan-doxygen I have no idea what files we need for you Conan package and what to do with them (and I guess I have the same questions for the other packages).

well doxygen needs to be findable by cmake.
Somehow a correct FindDoxygen.cmake needs to be placed somewhere, along with the binaries.
The FindDoxygen.cmake needs to get touched for that


Crash on mutableData.append(data)

What
App Crashed on
SessionDataTask.SWift
func didReceiveData(_ data: Data) {
mutableData.append(data)
}
Reproduce
Used Kingfisher as brow in cellForRow
cell.imageView.kf.setImage(with: imageURL,
placeholder: UIImage(named: "img_placeholder"),
options: [.cacheOriginalImage,
.progressiveJPEG(.default),
.transition(.fade(0.2))])
Other Comment
using pod 'Kingfisher', '~> 6.0'
to Resolve it I have removed .progressiveJPEG(.default)

I think you should update version from 6.0 to 7.1.2
If an error occurs when using it after the update, please write again.


crawler: initial commit for the crawler

lgtm!

@taxmeifyoucan when you have time, can you update the docker scripts to point to the local crawler/ folder and update docs :) We have everything in here now!


I cloned the example project. I can not listen to audio in android physical device. But working properly on emulator. And after using version 3.6.0, app crashes in release mode in main.dart file

this is the error:
java.lang.RuntimeException: Unable to get provider com.voxeet.sdk.manifests.VoxeetSdkProvider: sg.e: Subscriber class wa.z5$a and its super classes have no public methods with the @Subscribe annotation

Hi @RafidKhan, thank you for reaching out. In order to fully understand the problem you are facing, could you describe your set-up (including tools and devices you are using)? Furthermore, in our repository we have an example folder, and test_app folder. Which of these are you referring to?

I cloned the whole repo and ran the example/main.dart file. also, created a separate project and pasted code from https://pub.dev/packages/dolbyio_comms_sdk_flutter/example here. gives the same issue

Regarding the lack of audio, please let us know what parameters you use when creating and joining the conference. Also please check both the speakers on your device (the one that normally is close the the ear and the one at the bottom).

I copied from the demo project of this repo: https://pub.dev/packages/dolbyio_comms_sdk_flutter/example . this is the code I directly copied to my project..
`// Step 1. Create a new project and replace the contents of it's main.dart file with this example
// Step 2: Import the permission handler package
import 'package:permission_handler/permission_handler.dart';
// Step 3: Import the Dolby.io Communications SDK for Flutter
import 'package:dolbyio_comms_sdk_flutter/dolbyio_comms_sdk_flutter.dart';
import 'package:flutter/material.dart';
import 'package:collection/collection.dart';
import 'dart:async';
import 'dart:math';
import 'dart:core';
import 'dart:developer' as developer;
void main() {
runApp(const MaterialApp(home: FlutterScreen()));
}
class FlutterScreen extends StatefulWidget {
const FlutterScreen({Key? key}) : super(key: key);
@override
State createState() => _FlutterScreenState();
}
class _FlutterScreenState extends State {
// Step 3: Instantiate the SDK here
final dolbyioCommsSdk = DolbyioCommsSdk.instance;
TextEditingController usernameController = TextEditingController();
TextEditingController conferenceNameController = TextEditingController();
// Generate a client access token from the Dolby.io dashboard
// and insert the token to the accessToken variable
String accessToken = '';
bool isLeaving = false;
bool isJoining = false;
bool isInitializedList = false;
// Step 7: Store the participants list here
List participants = [];
// Step 7: Define StreamSubscriptions here
StreamSubscription<Event<ConferenceServiceEventNames, Participant>>?
onParticipantsChangeSubscription;
StreamSubscription<Event<ConferenceServiceEventNames, StreamsChangeData>>?
onStreamsChangeSubscription;
@override
void initState() {
super.initState();
// Step 2: Request the microphone and camera permissions
[
  Permission.bluetoothConnect,
  Permission.microphone,
  Permission.camera,
].request();

// Step 3: Call initializeSdk()
initializeSdk();

// Step 4: Call openSession()
openSession();

// Step 7: Call updateParticipantsList() with StreamSubscriptions
onParticipantsChangeSubscription =
    dolbyioCommsSdk.conference.onParticipantsChange().listen((params) {
  updateParticipantsList();
});

onStreamsChangeSubscription =
    dolbyioCommsSdk.conference.onStreamsChange().listen((params) {
  updateParticipantsList();
});

}
// Step 7: Cancel StreamSubscriptions
@override
void dispose() {
onParticipantsChangeSubscription?.cancel();
onStreamsChangeSubscription?.cancel();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Flutter SDK'), centerTitle: true),
body: Padding(
padding: const EdgeInsets.all(16),
child: !isInitializedList
? Column(
children: [
TextField(controller: usernameController, readOnly: true),
const SizedBox(height: 12),
TextField(
decoration: const InputDecoration(
hintText: 'Conference name'),
controller: conferenceNameController),
const SizedBox(height: 12),
ElevatedButton(
onPressed: () async {
// Step 5: Call joinConference()
await joinConference();
},
child: isJoining
? const Text('Joining...')
: const Text('Join the conference')),
const Divider(thickness: 2),
const Text(
"Join the conference to see the list of participants.")
],
)
: Column(children: [
Text('Conference name: ${conferenceNameController.text}',
style: const TextStyle(
fontWeight: FontWeight.w400, fontSize: 16)),
const SizedBox(height: 16),
Expanded(
child: Column(children: [
const Align(
alignment: Alignment.centerLeft,
child: Text('List of participants:',
style: TextStyle(
color: Colors.blue,
fontWeight: FontWeight.w600))),
const SizedBox(height: 16),
                    // Step 7: Display the list of participants
                    Expanded(
                      child: ListView.separated(
                          separatorBuilder:
                              (BuildContext context, int index) {
                            return const SizedBox(height: 5);
                          },
                          shrinkWrap: true,
                          itemCount: participants.length,
                          itemBuilder: (context, index) {
                            var participant = participants[index];
                            return Padding(
                              padding: const EdgeInsets.all(4),
                              child: Row(children: [
                                Expanded(
                                    flex: 1,
                                    child: SizedBox(
                                        height: 150,
                                        width: 150,
                                        child: VideoView.withMediaStream(
                                            participant: participant,
                                            mediaStream: participant.streams
                                                ?.firstWhereOrNull((s) =>
                                                    s.type ==
                                                    MediaStreamType.camera),
                                            key: ValueKey(
                                                'video_view_tile_${participant.id}')))),
                                Expanded(
                                  flex: 1,
                                  child: Column(
                                      mainAxisAlignment:
                                          MainAxisAlignment.center,
                                      children: [
                                        Text(
                                            "${participant.info?.name.toString()}"),
                                        Text(
                                            "status: ${participant.status?.name}")
                                      ]),
                                ),
                              ]),
                            );
                          }),
                    ),
                  ]),
                ),
                const SizedBox(height: 16),
                ElevatedButton(
                    style: ElevatedButton.styleFrom(primary: Colors.red),
                    onPressed: () async {
                      // Step 6: Call leaveConference()
                      await leaveConference();
                    },
                    child: isJoining
                        ? const Text('Leaving...')
                        : const Text('Leave the conference'))
              ])));

}
// Step 3: Define the initializeSdk function
Future initializeSdk() async {
// Initialize the SDK with the access token
await dolbyioCommsSdk.initializeToken(accessToken, () async {
// Request a new access token here
return accessToken;
});
}
// Step 4: Define the openSession function
Future openSession() async {
// Generate a random username
int randomNumber = Random().nextInt(1000);
usernameController.text = "user-$randomNumber";
// Open a new session for the local participant
var participantInfo = ParticipantInfo(usernameController.text, null, null);
await dolbyioCommsSdk.session.open(participantInfo);

}
// Step 5: Define the joinConference function
Future joinConference() async {
setState(() => isJoining = true);
// Create conference options
var params = ConferenceCreateParameters();
params.dolbyVoice = true;
var createOptions =
    ConferenceCreateOption(conferenceNameController.text, params, 0);

// Join the conference with audio and video
var joinOptions = ConferenceJoinOptions();
joinOptions.constraints = ConferenceConstraints(true, true);

// Join the conference
var conference = await dolbyioCommsSdk.conference.create(createOptions);
conference = await dolbyioCommsSdk.conference.join(conference, joinOptions);

// Check the conference status
if (conference.status == ConferenceStatus.joined) {
  setState(() => isJoining = false);
  developer.log('Joined to conference.');
} else {
  developer.log('Cannot join to conference.');
}

}
// Step 6: Define the leaveConference function
Future leaveConference() async {
setState(() => isLeaving = true);
await dolbyioCommsSdk.conference.leave(options: null);

setState(() => isInitializedList = false);
setState(() => isLeaving = false);

}
// Step 7: Define the updateParticipantsList method
Future updateParticipantsList() async {
try {
var conference = await dolbyioCommsSdk.conference.current();
var participantsList =
await dolbyioCommsSdk.conference.getParticipants(conference);
final availableParticipants = participantsList
.where((element) => element.status != ParticipantStatus.left);
  setState(() {
    participants = availableParticipants.toList();
    isInitializedList = true;
  });
} catch (error) {
  developer.log("Error during initializing participant list.",
      error: error);
}

}
}`

After further investigation of the crash mentioned by you, we believe that it is related to obfuscation or minifying of the Android app code. We intend to provide obfuscation rules in the next version of our SDK, however in the mean time you could switch obfuscation and minifying off, or if you prefer to obfuscate your code, you could add to you app obfuscation rules in the same way as here:

https://github.com/DolbyIO/comms-sdk-flutter/blob/release/3.6.1/test_app/android/app/build.gradle , please see lines 63 to 66,
and by using following obfuscation rules https://github.com/DolbyIO/comms-sdk-flutter/blob/release/3.6.1/test_app/android/app/proguard-rules.pro

Nevertheless when we release 3.6.1, the above should no longer be necessary.
Please let us know if this solves the crash.

Unfortunately we could not reproduce the lack of audio. Thus please check all the speakers on the device and that the volume is turned up. If you still experience this problem, please open a new issue and please let us know what device you are using.

I have figured out! its machine issue. Works fine on one computer. Throws error on two..anyways! can you please guide me about switching the speaker type?

Hi @RafidKhan. In MediaDeviceService there is a method switchSpeaker. You can also check implementation for this method in our test app (comms-sdk-flutter/test_app/lib/screens/test_buttons/media_device_service_test_buttons.dart).

This doesn't be a problem with Flutter SDK. If switchSpeaker doesn't work for you please create another issue.