Fix excess lines in TrimMode.Line with correct emoji handling

closes #63
This pull request addresses the regression introduced by PR #62, which caused texts containing emojis to exceed the specified trimLines limit in TrimMode.Line. The issue stemmed from an approach that was effective in TrimMode.Length but not suitable for handling line-based trimming with emojis.
In the case of TrimMode.Line, TextPainter.getPositionForOffset will provide the correct offset, and TextPainter.getOffsetBefore ensures that an emoji will not be split in half. Therefore, in this case, the text should not be split by runes.

Thank you!


[Question] Enable in-mesh pod to communicate with another in-mesh pod using PodIP (mTLS enabled)

What resources do I need to setup to enable communication between two in-mesh pods to communicate with each other over Pod IP.
Specifically I am facing issues with redis-sentinel trying to talk to redis-master pod using the master's Pod IP
Sentinel logs
Current master is <IP_ADDRESS>
Error: Protocol error, got "\x15" as reply type byte
Connecting to master failed.  Waiting...
Current master is <IP_ADDRESS>
Error: Protocol error, got "\x15" as reply type byte
Connecting to master failed.  Waiting...
Current master is <IP_ADDRESS>
Error: Protocol error, got "\x15" as reply type byte
Connecting to master failed.  Waiting...

$ kubectl -n mynamespace get svc redis-ha-master-svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE redis-ha-
master-svc ClusterIP <IP_ADDRESS> <none> 6379/TCP 3d23h

kubectl -n mynamespace get pod -l redis-role=master -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
redis-ha-server-0 4/4 Running 0 2d22h <IP_ADDRESS> ip-10-117-6-0.eu-west-1.compute.internal <none>

From within the sentinel pod I see failures when using the Pod IP but it succeeds when using the service IP
export SVC_IP = <IP_ADDRESS>
export POD_IP = <IP_ADDRESS>

$ redis-cli -h $POD_IP -p 6379 PING
Error: Protocol error, got "\x15" as reply type byte

$ redis-cli -h <IP_ADDRESS> -p 6379 PING
PONG

Istio version : 1.0.5
UPDATE: Additional context that I skipped in the description was that the proxy.includeIPRanges is set to the Service CIDR for the cluster, so it would not intercept pod IP traffic on the outbound.

Essentially how can I make redis-ha work on istio, with mTLS enabled across the namespace ?

With mTLS disabled this works fine. My assumption is that the inbound sidecar interception fails to validate a client certificate (since the outbound from sentinel doesnt present one, since it is directly connecting to the pod) and returns a failure.
Additional context that I skipped in the description was that the proxy.includeIPRanges is set to the Service CIDR for the cluster, so it would not intercept pod IP traffic on the outbound.
I guess this can be closed now.


failed to upgrade database: Binary was compiled with 'CGO_ENABLED=0'

After build & run i got error :
panic: failed to upgrade database: Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub
goroutine 1 [running]:
main.main()

Enable CGO when building:
CGO_ENABLED=1 go build

Should work now with CGO_ENABLED=0


:wrench: chore(documentation): update contribution guide

Summary
move the internal how to's to storybook
Additional Information
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

/cib


Add e2e tests acting-as different accounts

Closes #783.
Add test to act as different users.
Just ran the single test using go test -ginkgo.focus 'Acting-as', test passed.
Signed-off-by: Mriyam Tamuli<EMAIL_ADDRESS>

/assign @adrianludwin

Hey @adrianludwin, I initially misunderstood the task.
But now that I started testing the HNC authz features, I plan on doing these tests.

Creation of subnamespace
Setting X to be parent of Y

Having one "success" and one "failure" is probably more than good enough for e2e.

Do you mean saying first try doing with a SA and fail, then allow that SA the required permissions and it should pass?
Let me know if anything else needs to be considered.

But now that I started testing the HNC authz features, I plan on doing these tests.

Creation of subnamespace

One minor correction - you're creating full namespaces, not subnamespaces, because subnamespaces can have their parents changed, while full namespaces cannot.

Having one "success" and one "failure" is probably more than good enough for e2e.

Do you mean saying first try doing with a SA and fail, then allow that SA the required permissions and it should pass?

Yup, exactly. Thanks!

@adrianludwin  I am still confused on this

One minor correction - you're creating full namespaces, not subnamespaces, because subnamespaces can have their parents changed, while full namespaces cannot.

So what I have tried till now is,
This refers to the first point I mentioned Creation of subnamespace
So this is testing for creation of subnamespace, right?
# create parent namespace
kubectl create ns acme-org

# create service accounts
kubectl -n acme-org create sa user-a

# fail to create subnamespace
kubectl hns create sub1 -nacme-org --as system:serviceaccount:acme-org:user-a

# allow creation of subnamespace using user-a service account
kubectl -n acme-org create role org-sre --verb=create --resource=subnamespaceanchor.hnc.x-k8s.io
kubectl -n acme-org create rolebinding org-sres --role org-sre --serviceaccount=acme-org:user-a

# subnamespace should get created
kubectl hns create sub1 -nacme-org --as system:serviceaccount:acme-org:user-a

Now for the second point, Setting X to be parent of Y
I saw this part of the doc

Any regular namespace in a cluster may have its parent set. That is, you may create a namespace via kubectl create namespace foo, and then set its parent via kubectl hns set foo --parent bar. However, this first step always requires cluster-level privileges, which may not be widely granted in your cluster.

In general, to change the parent of your namespace N from A to B, you must have the following privileges:

You must be the admin of the highest namespace that will no longer be an ancestor of namespace N after this change, in order to confirm that you are happy to lose your privileges in namespace N.
You must be the admin of namespace B, in order to acknowledge that sensitive objects from B may be copied into namespace N.

I assumed I should be able to create two namespaces and try to make one the parent of the other one, I am not able to proceed just by giving the update privileges for HierarchyConfiguration
# Outside tree (as continuation of the above)
kubectl create ns child-a
kubectl create ns child-b

# fail to set parent
kubectl hns set child-b --parent child-a --as system:serviceaccount:child-b:default

# Make child-b:default the "admin" of child-b namespace
kubectl -n child-b create role team-b-sre --verb=update --resource=HierarchyConfiguration
kubectl -n child-b create rolebinding team-b-sres --role team-b-sre --serviceaccount=child-b:default

Even after this, I am not able to set parent
kubectl hns set child-b --parent child-a --as system:serviceaccount:child-b:default

Am I doing something wrong? Should I even try doing the second part or just the first part should be fine?

So this is testing for creation of subnamespace, right?

This test (while it looks good and it's correct) isn't actually needed, because you're just basically testing that K8s RBAC works. So you can leave this first part out.

Now for the second point, Setting X to be parent of Y

Just before we get into this - you used the namespaces child-a and child-b, but one of them's the parent and the other is the child, so I'd suggest calling them parent and child instead.

In general, to change the parent of your namespace N from A to B, you must have the following privileges:

You must be the admin of the highest namespace that will no longer be an ancestor of namespace N after this change, in order to confirm that you are happy to lose your privileges in namespace N.

In this case, this doesn't mean anything to you because child doesn't have an existing parent.

You must be the admin of namespace B, in order to acknowledge that sensitive objects from B may be copied into namespace N.

I think this is why your test isn't passing. You made the service account an admin of child (by giving it update permission in the child) but you didn't make it an admin of parent. This is why HNC is rejecting it.

I assumed I should be able to create two namespaces and try to make one the parent of the other one, I am not able to proceed just by giving the update privileges for HierarchyConfiguration

That's expected :) If it were that simple, we wouldn't need a dedicated test for it, since that would just be regular K8s RBAC functionality with nothing special for HNC to do.

Am I doing something wrong? Should I even try doing the second part or just the first part should be fine?

As I mentioned, it's the reverse - we only need the second part, not the first part.
Does this help?

Hey @adrianludwin this worked for me. I will be adding this in the tests.
Should I add any more cases?
kubectl create ns parent
kubectl create ns child

# fail to set the parent
kubectl hns set child --parent parent --as system:serviceaccount:child:default

kubectl -n child create role child-hnc-admin --verb=get,create,update --resource=HierarchyConfiguration
kubectl -n child create rolebinding child-hnc-admins --role child-hnc-admin --serviceaccount=child:default
kubectl -n parent create role parent-hnc-admin --verb=update --resource=HierarchyConfiguration
kubectl -n parent create rolebinding parent-hnc-admins --role parent-hnc-admin --serviceaccount=child:default
kubectl -n child create role child-ns-get --verb=get --resource=namespaces
kubectl -n child create rolebinding child-ns --role child-ns-get --serviceaccount=child:default

# after setting the above permissions, now able to set the parent
kubectl hns set child --parent parent --as system:serviceaccount:child:default

Hi @mbtamuli  any updates on this?

Closing for now, please re-open if you're planning on doing more work on it. Thanks!
/close


Installation goes wrong in virtual environment

Subject of the issue
Installation fails when working in a virtual environment.
I have created a virtual environment using Mamba, then attempted to install using pip. Neither pip install dadapy nor pip install git+https://github.com/sissa-data-science/DADApy seems to work.
The errors I get are due to Cython failing to compile.
My environment

OS: Arch Linux (kernel 6.9.6-zen)
Python version: 3.12.4
Package Version 0.3.0
Mamba version: 1.5.8
Conda version: 24.3.0

Steps to reproduce
mamba create -n "ddp"
mamba activate ddp
mamba install pip
pip install git+https://github.com/sissa-data-science/DADApy

Expected behaviour
Installation is successful.
Actual behaviour
Collecting git+https://github.com/sissa-data-science/DADApy
  Cloning https://github.com/sissa-data-science/DADApy to /tmp/pip-req-build-29idjp1x
  Running command git clone --filter=blob:none --quiet https://github.com/sissa-data-science/DADApy /tmp/pip-req-build-29idjp1x
  Resolved https://github.com/sissa-data-science/DADApy to commit a1e50f877e007a7cd77877749e14de9ce31b8494
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting numpy (from dadapy==0.3.0)
  Using cached numpy-2.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (60 kB)
Collecting scipy (from dadapy==0.3.0)
  Using cached scipy-1.14.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (60 kB)
Collecting scikit-learn (from dadapy==0.3.0)
  Using cached scikit_learn-1.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB)
Collecting matplotlib (from dadapy==0.3.0)
  Using cached matplotlib-3.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB)
Collecting seaborn (from dadapy==0.3.0)
  Using cached seaborn-0.13.2-py3-none-any.whl.metadata (5.4 kB)
Collecting contourpy>=1.0.1 (from matplotlib->dadapy==0.3.0)
  Using cached contourpy-1.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (5.8 kB)
Collecting cycler>=0.10 (from matplotlib->dadapy==0.3.0)
  Using cached cycler-0.12.1-py3-none-any.whl.metadata (3.8 kB)
Collecting fonttools>=4.22.0 (from matplotlib->dadapy==0.3.0)
  Using cached fonttools-4.53.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (162 kB)
Collecting kiwisolver>=1.3.1 (from matplotlib->dadapy==0.3.0)
  Using cached kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.4 kB)
Collecting packaging>=20.0 (from matplotlib->dadapy==0.3.0)
  Using cached packaging-24.1-py3-none-any.whl.metadata (3.2 kB)
Collecting pillow>=8 (from matplotlib->dadapy==0.3.0)
  Using cached pillow-10.3.0-cp312-cp312-manylinux_2_28_x86_64.whl.metadata (9.2 kB)
Collecting pyparsing>=2.3.1 (from matplotlib->dadapy==0.3.0)
  Using cached pyparsing-3.1.2-py3-none-any.whl.metadata (5.1 kB)
Collecting python-dateutil>=2.7 (from matplotlib->dadapy==0.3.0)
  Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
Collecting joblib>=1.2.0 (from scikit-learn->dadapy==0.3.0)
  Using cached joblib-1.4.2-py3-none-any.whl.metadata (5.4 kB)
Collecting threadpoolctl>=3.1.0 (from scikit-learn->dadapy==0.3.0)
  Using cached threadpoolctl-3.5.0-py3-none-any.whl.metadata (13 kB)
Collecting pandas>=1.2 (from seaborn->dadapy==0.3.0)
  Using cached pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (19 kB)
Collecting pytz>=2020.1 (from pandas>=1.2->seaborn->dadapy==0.3.0)
  Using cached pytz-2024.1-py2.py3-none-any.whl.metadata (22 kB)
Collecting tzdata>=2022.7 (from pandas>=1.2->seaborn->dadapy==0.3.0)
  Using cached tzdata-2024.1-py2.py3-none-any.whl.metadata (1.4 kB)
Collecting six>=1.5 (from python-dateutil>=2.7->matplotlib->dadapy==0.3.0)
  Using cached six-1.16.0-py2.py3-none-any.whl.metadata (1.8 kB)
Using cached matplotlib-3.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.3 MB)
Using cached numpy-2.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (19.0 MB)
Using cached scikit_learn-1.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.1 MB)
Using cached scipy-1.14.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (40.8 MB)
Using cached seaborn-0.13.2-py3-none-any.whl (294 kB)
Using cached contourpy-1.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (309 kB)
Using cached cycler-0.12.1-py3-none-any.whl (8.3 kB)
Using cached fonttools-4.53.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.9 MB)
Using cached joblib-1.4.2-py3-none-any.whl (301 kB)
Using cached kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB)
Using cached packaging-24.1-py3-none-any.whl (53 kB)
Using cached pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.7 MB)
Using cached pillow-10.3.0-cp312-cp312-manylinux_2_28_x86_64.whl (4.5 MB)
Using cached pyparsing-3.1.2-py3-none-any.whl (103 kB)
Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
Using cached threadpoolctl-3.5.0-py3-none-any.whl (18 kB)
Using cached pytz-2024.1-py2.py3-none-any.whl (505 kB)
Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Using cached tzdata-2024.1-py2.py3-none-any.whl (345 kB)
Building wheels for collected packages: dadapy
  Building wheel for dadapy (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for dadapy (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [163 lines of output]
      OpenMP supported
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-cpython-312
      creating build/lib.linux-x86_64-cpython-312/dadapy
      copying dadapy/__init__.py -> build/lib.linux-x86_64-cpython-312/dadapy
      copying dadapy/base.py -> build/lib.linux-x86_64-cpython-312/dadapy
      copying dadapy/clustering.py -> build/lib.linux-x86_64-cpython-312/dadapy
      copying dadapy/data.py -> build/lib.linux-x86_64-cpython-312/dadapy
      copying dadapy/data_sets.py -> build/lib.linux-x86_64-cpython-312/dadapy
      copying dadapy/density_advanced.py -> build/lib.linux-x86_64-cpython-312/dadapy
      copying dadapy/density_estimation.py -> build/lib.linux-x86_64-cpython-312/dadapy
      copying dadapy/feature_weighting.py -> build/lib.linux-x86_64-cpython-312/dadapy
      copying dadapy/id_discrete.py -> build/lib.linux-x86_64-cpython-312/dadapy
      copying dadapy/id_estimation.py -> build/lib.linux-x86_64-cpython-312/dadapy
      copying dadapy/kstar.py -> build/lib.linux-x86_64-cpython-312/dadapy
      copying dadapy/metric_comparisons.py -> build/lib.linux-x86_64-cpython-312/dadapy
      copying dadapy/neigh_graph.py -> build/lib.linux-x86_64-cpython-312/dadapy
      copying dadapy/plot.py -> build/lib.linux-x86_64-cpython-312/dadapy
      creating build/lib.linux-x86_64-cpython-312/dadapy/_utils
      copying dadapy/_utils/__init__.py -> build/lib.linux-x86_64-cpython-312/dadapy/_utils
      copying dadapy/_utils/density_estimation.py -> build/lib.linux-x86_64-cpython-312/dadapy/_utils
      copying dadapy/_utils/differentiable_imbalance.py -> build/lib.linux-x86_64-cpython-312/dadapy/_utils
      copying dadapy/_utils/discrete_functions.py -> build/lib.linux-x86_64-cpython-312/dadapy/_utils
      copying dadapy/_utils/id_estimation.py -> build/lib.linux-x86_64-cpython-312/dadapy/_utils
      copying dadapy/_utils/metric_comparisons.py -> build/lib.linux-x86_64-cpython-312/dadapy/_utils
      copying dadapy/_utils/utils.py -> build/lib.linux-x86_64-cpython-312/dadapy/_utils
      running egg_info
      writing dadapy.egg-info/PKG-INFO
      writing dependency_links to dadapy.egg-info/dependency_links.txt
      writing requirements to dadapy.egg-info/requires.txt
      writing top-level names to dadapy.egg-info/top_level.txt
      reading manifest file 'dadapy.egg-info/SOURCES.txt'
      writing manifest file 'dadapy.egg-info/SOURCES.txt'
      /tmp/pip-build-env-fhw316zr/overlay/lib/python3.12/site-packages/setuptools/command/build_py.py:215: _Warning: Package 'dadapy._cython' is absent from the `packages` configuration.
      !!

              ********************************************************************************
              ############################
              # Package would be ignored #
              ############################
              Python recognizes 'dadapy._cython' as an importable package[^1],
              but it is absent from setuptools' `packages` configuration.

              This leads to an ambiguous overall configuration. If you want to distribute this
              package, please make sure that 'dadapy._cython' is explicitly added
              to the `packages` configuration field.

              Alternatively, you can also rely on setuptools' discovery methods
              (for example by using `find_namespace_packages(...)`/`find_namespace:`
              instead of `find_packages(...)`/`find:`).

              You can read more about "package discovery" on setuptools documentation page:

              - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html

              If you don't want 'dadapy._cython' to be distributed and are
              already explicitly excluding 'dadapy._cython' via
              `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
              you can try to use `exclude_package_data`, or `include-package-data=False` in
              combination with a more fine grained `package-data` configuration.

              You can read more about "package data files" on setuptools documentation page:

              - https://setuptools.pypa.io/en/latest/userguide/datafiles.html

              [^1]: For Python, any directory (with suitable naming) can be imported,
                    even if it does not contain any `.py` files.
                    On the other hand, currently there is no concept of package data
                    directory, all directories are treated like packages.
              ********************************************************************************

      !!
        check.warn(importable)
      /tmp/pip-build-env-fhw316zr/overlay/lib/python3.12/site-packages/setuptools/command/build_py.py:215: _Warning: Package 'dadapy._utils.discrete_volumes' is absent from the `packages` configuration.
      !!

              ********************************************************************************
              ############################
              # Package would be ignored #
              ############################
              Python recognizes 'dadapy._utils.discrete_volumes' as an importable package[^1],
              but it is absent from setuptools' `packages` configuration.

              This leads to an ambiguous overall configuration. If you want to distribute this
              package, please make sure that 'dadapy._utils.discrete_volumes' is explicitly added
              to the `packages` configuration field.

              Alternatively, you can also rely on setuptools' discovery methods
              (for example by using `find_namespace_packages(...)`/`find_namespace:`
              instead of `find_packages(...)`/`find:`).

              You can read more about "package discovery" on setuptools documentation page:

              - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html

              If you don't want 'dadapy._utils.discrete_volumes' to be distributed and are
              already explicitly excluding 'dadapy._utils.discrete_volumes' via
              `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
              you can try to use `exclude_package_data`, or `include-package-data=False` in
              combination with a more fine grained `package-data` configuration.

              You can read more about "package data files" on setuptools documentation page:

              - https://setuptools.pypa.io/en/latest/userguide/datafiles.html

              [^1]: For Python, any directory (with suitable naming) can be imported,
                    even if it does not contain any `.py` files.
                    On the other hand, currently there is no concept of package data
                    directory, all directories are treated like packages.
              ********************************************************************************

      !!
        check.warn(importable)
      creating build/lib.linux-x86_64-cpython-312/dadapy/_cython
      copying dadapy/_cython/cython_clustering.c -> build/lib.linux-x86_64-cpython-312/dadapy/_cython
      copying dadapy/_cython/cython_clustering_v2.c -> build/lib.linux-x86_64-cpython-312/dadapy/_cython
      copying dadapy/_cython/cython_density.c -> build/lib.linux-x86_64-cpython-312/dadapy/_cython
      copying dadapy/_cython/cython_differentiable_imbalance.c -> build/lib.linux-x86_64-cpython-312/dadapy/_cython
      copying dadapy/_cython/cython_distances.c -> build/lib.linux-x86_64-cpython-312/dadapy/_cython
      copying dadapy/_cython/cython_grads.c -> build/lib.linux-x86_64-cpython-312/dadapy/_cython
      copying dadapy/_cython/cython_maximum_likelihood_opt.c -> build/lib.linux-x86_64-cpython-312/dadapy/_cython
      copying dadapy/_cython/cython_maximum_likelihood_opt_full.c -> build/lib.linux-x86_64-cpython-312/dadapy/_cython
      copying dadapy/_cython/cython_overlap.c -> build/lib.linux-x86_64-cpython-312/dadapy/_cython
      creating build/lib.linux-x86_64-cpython-312/dadapy/_utils/discrete_volumes
      copying dadapy/_utils/discrete_volumes/L_coefficients_exact.dat -> build/lib.linux-x86_64-cpython-312/dadapy/_utils/discrete_volumes
      copying dadapy/_utils/discrete_volumes/L_coefficients_float.dat -> build/lib.linux-x86_64-cpython-312/dadapy/_utils/discrete_volumes
      copying dadapy/_utils/discrete_volumes/V_exact.dat -> build/lib.linux-x86_64-cpython-312/dadapy/_utils/discrete_volumes
      copying dadapy/_utils/discrete_volumes/L_coefficients_exact.dat -> build/lib.linux-x86_64-cpython-312/dadapy/_utils/discrete_volumes
      copying dadapy/_utils/discrete_volumes/L_coefficients_float.dat -> build/lib.linux-x86_64-cpython-312/dadapy/_utils/discrete_volumes
      copying dadapy/_utils/discrete_volumes/V_exact.dat -> build/lib.linux-x86_64-cpython-312/dadapy/_utils/discrete_volumes
      running build_ext
      building 'dadapy._cython.cython_clustering' extension
      creating build/temp.linux-x86_64-cpython-312
      creating build/temp.linux-x86_64-cpython-312/dadapy
      creating build/temp.linux-x86_64-cpython-312/dadapy/_cython
      gcc -pthread -B /home/masca/miniforge3/envs/sissa/compiler_compat -fno-strict-overflow -DNDEBUG -O2 -Wall -fPIC -O2 -isystem /home/masca/miniforge3/envs/sissa/include -fPIC -O2 -isystem /home/masca/miniforge3/envs/sissa/include -fPIC -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -I/tmp/pip-build-env-fhw316zr/overlay/lib/python3.12/site-packages/numpy/_core/include -I/home/masca/miniforge3/envs/sissa/include/python3.12 -c dadapy/_cython/cython_clustering.c -o build/temp.linux-x86_64-cpython-312/dadapy/_cython/cython_clustering.o
      In file included from /home/masca/miniforge3/envs/sissa/include/python3.12/Python.h:38,
                       from dadapy/_cython/cython_clustering.c:35:
      dadapy/_cython/cython_clustering.c: In function ‘__pyx_f_5numpy_PyDataType_SHAPE’:
      dadapy/_cython/cython_clustering.c:4232:39: error: ‘PyArray_Descr’ {aka ‘struct _PyArray_Descr’} has no member named ‘subarray’
       4232 |     __Pyx_INCREF(((PyObject*)__pyx_v_d->subarray->shape));
            |                                       ^~
      /home/masca/miniforge3/envs/sissa/include/python3.12/pyport.h:24:38: note: in definition of macro ‘_Py_CAST’
         24 | #define _Py_CAST(type, expr) ((type)(expr))
            |                                      ^~~~
      /home/masca/miniforge3/envs/sissa/include/python3.12/object.h:661:35: note: in expansion of macro ‘_PyObject_CAST’
        661 | #  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
            |                                   ^~~~~~~~~~~~~~
      dadapy/_cython/cython_clustering.c:1861:27: note: in expansion of macro ‘Py_INCREF’
       1861 |   #define __Pyx_INCREF(r) Py_INCREF(r)
            |                           ^~~~~~~~~
      dadapy/_cython/cython_clustering.c:4232:5: note: in expansion of macro ‘__Pyx_INCREF’
       4232 |     __Pyx_INCREF(((PyObject*)__pyx_v_d->subarray->shape));
            |     ^~~~~~~~~~~~
      dadapy/_cython/cython_clustering.c:4233:36: error: ‘PyArray_Descr’ {aka ‘struct _PyArray_Descr’} has no member named ‘subarray’
       4233 |     __pyx_r = ((PyObject*)__pyx_v_d->subarray->shape);
            |                                    ^~
      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for dadapy
Failed to build dadapy
ERROR: Could not build wheels for dadapy, which is required to install pyproject.toml-based projects

I have found a workaround: I am not sure all the passages are needed and not sure if it works on machine other than mine.
In order:

Create a virtual environment (with virtualenvwrapper); updated pip and installed setuptools
I have installed NumPy v1.26.4 (last before v2.0.0)
I have cloned the repo (latest version)
I have installed cython (from pip) and cythonised all the *.pyx in the Git/GitHub/DADApy/dadapy/_cython
Then, we installed doing python setup.py build_ext --inplace and pip install . in the relevant directory.

This is the output of pip list:
pip list
Package         Version
--------------- -----------
contourpy       1.2.1
cycler          0.12.1
Cython          3.0.10
dadapy          0.3.0
fonttools       4.53.0
joblib          1.4.2
kiwisolver      1.4.5
matplotlib      3.9.0
numpy           1.26.4
packaging       24.1
pandas          2.2.2
pillow          10.3.0
pip             24.1
pyparsing       3.1.2
python-dateutil 2.9.0.post0
pytz            2024.1
scikit-learn    1.5.0
scipy           1.14.0
seaborn         0.13.2
setuptools      70.1.1
six             1.16.0
threadpoolctl   3.5.0
tzdata          2024.1

The version of Python is 3.12.4 and gcc is 14.1.1.

Hi @mascaretti, as already written in #131, we found out this was a compatibility problem of cython with numpy 2.0. Thanks to @diegodoimo change in 6736b147fd4a5585d924a7e3ea12c44beb4e2763 we released version 0.3.1 which now you should be able to install correctly

I can confirm.
Running pip install dadapy works now


Done

"menuState = MenuState::LOGGED_IN" should only happen when login process was successfull (in try)
Exceptions with different ways of handling should have different classes
Commit messages should be more clear rather than "Done" and "almost complete"
Try making your program better for next homework
Good luck bro :)


CME Feature: Drag edge to canvas

When user drags edge to canvas he gets shown context menu with few possible options. ? means that the part should be implemented only if it proves to be useful:

! Create new class through dialog ?and? then show another dialog to create new connection to the created class.
? Select existing class(es?) as target of connection and show create connection dialog(s) for each.

The menu for the create new class might be textual and contain the type of edge to be created to the newly created entity also it might be only single-level menu (that is without the select existing classes - in such case 1 level would be the select and create and the second level for create would be the following options):

Relationship
Profile
Generalization parent
Generalization child


error messages after 11th account

hey guys , so after the 11th login, the game will just put out error messages such as "undefined error" or something with the firewall is off. After you wait for around 2h it seems to be refreshed again and one can start logging in as usual
Is there a way to prevent this from happening?

I get something to the liking of "cannot contact the login server".  If I wait, then I can resume going through my accounts.  I think it is a Anet thing but IDK.

https://github.com/TheCheatsrichter/Gw2_Launchbuddy/issues/280
Duplicate. Merged with newer issue


Update multilang modules

As it is now required to answer to the activation and deactivation, I added those to the javascript files because the examples stopped working.
I updated ruby and python as well, but they don't have that issue because they always send sync without waiting for a callback.
But now you should be able to implement those as well in your code depending on those libs.

I stumbled over that while playing around with the 1.1.x branch, so you probably need to merge that to those branches as well. Not quite sure since when the new protocol is in place.

@bitcloud
Nice finding. Could you please follow-up workflow for contribution? Guide link is here: https://github.com/apache/storm/blob/master/DEVELOPER.md#workflows
We encourage making commits squashed into one, with commit title as same as JIRA number + summary (which will be same or at least similar to PR's title.)
Thanks in advance!

hey @HeartSaVioR I checked those before and thought this finding applies to
For small patches, feel free to submit pull requests directly for those patches.
so there is no need for a jira ticket?
Misst that about squashing so gonna fix that right away :)
marry xmas! :)

@bitcloud
I think it is always good to have associated issue (unless it is quick fix) but we could treat this as small patch too. Either is fine for me.
Btw, even small patch, you are encouraged to write both commit title and title of PR to summarize which things you're addressing. You could imagine the case finding a commit in commit list when we have encountered specific issue.

You are very right. It just felt that those modules pretty much fly unter the radar, as there are no testcases as well currently. Will create an jira account and submit an issue.
I checked jira first as well before fixing and then there would be some documentation about it.
At some point it felt like the github issues are somehow synchronized to jira ;-)
Do you think the titel of commit and PR is now suitable enough?

@bitcloud Sorry to modify the comment. I should've added a new comment. Please re-check my latest comment above.

way better. updated and created issue. hope we are all set now ;-)


Added method 'ZoomToFitCentered' to Diagram

I hope this is adequate - please don't hestitate to correct it / ask for changes!

Thanks! From what I can see, this should work fine. I'll try to get it merged soon. Please ping me if it's not done within a week from now.


Typo on Repo Description

Describe the bug
The repo states:
Financial portfolio optimisation in python, including classical efficient frontier, Black-Litterman, Hierarchical Risk Parity
There is a small typo on optimisation:
Financial portfolio optimization in python, including classical efficient frontier, Black-Litterman, Hierarchical Risk Parity

Hi @gonzalesMK, thanks for your report but the optimisation is British English
Ref: https://www.oxfordlearnersdictionaries.com/definition/english/optimize?q=optimise

Hey, I just learned something new today!  :smile:
Sorry for misreporting.

np you're welcome


Proto Console App

Should we add this project to BCTech repo?
E.g. here:
https://github.com/microsoft/BCTech/tree/master/samples/PowerBi/TranslateYourApp
?


Remove MapPin and replace with LocationOfInterest containing a single point

Added a SimpleMapLocationOfInterest to allow the wrapping of a LocationOfInterest and implement MapLocationOfInterest. Once we finish removing the MapPin, MapPolygon, and MapGeoJson it should be easier to remove the MapLocationOfInterest wrapper altogether and then we can remove the SimpleMapLocationOfInterest as well.

Towards #929

Codecov Report

Merging #1268 (37cf8bb) into master (cbd6d02) will increase coverage by 0.19%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master    #1268      +/-   ##
============================================
+ Coverage     29.34%   29.54%   +0.19%
- Complexity      780      782       +2
============================================
  Files           292      291       -1
  Lines          7104     7071      -33
  Branches        390      382       -8
============================================
+ Hits           2085     2089       +4
+ Misses         4910     4872      -38
- Partials        109      110       +1

Impacted Files
Coverage Δ

...nd/ui/home/mapcontainer/PolygonDrawingViewModel.kt
85.40% <0.00%> (-0.21%)
:arrow_down:

...ound/ui/home/mapcontainer/MapContainerViewModel.kt
0.00% <0.00%> (ø)

...round/com/google/android/ground/ui/map/MapPin.java

...d/com/google/android/ground/ui/map/MapGeoJson.java

...droid/ground/ui/map/SimpleMapLocationOfInterest.kt
100.00% <0.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


LL40LS driver cause crash

Describe the bug
With current master & Pixhawk4 combo, when LL40LS app started command line interface stopped. If LL40LS app is set to started during boot, nsh command is not working.
To Reproduce
Steps to reproduce the behavior:

Flash master
Connect LL40LS to i2c
Set SENS_EN_LL40LS Enabled
See console output (via console cable)

Expected behavior
When type a command on nsh, command should work.
Log Files and Screenshots
Attached.

@mcsauder have you successfully used the LL40LS on i2c recently?

@hyonlim would you be able to get the full boot output from the beginning?

This is a bit of a leap, but one possibility is we may need to increase CONFIG_MAX_TASKS.
https://github.com/PX4/Firmware/compare/master...dagar:pr-task_max?expand=1

https://github.com/PX4/Firmware/pull/13285 solves this problem. Thanks!


Added support for Locale variants

WeblateMessageSource:

changed Set existingLocales to Set existingCodes.
This way locales can be registered after the codes are loaded.
variant and script translations are now loaded;

WeblateCodes:

stores a map of Locales to weblate-codes

See  #21 for my version


Use cref etc. information from XML documentation to generate links in tooltips and Info Panel

Describe the bug**
If something is documented with XML docs and they reference a generic type, the info tooltip displays these generic types incorrectly. It also breaks text following them.
It seems the backtick character ` is interpreted as markdown.
/// <summary>
/// Testing <see cref="T:Async`1" /> and some more text before <see cref="T:Async`1" />.
/// </summary>
let x = 1

Screenshots

There is sort of a workaround for the display issue that is compatible with FSharp.Formatting (haven't tested in VS/Rider).
/// <summary>
/// Testing ``<see cref="T:Async`1" />`` and some more text before ``<see cref="T:Async`1" />``.
/// </summary>
let x = 1

However, after doing this to a few XML docs, VSCode starts to heavily lag and eventually completely hangs. I've even seen VSCode bomb after doing this to one XML doc.

Hello,
the problem you are encountering with the workaround is related to https://github.com/ionide/ionide-vscode-fsharp/issues/1073
There is probably something in FSAC that's causing this problem but we aren't able to find the reason...
About the problem of display it is coming from
https://github.com/fsharp/FsAutoComplete/blob/1e1f5e5338ecc69fb8103238d8fb44901d608dad/src/FsAutoComplete.Core/TipFormatter.fs#L81-L88
because we are just surrouding the extracted with ` so the code generates this markdown like that `Async`1`.
@baronfel @Krzysztof-Cieslak What should we display in case like these?
Should we display the non generic version Async or the generic version Async<_> ?

Commenting here just to know what will happen.

We should have proper process of 'see' links to resolve them to their known members: in this case whatever generic parameter name Async is defined with is what we should render in the tooltip, ideally with a hyperlink to either go to that type or open the info panel on that type

Generating an hyperlink should be doable now that https://github.com/microsoft/vscode-languageserver-node/issues/503 has been fixed.
The things, I don't know how to do is how to get the type information from the tips. Is their an example somewhere?

We don't currently have a nice way to resolve a type from the name...it's kinda an open question in tooling I think.  At least as of now we are properly escaping the XMLdocs for See xmldoc:

Very happy with that in the interim, big improvement over the previous formatting!

I've renamed the issue to refocus it on including links -  the issue with formatting was fixed a while ago.

I tried several time to look into this issue but I just don't know how to do it.
In order to generate a showDocumentation command we need the assembly name. But how can we find the assembly name from just a type name?
Any ideas?


Backport testnode config changes

there was a commit that was added to #2167 https://github.com/celestiaorg/celestia-app/pull/2167/commits/69df0e2daab9babef62735aecfe394e7930e09e5 that we should upstream to main

this was added to v2 to ensure that we don't accidently break the node tests

this was added to v2 to ensure that we don't accidently break the node tests


chore: upgrade chokidar to v4

What this PR solves / how to test
Upgrades to the latest version of chokidar
Author has addressed the following

Tests

[ ] TODO (before merge)
[ ] Tests included
[x] Tests not necessary because: functionality should already be covered by tests

E2E Tests CI Job required? (Use "e2e" label or ask maintainer to run separately)

[ ] I don't know
[ ] Required
[x] Not required because: covered by non-e2e

Changeset (Changeset guidelines)

[ ] TODO (before merge)
[x] Changeset included
[ ] Changeset not necessary because:

Public documentation

[ ] TODO (before merge)
[ ] Cloudflare docs PR(s):
[x] Documentation not necessary because: docs are all still accurate

Happy to update this if we can get confirmation it's going to be merged, but I'm not going to do the work of keeping it up-to-date for it to just sit here ignored

@benmccann apologies, this completely slipped off our radar. Could you re-open? I'll make sure this gets merged & released—thanks for the PR!

thanks @penalosa! I've reopened and rebased this PR


Considerations for reducing PPYoloELoss/loss_iou

💡 Your Question
I am training an object detector (yolo_nas_s) on a custom dataset from scratch (i.e. without using pretrained weights). The result is good but for the problem I am trying to solve, I need the predicted bounding boxes to be as close to the labeled bounding boxes as possible. Currently, I am using the following parameters with default transformations and getting a training PPYoloELoss/loss_iou of around 0.06 and validation PPYoloELoss/loss_iou of 0.02:
train_params = {     'silent_mode': False,     "average_best_models":True,     "warmup_mode": "linear_epoch_step",     "warmup_initial_lr": 1e-6,     "lr_warmup_epochs": 3,     "initial_lr": 5e-4,     "lr_mode": "cosine",     "cosine_final_lr_ratio": 0.1,     "optimizer": "Adam",     "optimizer_params": {"weight_decay": 0.0001},     "zero_weight_decay_on_bias_and_bn": True,     "ema": True,     "ema_params": {"decay": 0.9, "decay_type": "threshold"},     "max_epochs": EPOCHS,     "mixed_precision": True,     "loss": PPYoloELoss(         use_static_assigner=False,         num_classes=len(dataset_params['classes']),         reg_max=16     ),     "valid_metrics_list": [         DetectionMetrics_050(             score_thres=0.1,             top_k_predictions=300,             num_cls=len(dataset_params['classes']),             normalize_targets=True,             post_prediction_callback=PPYoloEPostPredictionCallback(                 score_threshold=0.01,                 nms_top_k=1000,                 max_predictions=300,                 nms_threshold=0.7             )         ),         DetectionMetrics_050_095(             score_thres=0.1,             top_k_predictions=300,             num_cls=len(dataset_params['classes']),             normalize_targets=True,             post_prediction_callback=PPYoloEPostPredictionCallback(                 score_threshold=0.01,                 nms_top_k=1000,                 max_predictions=300,                 nms_threshold=0.7             )         )     ],     "metric_to_watch": 'mAP@0.50:0.95' }
yolov5 reduces the box_loss(box regression loss) quite low for the same dataset. Are there any suggestions to improve?
Versions
No response

Well, first idea is to increase the iou weight. This can be done through iou_loss_weight argument in PPYoloELoss.
@BloodAxe Any more sophisticated ideas perhaps?

I think it is not fair to compare losses of yolov5 and yolo_nas_s for a number of reasons:

We may be using different IoU loss functions (Nowadays no one is using vanilla IoU for box regression, it is either GIoU/DIoU/CIoU or EIoU). I'm not familiar with yolov5 to say which one they use, in YoloNAS we are using GIoU
Regardless of IoU loss flavor, there is also IoU weight hyperparameter that controls gain of this component to total loss. 99% these are different between YoloV5 and YoloNAS too.
There is also per-anchor score multiplier that also affect the IoU loss

So all in all it is just incorrect to assume iou losses share the same 'axis'.
mAP/AR metrics are better alternative to compare, IMO.
As @shaydeci pointed out - you certainly can increase IoU and DFL loss weights if you willing your model to focus on accurate regression.

Thanks for the pointers.
Increasing the weight does not seem to make a significant difference in a trial I did for now. But it does answer my question.


small things

I have a few syntactic comments on eigenspacedecomposition.jl. The real work is done there in left_eigen and row_echelon_form!. These need to be strictly typed, but

we should use AbstractMatrix rather than Matrix.
row_echelon_form, [right|left]_nullspace, eigen_decomposition!, etc. should take AbstractMatrix (without T)
normalize is never used (and is a very strange function, semantically :)
(in _find_l) I've never seen !(j isa Nothing). Is there a benefit over j !== nothing (which I believe is more standard? correct me if I'm wrong)
both of the occurrences of findfirst can be called on @view.

But really thanks for writing those!

Sounds good. I don't understand the @view part though....

e.g. ```julia
j = findfirst(x -> !iszero(x), A[pos+1:end, i])
this allocates unnecessary vector `A[pos+1:end, i]`. `@view A[pos+1:end, i]` will not allocate, at least if `findfirst` is inlined (and will not allocate unconditionally on julia 1.5)

Ah! I see. I added this. Are the signatures in esd alright, now?

did you push your changes? ;)

Did you check out the smallthings branch? ;)

no I didn't;) I was waiting for PR :)

closed by #6


Revert "Initial SRU Implementation (#13978)"

This reverts commit e3e2ac9181c42eb82548726d8a250944b56180fd.

Should I submit the original PR again?

Please do. I will add the API review tag to it.
You will also need to update the api_compatibility_test goldens.


Upload an empty file to PackageArtifacts when no packages are produced

Workaround failure in official build.

Test build: https://dev.azure.com/dnceng/internal/_build/results?buildId=2404986&view=results


FIx documentation (mocking skopt, updating counting functions).

Fixes documentation to mock skopt correctly for rtd.
Updates documentation for counting functions (_get_counts, _get_tc_counts) to indicate that the counts are not raw counts, but effective counts scaled by propensity.

@rsyi Can you please add additional documentation or references to explain the motivation, pros and cons of applying effective count instead of raw count .


[Bug] sparse vectors and values don't work in upserting or querying, but Python and REST works

Is this a new bug?

[X] I believe this is a new bug
[X] I have searched the existing issues, and I could not find an existing issue for this bug

Current Behavior
When upserting using sparseValues or querying using sparseVector according to the docs, the results are not using the sparse values for either endpoint.
I noticed the tests simply test if the request is OK, and not actually checking that the values give some sort of different value, which would be more appropriate to check that the sparse values have an effect (which they do). When testing the python client, both upserting and querying works, but the API in this javascript client don't work for either request. I looked through the docs here and tried to find a reason to it in your source code to no avail
Using the Python API (the top 5 vectors have upserted sparse values)
{
  "matches":[
    {
      "id":"93690",
      "score":8.97476578,
      "values":[

      ]
    },
    {
      "id":"42817",
      "score":2.9199748,
      "values":[

      ]
    },
    {
      "id":"66166",
      "score":1.56526351,
      "values":[

      ]
    },
    {
      "id":"54510",
      "score":1.12963557,
      "values":[

      ]
    },
    {
      "id":"93695",
      "score":0.960861206,
      "values":[

      ]
    },
    {
      "id":"77403",
      "score":0.819498241,
      "values":[

      ]
    },
    {
      "id":"77019",
      "score":0.790361524,
      "values":[

      ]
    },
    {
      "id":"93621",
      "score":0.775855958,
      "values":[

      ]
    },
    {
      "id":"93692",
      "score":0.766911685,
      "values":[

      ]
    },
    {
      "id":"93687",
      "score":0.755503654,
      "values":[

      ]
    }
  ]

Using the same query using the node API results in a different result (due to it not respecting the sparse values in the query request). See especially the first entry and compare it to the above python output.
[
  {
    "id": "93690",
    "score": 0.772066057,
    "values": []
  },
  {
    "id": "93621",
    "score": 0.767984629,
    "values": []
  },
  {
    "id": "93692",
    "score": 0.75923115,
    "values": []
  },
  {
    "id": "54510",
    "score": 0.758593678,
    "values": []
  },
  {
    "id": "93687",
    "score": 0.747873187,
    "values": []
  },
  {
    "id": "93686",
    "score": 0.746405125,
    "values": []
  },
  {
    "id": "93680",
    "score": 0.745493054,
    "values": []
  },
  {
    "id": "93678",
    "score": 0.744989276,
    "values": []
  },
  {
    "id": "93679",
    "score": 0.743263364,
    "values": []
  },
  {
    "id": "93683",
    "score": 0.738592684,
    "values": []
  },
]

Query request in this javascript API is
const queryRequest = {
            vector: dense,
            sparseVector: sparse,
            topK: params.limit,
            filter: filters,
        }

Upsert request is (unmodified this works fine using REST)
const upsertRequest = {
        id: my_id,
        sparseValues,
        values: vectors
        metadata,
}

I also tried different naming such as sparse_vector or sparse_values with no success.
I made my own workaround for now using REST API using Axios, which works great. I'm using the same request object as I am using in the javascript API here, and the REST API works as expected just as with python.
Expected Behavior
API should respect sparse values in both upsert and query endpoints.
I suggest creating a test to check that the score returned is different when using sparseVector in query vs not using it.
Steps To Reproduce

Upsert a vector using this API including sparseValues
Query the vector using sparseVector
Upsert the vector using the python client
Query the vector using the python client
Query the vector using this javascript API

Steps 3-4 work
Steps 2 and 5 don't give the same output as with the python client
Relevant log output
No response
Environment
- **OS**: Dockerfile using `FROM node:16`
- **Language version**:
- **Pinecone client version**: 0.0.14 (tried 0.0.12 as well)

Additional Context
Awesome library otherwise! It seems to have got quite the traction, so I hope this issue helps. Let me know if you need more context that can help you debug!

This issue isn't resolved so not sure if the maintainers have seen/acknowledged/fixed it. Though there have been 3 new versions since I reported it, it could be fixed, but haven't tested it.  I'll comment again if I  test it, but the workaround works fine so I'm not very inclined to jump in right away

Is this still the case? I'm about to re-upsert our vectors to include sparse-dense vectors now, and would love to know if I need to implement @simwijs-evolante's workaround.

Is this still the case? I'm about to re-upsert our vectors to include sparse-dense vectors now, and would love to know if I need to implement @simwijs-evolante's workaround.

I looked through the changes in the code from the releases and can't see a test that goes through this edge case I am referring to. Since the upserting sparse values test only checks that it returns matches, and not that the result actually returns sparse values (proving that the sparse values actually are upserted). So this case is not covered by a test as I suggest in the issue.

I just tried on v0.1.6, seems to work as advertised for me now.

Uploaded sparse and dense vectors using the Node library
Fetched a vector using Postman to confirm the sparse values were present
Ran a query using the Node library with sparse values and without. Confirmed search results were different and scored differently.

So it seems it's been fixed in one of the versions now. Sweet!

Seems like a previous release resolved this problem so I will mark this issue closed.
You might be interested in checking out the new v1 client for more improvements. Check out the release notes and v1 migration guide to get started using the new client.


Update to 1.20.2 and 1.20.4

Request for update to the newest versions of minecraft.

just tested it for forge and fabric and the latest version of the mod also works for 1.20.4, ill update it on modrinth and curseforge


Container selection panel UI has bad spacing

The best fix is to change these to ListItem. The quick fix is to add this:
// TODO(#6075): Because `list_item_scope` changes it. Temporary until everything is `ListItem`.
ui.spacing_mut().item_spacing.y = ui.ctx().style().spacing.item_spacing.y;

See also https://github.com/rerun-io/rerun/issues/6699 which might be partially or fully duplicated

oh yeah, that's a duplicate.


[release/8.1] Update StructuredLogs to use LogFilter fields

Backport https://github.com/dotnet/aspire/pull/5023
Customer Impact
The view logs buttons in the trace/span views are broken. Clicking them will always say that no logs are available instead of showing the filtered logs for the trace/span.
Testing
Manual. Launch TestShop, add item to the cart, go to trace, then click view logs.
Risk
Low.
Regression?
Microsoft Reviewers: Open in CodeFlow

Is this testable? (I mean, given it's important enough to propose porting it, can playwright cover it)

Is this testable? (I mean, given it's important enough to propose porting it, can playwright cover it)

Fix a problem with Playrwight/Selinium and now you have two problems IMO.
Component test with bunit: https://github.com/dotnet/aspire/pull/5038


Update dss_helper to use pre-allocated buffer variables

TODO: Cache field_buffer
modified:   src/shared_utilities/utils.jl
Use pre-allocated buffer variables in dss_helper function.

[ ] I have read and checked the items on the review checklist.

let's quickly chat in person!


Add semantic token struct and serialization

Semantic tokes are encoded as an array of UInt32 in the LSP spec, which makes sense for transport efficiency. But this is not a convenient representation in the LSP server.
This changeset adds a SemanticToken representation, and encode/decode functionality to the transport representation.
It also sort the tokens during encode since the token encoding is offset based with unsigned integers, and must be ordered properly.

😎


Publish gem in Rubygems and fix its name.

It's used in Gemfile as "hive_tests" which does not correspond to the repo name.
It could also be published in rubygems to make it easier to use.

Good idea. Im gonna look at it.

What name should we choose? "hive_tests" or "ns-rspec-hive" ?

Awesome, I think ns-rspec-hive or u2i-rspec_hive would more or less follow Mr. Knapik's convention, what do you think?

I would stick with:
http://guides.rubygems.org/name-your-gem/
Maybe just: "rspec_hive" ? It will be under u2i organisation so maybe we won't need it in name. As I analyze these guides I think including u2i in name could be troublesome. Is that ok?

sure

fyi, I added u2i rubygems account to teampassword as I wanted to push ns_settings_ui too (which also has the problem of the shitty name :()

:+1: For publishing this Gem.
@nowNick provided a good guidelines on naming gems.
I was thinking about u2i-rspec_hive. U2i module kind of promotes u2i and allows to avoid conflicts.
On the other hand, if you look at rspec gems the pattern is rspec-sth, e.g.

rspec-core
rspec-mocks
rspec-rails

So how about renaming modules and naming the gem rspec-hive to match those convention?
@wmiel @piotrlezon

@mknapik I'm good with changing it.

:+1:

Should we change the namespace of rake tasks along with this gem name change? Right now the most outer namespace is hive_tests.

@nowNick I think so, I would make it consistent with the Gem's name.

So the outer namespace should be rspec-hive or hive I am not sure if rspec-hive is permitted. And what about docker image? Right now it is nielsensocial/hive

Maybe rspec:hive: <tasks here> for rake tasks and rspec/hive for docker image name?

This has been fixed in #7

I have published it to RubyGems.
https://rubygems.org/gems/rspec-hive

@nowNick Good job!


Suggested: Dont await for whitelisting background tasks

Description

show whitelisting countdown on wallet FV
increase delay from 15to 30 sec

no need for that


Remember open files for a project?

Would be great if (optionally) when I opened a project the last open documents were re-opened.

+1 Just noticed that doesn't happen

Atom should automatically open the last opened files, but there is a bug where it doesn't do this the first time a project is opened. Try to open the project, then open it again. This will open it in a new window with the correct files open.
An issue for this is filed in atom, but not sure what the progress for it is.

This is not true for me.
I launch Atom, open a project,  do some work, open some tabs.
Close project buy don't quit Atom.
Open a new blank window, so that the menu items are available.
Toggle Project Mgr, open the project from step 1.  No tabs are open.  Very annoying.

Re-tested with the "save-session" package disabled. Atom doesn't remember the files that were open in my project after closing the project and re-opening [or] quitting Atom and re-launching.

Try this

Open atom
Open project with the project manager
With the project open, open it again with the project manager

It should then (at least it does for me) open the project in a new window with the correct files and tabs open.
Atom does something weird when it opens a project in an empty window

Hmm, that sort of works. Opens the same project but with an older set of open files. Tried switching back and forth between new projects and that seems to hook the open files.

Yeah, it's not how it should work, but unfortunately that is how it currently works. I think they are working on a fix for it though.

@danielbrodin I think other duplicated issues like #78 #37 #27, and keep this issue open instead.
It's definitely frustrating that the opened files did not reopen and the save-session package didn't work well with multiple windows. However the trick you mentioned it works :joy: .

EPIC SUMMARY of various related issues HERE
I've been trying to reproduce the bug (to understand where & why it occurs).
This is what I've come up with:

When any folder is already loaded in the sidebar, opening a project will load it's tabs correctly.
When no folder is in the sidebar (sidebar is blank), opening a project will assign the current window to that project, & will add the project's folder to the sidebar, but will not open the project's tabs

Then trying the double-loading trick (reloading the same project again) will not work (at least for me) because it will bring the existing window to the front (where the project has already been loaded without tabs).

So; this experiment concludes that a possible workaround to the issue is to load any folder in the sidebar (usually automatic when dragging any file to the editor).  Then loading your project will load it's tabs!

(I should state; I have had the double-loading trick work at some point, but not in the steps above).
I hope the thing I pointed out about an empty window having the project folder assigned to it (without tabs), instead of opening in a new window, is useful in debugging.
Of course; save-session seems to be the go-to solution at present...
O_O

+1 for this.
I would love to be able to open a project folder and all the previously opened files within that project open up. When opening a new project folder the other project files vanish and the new project files open.
This is a typical function in IDEs including Brackets.

Any progress on this issue? Somewhat unexpected & frustrating behaviour that files are not reopened.

This seems to be working for me, but I would like to share a thing that was confusing to me: on OS/X I actually had two windows of atom opened. Whenever I closed and started Atom again, the "wrong" window would be on top: the one where my projects are not opened. Finally I realized that and a "Cmd-backtick" switched me to the "right" window, where indeed all projects were properly reopened.
I proceeded to close the "wrong" window.
In the hope that someone else was affected by this.

Is there a Atom issue that we are waiting on for this to be fixed? (In regards to Atom doing weird stuff when opening a project in an empty window).
Double opening a project doesn't seem to work anymore (for me anyways) but if you open another project folder and then open your project it does restore the files.

Still experiencing this behavior. Double opening a project doesn't seem to do anything, but opening a different project, then opening the intended project restores the correct tabs.
Opening a project directory directly with atom path/to/project/directory does restore tabs, but seemingly only a specific snapshot of old tabs which doesn't change. It also once loaded with some tabs from the wrong project mixed in, but I couldn't find a way to reproduce that unfortunately.


Unable to forward the stream to new app via ffmpeg

Hi,
I have FMS server as a origin. Tried to pull the video from FMS to nginx and did some resolution changes to push that back to some local app. But its not working.
I can view the video if I put "pull rtmp://fmsserverip/demo/New3" inside the application section.But not able to forward this pull request to another app. So tried the below one, but that too not helped me.
rtmp {
server {
listen 1935;
application myapp {
live on;
exec_pull /usr/bin/ffmpeg -re -i "rtmp:///demo/New3 live=1" -c:v copy -c:a copy -f flv "rtmp://localhost/live/$name";
}
application live {
live on;
access_log /var/log/nginx/test_live.log;
}
}
}

Please respond to this.

Can anyone help me on this ?


Issue when requesting a new Let's Encrypt  SSL certificate

Describe the bug
When requesting a new SSL certificate from Let's Encrypt, I get a Internal Error.
Looking into my log through Docker, I get the following error message:
[8/6/2022] [8:39:32 AM] [Nginx    ] › ℹ  info      Reloading Nginx
[8/6/2022] [8:39:37 AM] [SSL      ] › ℹ  info      Requesting Let'sEncrypt certificates for Cert #39: xxx.yyy.zzz
[8/6/2022] [8:39:37 AM] [SSL      ] › ℹ  info      Command: certbot certonly --config "/etc/letsencrypt.ini" --cert-name "npm-39" --agree-tos --authenticator webroot --email<EMAIL_ADDRESS>--preferred-challenges "dns,http" --domains "xxx.yyy.zzz"
[8/6/2022] [8:39:40 AM] [Nginx    ] › ℹ  info      Reloading Nginx
[8/6/2022] [8:39:40 AM] [Express  ] › ⚠  warning   Command failed: certbot certonly --config "/etc/letsencrypt.ini" --cert-name "npm-39" --agree-tos --authenticator webroot --email<EMAIL_ADDRESS>--preferred-challenges "dns,http" --domains "xxx.yyy.zzz"
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Some challenges have failed.

Nginx Proxy Manager Version
Version 2.9.18
To Reproduce
Steps to reproduce the behavior:

Create a new Proxy Hosts
Go to SSL section for the Proxy Host.
Select "Request a new SSL Certificate (with Let's Encrypt)"
Input an e-mailaddress in the "Email Address for Let's Encrypt" (in my case auto filled).
Check the "I Agree to the Let's Encrypt Terms of Service".
Click Save
After some waiting time, the message "Internal Error" is displayed and no SSL certificate is retrieved.

Expected behavior
I expected a certificate for my domain to be created and added to the Proxy Host.
Extra info
It looks like renewal of my existing certificates works fine, so it's only requesting a new certificate that is an issue.
I'm running my installation on a Docker, and been running it for over 2 years without any issues. The last time I know this was working was in 19th February 2022.

Issue was server related. Found it after three days of debugging.


feat: support databend for superset

SUMMARY

Support new database - databend for superset
TESTING INSTRUCTIONS

pytest tests/unit_tests/db_engine_specs/test_databend.py

@villebro Fixed the comment and would like to help me fix this issue https://github.com/apache/superset/issues/23304?

Thanks for adding support for Databend! A few minor comments, other than that LGTM 👍

Hi @villebro , since this pr has been finished, how about merging this pr?

Thanks for adding support for Databend! A few minor comments, other than that LGTM 👍

Hi @villebro , since this pr has been finished, how about merging this pr?

Hi @hantmac - I'm so sorry for dropping the ball on this PR. I've merged master on it to restart CI, and will re-review and merge if everything is ok today

@hantmac it seems there's quite a few linting errors here:

Would you be able to resolve them? If not I can pick this up and push it through next week.

@hantmac it seems there's quite a few linting errors here:
Would you be able to resolve them? If not I can pick this up and push it through next week.

Thanks for your review! I will fix it as soon as possible.

@hantmac I restarted CI, will take a look tomorrow morning PST


Bugfix: Shield close_waiter from cancellation of wait_closed.

Otherwise, if an 'await connection.wait_closed()' is cancelled, the _close_waiter will be cancelled, too. This raises an error, because when _read_task is done, it tries to set the result of the already cancelled _close_waiter.

Coverage remained the same at 92.398% when pulling 58e616d318cc1f6c5afdf2daeac55d0ee6a4a535 on ymap:shieldfix into 6eecc0334490bfd835b65954c39dea30b903268e on aio-libs:master.

Please add tests

I added a basic test for wait_closed and one that fails without the fix above.

Coverage increased (+0.06%) to 92.456% when pulling 5d07b32409bd1a12f9a39c198d7305ad679def32 on ymap:shieldfix into 6eecc0334490bfd835b65954c39dea30b903268e on aio-libs:master.

Thanks


Sql Cache record update fix + test (#2231)

#2231
Not sure if you wanna still keep the _id field, in that case we should retreive it from the old record and pass it when updating it

@PierLucaLW: Thank you for submitting a pull request! Before we can merge it, you'll need to sign the Apollo Contributor License Agreement here: https://contribute.apollographql.com/

This approach will need migration. You've mentioned another potential solution in the code. Should we go for that? Looks much safer.

At first I thought the problem was there but that part was correct since oldRecord var gets its fields updated after .mergeWith(). The UPDATE instruction doesn't seem to work on it and INSERT OR REPLACE looks like it needs all the field, or at least the id since is a primary key. I can try getting the id from the old record and pass it when to update, would that be good?

Also could you please fix formatting

I'm still not sure if this is the right way. 1.4.x versions or any older do not replace into existing. So, I'm not sure why we would need a behavior change here.
The solution to the bug must be in the code. There must be something wrong with Kotlin migration.

The changes in this fix look legit, but I agree with @tasomaniac before merging we have to find why it was working up to 1.4.5 version. As we might be missing bigger issue with migrating SQL module to Kotlin.
Going to try 1.4.4 version to run the test.

🤦 🤦 🤦 🤦 🤦 🤦
The issue is 🥁  🥁  🥁  🥁  🥁  🥁
https://github.com/apollographql/apollo-android/blob/master/apollo-normalized-cache-sqlite/src/commonMain/kotlin/com/apollographql/apollo/cache/normalized/sql/SqlNormalizedCache.kt#L56
cacheQueries.update(oldRecord.key, recordFieldAdapter.toJson(oldRecord.fields))

but it should be
cacheQueries.update(recordFieldAdapter.toJson(oldRecord.fields), oldRecord.key)
or even safer
cacheQueries.update(record = recordFieldAdapter.toJson(oldRecord.fields), key = oldRecord.key)

as it generated from the
update:
UPDATE records SET record=:record WHERE key=:key;

So the issue is not in SQL DML but with the order of passed arguments, I opened new PR https://github.com/apollographql/apollo-android/pull/2245 that fixes it.

@tasomaniac @sav007 ooh I see, haven't thought about that at all. Alright will just close this one then, thanks for looking into it.


soc: arm: nxp_lpc: Only clock core from PLL1 when CONFIG_FLASH=n

Do not clock the LPC55xxx cores from PLL1 when CONFIG_FLASH is set. This is required due to the following limitation of the flash controller (documented in the reference manual):
Flash operations (erase, blank check, program) and reading a single word can only be performed for CPU frequencies of up to 100 MHz. These operations cannot be performed for frequencies above 100 MHz.
The PLL1 clock source will result in a core clock of 150MHz, which violates this requirement.
Fixes #62963

Hi @danieldegrasse ,
Thank you for proposing this solution.  But I do not like this frequency limitation required on all applications that use the flash driver.  Some apps will only write to the internal flash once during manufacturing.  Others may program the flash very infrequently.
I think a better solution is to update the flash driver for this SOC.  When that driver does an operation, it checks the CPU frequency, and returns an error if the frequency exceeds the limit.  Then let the app deal with the frequency limit.  That allows apps to execute above 100MHz most of the time, and they can dynamically change the frequency if needed before using the flash driver.  Or other apps may choose to always clock at 100MHz or below.
For the sample and test apps, we can set the Kconfig for this board so INIT_PLL1=n.  And add a note why, so developers are aware of the limitation.
But we should allow these options to give the applications the most flexibility.  Thanks

Hi @DerekSnell- I do agree that making users aware they can increase the clock frequency to 150MHz when not using the flash driver makes sense. However, given that the HAL driver for the SOC flash requires the core frequency to be 96MHz at initialization, I think we should likely set this as the default when using the flash subsystem.
I've added some documentation to this PR to help users understand why the clock frequency will be lower when building with CONFIG_FLASH=y. Additionally, I will open a ticket internally to add frequency checks to the SDK flash driver, since this issue will affect more than just the users of Zephyr (so we should enforce the restriction there)

Hi @DerekSnell- I do agree that making users aware they can increase the clock frequency to 150MHz when not using the flash driver makes sense. However, given that the HAL driver for the SOC flash requires the core frequency to be 96MHz at initialization, I think we should likely set this as the default when using the flash subsystem.
I've added some documentation to this PR to help users understand why the clock frequency will be lower when building with CONFIG_FLASH=y. Additionally, I will open a ticket internally to add frequency checks to the SDK flash driver, since this issue will affect more than just the users of Zephyr (so we should enforce the restriction there)

Thanks @danieldegrasse , I agree with this, and approved the PR.


The generated file size is too large?

I tried several files and the generated file size increased by 5-10 times compared to the original. The original file is 2MB, and after generation, it will be 20MB.
Can the file size be optimized?

to fix your trouble check this solution click
maybe this will solve your problem.


Emitting array results in crash

Whenever the servers emits an array, this plugin crashes

how does your array look like? I am able to send objects in the current format: {nameTag:"value"}.

Because that's an object, not an array.
Try sending this from NodeJS side:
var test[];
test[0] = 2;
socket.emit("data", test);

and now look at SocketIOError on the Unity side.

@fpanettieri  please resolve this error, it's very importance for me.

hi all, i fixed this issue
just put array into a object
example:
var dataArr = [];
var x = {
id: 1
};
var y = {
id: 2
};
dataArr[0] = x;
dataArr[1] = y;
var mess = {
    content: dataArr
}

return mess;

For me it did not crash but instead made a silent reconnect to the SocketIO server resulting in trash communication and making the former IDs obsolete.
I was also thinking it shouldn't be an issue sending an array since it is a valid JSON notation .. http://www.json.org/ . Apparently it isn't for this implementation.
It would be at least nice to throw some error before scrambling everything within the network layer.
babman92's mentioned workaround was also the short term fix for my problem.
+1 for doing something about this :)

This is easily solved. Here is my fix : change lines 48-49 of Parser.cs to read:
if (json[1].type != JSONObject.Type.OBJECT && json[1].type !=JSONObject.Type.ARRAY) {
throw new SocketIOException("Invalid argument type. " + json[1].type + " received while expecting " + JSONObject.Type.OBJECT+ " or " +JSONObject.Type.ARRAY);


Removed usage on fatalError and unsafe mutability

Descriptions
Removed usage of any fatal error and unsafe mutations to prevent unsuspecting exceptions and behavior
Code references
Fatal Error

https://github.com/d-exclaimation/desolate/blob/1072648c8bf27fdd7608d0393f042ea9d50f6585/Sources/Desolate/Decorator/Extensions/Desolate%2BStateHook.swift#L20
https://github.com/d-exclaimation/desolate/blob/1072648c8bf27fdd7608d0393f042ea9d50f6585/Sources/Desolate/Decorator/Desolated.swift#L31
https://github.com/d-exclaimation/desolate/blob/ec0ca0510e332b6ca4c95b322d3ed6e7223fa570/Sources/Desolate/Delivery/Receiver.swift#L72

Unsafe mutation

https://github.com/d-exclaimation/desolate/blob/ec0ca0510e332b6ca4c95b322d3ed6e7223fa570/Sources/Desolate/Delivery/Inbox.swift#L10

Fixed in the last two commits


Generate syntax diagrams

Discussed in https://github.com/langium/langium/discussions/824

Originally posted by Serhioromano December 14, 2022
Chevrotain has a great built in diagram generator. All you need is to serialize parser.
const serializedGrammar = parser.getSerializedGastProductions();
const htmlText = chevrotain.createSyntaxDiagramsCode(serializedGrammar);
const outPath = path. Resolve(__dirname, "./")
fs.writeFileSync(outPath + "/generated_diagrams.html", htmlText);

Can we add options -d parameter for langium generate that could also generate that diagram to see how it actually built?

As discussed, we would want this as a config item similar to the textmate syntax highlighting generator.


Cost pr

This PR merges everything from the PR https://github.com/langroid/langroid/pull/217 into one comment.
It should be easier to review :-)

should we close the other one then?

should we close the other one then?

done

Thanks for the feedback. I'll make address the points that you raised.


[Jira] Error creating Jira Issue

Extension
https://www.raycast.com/raycast/jira
Description
The Create Issue command always errors out for me, usually shortly after opening. I'm on an M1 Mac updated to Sonoma.

This GIF is in real time:

Error:
Error: Worker terminated due to reaching memory limit: JS heap out of memory

NodeError:errors:399:5
[kOnExit]:worker:287:26
Worker.<computed>.onexit:worker:209:20

Steps To Reproduce

Select the Create Issue command.
The extension errors out shortly after.

Current Behaviour
An error when creating a Jira Issue
Expected Behaviour
Successfully able to create a Jira Issue

Thanks for flagging this issue. Would you like to work on it? I can provide some guidance on how to contribute to this extension so that you can open a pull request. You can contact me here or in the Slack community if you need further help.
Note that opening up a PR and having it merged will earn you some credits as we want to reward contributions. You’ll then be able to exchange them in a swag store that we’ll launch soon!

Thanks, I'll look into it this week. If anybody else happens to pick this up in parallel don't worry about stepping on my toes.

I am now unable to recreate this issue.. Might've been caused by high memory usage via Crowdstrike Falcon. If it happens again I'll take a crack at it but since I can't recreate the issue right now I'm not looking into this anymore.

All right, I'll close the issue then. Thanks for letting me now!

@thomaslombart I'm able to recreate this today. I'm not a member of the Slack workspace so I'm unable to join that at the moment; I shot you an email.
Where would be a good starting place? The error messages don't seem to provide a stack trace, just some references to workers.

@literallyjustroy can't you join at raycast.com/community? You should be able to. Then, if you have any extensions-related questions, the right channel would be #extensions.

I was able to join the community by the way - Not sure what my problem was originally. Probably something to do with attempting to join on a work machine.


[Track One] Tests for runtime metrics on the client are consistently failing nightly runs

Summary
A recent change appears to have caused two of the client tests for runtime metrics to begin failing consistently during nightly runs.   The behavior seems to have begun starting with the nightly run for Monday, November 18th, where the following two tests have been failing:

Microsoft.Azure.EventHubs.Tests.Client.ReceiverRuntimeMetricsTests.DisableWithReceiverOptions
Microsoft.Azure.EventHubs.Tests.Client.ReceiverRuntimeMetricsTests.DefaultBehaviorDisabled

The failures have remained consistent since, and a good example for inspection was the run for Sunday, November 24.  The failure details look something like:

Scope of Work

Analyze the tests to understand the point of non-determinism and decide on an approach to stabilize for nightly runs.

Refactor the tests as needed to ensure that the results are deterministic and consistently pass.

Out of Scope

Changes or refactoring in other areas.

Success Criteria

The tests DisableWithReceiverOptions and DefaultBehaviorDisabled have been refactored or removed and no cause consistent failures during nightly runs.

The changes did not cause regressions elsewhere; nightly test runs pass consistently and reliably with deterministic results.

@serkantkaraca, @JamesBirdsall:  If you would be so kind as to offer your thoughts, it would be greatly appreciated.

Let me check. It is probably due to a recent change I merged.

Fixed by https://github.com/Azure/azure-sdk-for-net/commit/74764e44ea817b9de73eea3a637ccf295c01da6c#diff-1e0ecb0f40c280481e60fafad9e32799


Adding metrics server and fixing k8s dependency

Moving util to package and removing kubernetes usage.
Upgrading Kubernetes dependency to 1.26
Enabling prometheus metrics registry and webserver on backend initialization.
Fixing lint to use Windows builds, ignoring custom sets and WIP not used methods.
Fixes #13 (on a Friday 13) 👻

cc @marosset

/lgtm
/approve


Crashed: PINURLSessionManager Operation Queue :: NSOperation (QOS: LEGACY)

We have a similar issue to #91 I thought I'd create a new ticket as it isnt on the exact same line. I'm running the latest code with commit 65d9c582fbaed691940cf4c550054535e4b84246
The issue happens on ios 8/9 only. I can link you to the crashlytics issue if more info is required.
Thread : Crashed: PINURLSessionManager Operation Queue :: NSOperation 0x149041870 (QOS: LEGACY)
0  libdispatch.dylib<PHONE_NUMBER> dispatch_async + 76
1  libdispatch.dylib<PHONE_NUMBER> dispatch_async + 68
2  PaigeeWorld<PHONE_NUMBER> -[PINURLSessionManager URLSession:task:didReceiveChallenge:completionHandler:] (PINURLSessionManager.m:79)
3  Foundation<PHONE_NUMBER> __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 16
4  Foundation<PHONE_NUMBER> -[NSBlockOperation main] + 96
5  Foundation<PHONE_NUMBER> -[__NSOperationInternal _start:] + 604
6  Foundation<PHONE_NUMBER> __NSOQSchedule_f + 224
7  libdispatch.dylib<PHONE_NUMBER> _dispatch_client_callout + 16
8  libdispatch.dylib<PHONE_NUMBER> _dispatch_queue_drain + 864
9  libdispatch.dylib<PHONE_NUMBER> _dispatch_queue_invoke + 464
10 libdispatch.dylib<PHONE_NUMBER> _dispatch_root_queue_drain + 728
11 libdispatch.dylib<PHONE_NUMBER> _dispatch_worker_thread3 + 112
12 libsystem_pthread.dylib<PHONE_NUMBER> _pthread_wqthread + 1092

I've had no luck trying to reproduce it. If you have any thoughts on how I can give it a shot.

Looking at it in crashlytics would definitely be more informative.

Here is the report. You should be able to access it. http://crashes.to/s/859ce80843f

Here is some more info via HockeyApp. It has some info on what the main thread was doing. It crashes on the same spot but not sure if its the exact same issue.
https://gist.github.com/farhanpatel/815df738603cc932cb27

We are also seeing a similar crash in the didReceiveChallenge callback. I can't quite figure out what is happening.
You are not re-stronging self inside the dispatch block, and also there are cases here where completion handler seems like it will never be called (if PINURLSessionManger's delegate does not implement the callback) but its unclear if either of those is the problem. Possibly it is that the completionHandler must be called synchronously (or within a certain amount of time)? The docs aren't really clear on that.
None of that really follows from the crash, which looks like there is some block not being copied properly. But possibly internally in NSURLSession the completionHandler is referencing some __block variables which are now gone if the completionHandler isn't called synchronously? That could cause this crash, but I don't really know.

Y'all have a URL I can test the challenge callback with?

@bdorfman you're right that the weakSelf should be strongified in there, but I don't think this is the cause, it seems to be happening on the dispatch.

I was able to get a 0x50 EXC_BAD_ACCESS when delegateQueue was nil. I was hoping that was resolved by #84.
So I'm hoping that addressed http://crashes.to/s/859ce80843f
However, it seems different than https://gist.github.com/farhanpatel/815df738603cc932cb27 which is failing with 0x30 in block copy…

I'm not actually clear on what url is even causing this callback to fire in our app. I think it might get called for any https url, and not just ones that require username and password? I can't even really reproduce the issue, we are just seeing crashes in the wild in Hockey.
In our own fork I have speculatively changed the dispatch to be sync instead of async on the idea that maybe completionHandler must be called before the method returns. I'll let you know if this seems to stop the crashes.

Our crash also occurs in block copy by the way. The stack trace looks pretty identical to https://gist.github.com/farhanpatel/815df738603cc932cb27

I'm going to see if I can't dig anything up on block copy

Please do let me know if the dispatch_sync solves things!

It seems that delegateQueue is nil when the crash happened. Maybe self.delegateQueues removed this object at some point. But I'm not familiar with this, I temporarily fix this problem by the following code. Hope this can help!
    dispatch_queue_t delegateQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0);
    if (self.delegateQueues[@(task.taskIdentifier)]) {
        delegateQueue = self.delegateQueues[@(task.taskIdentifier)];
    }

@yangmie it's my hunch that the development queue is nil as well, however, your fix is not thread safe as we require the delegate messages to execute serially and therefore they need to happen on the same queue.

We're getting a number of crashes from this as well with two almost identical stack traces using PINRemoteImage 1.2.2. Unfortunately, I haven't been able to reproduce it, and I don't know what URL is causing it. The URLs we're requesting shouldn't require authentication.
Thread 8 Crashed:
0   libdispatch.dylib                    0x0000000199e22b48 dispatch_async + 76
1   PINRemoteImage                       0x0000000100952904 -[PINURLSessionManager URLSession:task:didReceiveChallenge:completionHandler:] (PINURLSessionManager.m:79)
2   Foundation                           0x0000000185978374 __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 12
3   Foundation                           0x00000001858cb1a0 -[NSBlockOperation main] + 92
4   Foundation                           0x00000001858bb3e8 -[__NSOperationInternal _start:] + 600
5   Foundation                           0x000000018597a768 __NSOQSchedule_f + 220
6   libdispatch.dylib                    0x0000000199e216a8 _dispatch_client_callout + 12
7   libdispatch.dylib                    0x0000000199e2d6ec _dispatch_queue_drain + 860
8   libdispatch.dylib                    0x0000000199e251ac _dispatch_queue_invoke + 460
9   libdispatch.dylib                    0x0000000199e2f5bc _dispatch_root_queue_drain + 724
10  libdispatch.dylib                    0x0000000199e2f2dc _dispatch_worker_thread3 + 108
11  libsystem_pthread.dylib              0x000000019a035470 _pthread_wqthread + 1088
12  libsystem_pthread.dylib              0x000000019a035020 start_wqthread + 0

Thread 7 Crashed:
0   libdispatch.dylib                    0x37828f22 dispatch_async + 66
1   libsystem_blocks.dylib               0x3786c95b _Block_copy_internal + 296
2   PINRemoteImage                       0x00a831cd -[PINURLSessionManager URLSession:task:didReceiveChallenge:completionHandler:] (PINURLSessionManager.m:79)
3   CFNetwork                            0x253451c7 __68-[NSURLSession delegate_task:didReceiveChallenge:completionHandler:]_block_invoke + 36
4   Foundation                           0x2680056d __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 6
5   Foundation                           0x26761fdf -[NSBlockOperation main] + 144
6   Foundation                           0x267543cf -[__NSOperationInternal _start:] + 772
7   Foundation                           0x2680282d __NSOQSchedule_f + 190
8   libdispatch.dylib                    0x37831fef _dispatch_queue_drain + 1760
9   libdispatch.dylib                    0x3782af87 _dispatch_queue_invoke + 280
10  libdispatch.dylib                    0x3783337d _dispatch_root_queue_drain + 398
11  libdispatch.dylib                    0x378331eb _dispatch_worker_thread3 + 92
12  libsystem_pthread.dylib              0x379bce0d _pthread_wqthread + 1022
13  libsystem_pthread.dylib              0x379bc9fc start_wqthread + 6

So I think the problem might be that you don't implement the session-level authorization challenge callback. (- URLSession:didReceiveChallenge:completionHandler:, eg the one without task:)
The docs say:
If you do not implement this method, the session calls its delegate’s URLSession:task:didReceiveChallenge:completionHandler: method instead.
If the system automatically forwards through to that other method, then there will not be a task and thus no associated delegate queue. You probably need to implement the non-task version and do some authentication challenge handling there.

@bdorfman !!! That sounds like it's definitely it!

I'm not exactly sure the best way to fix it? Possibly you can just implement the method and do all the same logic but with task = nil, but not on a delegate queue. I'm not sure if any of the delegate callback code has expectations about being on certain threads or task not being nil though?
Also it's unclear to me if the task is actually nil in this case. Foundation claims that the task parameter is nonnull for this callback but its possible that is just wrong (should file a radar maybe).

Lets leave this open for now, and if y'all can report back if it fixes things it would be greatly appreciated!

I've had a build in production for a week now with this fix and haven't seen this crash again, so seems to be fixed now. Thanks!

Awesome!


universe: move sync specific structs from interface.go -> syncer.go

This commit is a simple refactor for clarity.

I don't think we should do this. The interface.go file is a pattern that we use in lnd a lot. It contains the basic types the package as a whole provides, including interfaces of the main implementations. Kind of similar to how the doc.go file contains package-level documentation (a pattern recommended by Golang that we don't really follow though).
So IMO this refactor actually removes clarity because it breaks an existing pattern. And the question of "where do you put the interface definition if you have two implementations?" is also answered with the existing pattern.

@guggero Thank for taking a look. I get the pattern now.


Remove Unmarshal and UnmarshalExact method from the config API

What does this PR do?
Remove Unmarshal and UnmarshalExact method from the config API.
This helps reduce the API of the config which will simplify the replacement of viper.
Describe how to test/QA your changes
Running the CI is enough.

/merge


Spyder is unaware of the presence of flake8 if pyls-flake8 is installed: ignores "enable code style linting" and maximum line length settings

Issue Report Checklist

[x] Searched the issues page for similar reports
[x] Read the relevant sections of the Spyder Troubleshooting Guide and followed its advice
[x] Reproduced the issue after updating with conda update spyder (or pip, if not using Anaconda)
[ ] Could not reproduce inside jupyter qtconsole (if console-related)
[x] Tried basic troubleshooting (if a bug/error)

[x] Restarted Spyder
[x] Reset preferences with spyder --reset
[ ] Reinstalled the latest version of Anaconda
[ ] Tried the other applicable steps from the Troubleshooting Guide

[x] Completed the Problem Description, Steps to Reproduce and Version sections below

Problem Description
When I have code style linting turned on and increase the line length, this information is not passed on to flake8 if pyls-flake8 is installed.  And if code style linting is turned off, flake8 still reports issues.  This may well also apply to other pyls plugins.
What steps reproduce the problem?

Start with a clean install of spyder (I used a venv and ran spyder --reset).
Install pyls-flake8
Open a file with some lines between 80 and 88 characters long.
Leave  "Enable code style linting" off in the preferences; flake8 still flags issues.
Switch "Enable code style linting" on in the preferences.  Then both pycodestyle and flake8 report overly long lines.
Set the maximum allowed line length to 88.  Then pycodestyle stops issuing warnings but flake8 still does.

What is the expected output? What do you see instead?
 Two things about this:

We don't offer control over most third party PyLSP plugins, like pyls-flake8 or pylsp-mypy (we only do for pylsp-black and pyls-spyder). This means that you need to control them by yourself, i.e. like @dalthviz just said.
As far as I know, the pyls-flake8 functionality is already implemented in the flake8 PyLSP internal plugin. But we don't use flake8 for linting at the moment (we plan to do it at some point in the future though).

So, the bottom line is: if you want to use pyls-flake8 with Spyder, you need to configure it manually. And for now we wouldn't recommend installing both packages because most people don't know how to do that.

If that is enough to deactivate it I guess is okay. If that is the approach to take then I would suggest also to add some sort of documentation regarding which pyslp plugins are available to config from Spyder and how to work with/config third-party plugins as @juliangilbey was doing (at least an explanation saying that you will need to check the third-party plugin handling of config by config files or other ways outside Spyder).

Hey @juliangilbey, thanks for reporting. Two things about this:
* We don't offer control over most third party PyLSP plugins, like `pyls-flake8` or `pylsp-mypy` (we only do for `pylsp-black` and `pyls-spyder`). This means that you need to configure them by yourself, i.e. like @dalthviz just said.

* As far as I know, the `pyls-flake8` functionality is already implemented in the `flake8` PyLSP internal plugin. But we don't use flake8 for linting at the moment (we plan to do it at some point in the future though).

So, the bottom line is: if you want to use pyls-flake8 with Spyder, you need to configure it manually. And for now we wouldn't recommend installing both packages because most people don't know how to do that.

OK, thanks! And taking this point further: now that PyLSP supports flake8 internally, would it make sense to stop advertising the pyls-flake8 plugin on the PyLSP page?  I am quite confused by the overlap, for obvious reasons!


[Question]Record live stream with time limit

I would like to record 20-minute live stream video. In normal mode, it records how long the live model is live, which can sometimes be 7 hours, but I want to record between 10 and 20 minutes, then go to the next model.
I use this command to record youtube-dl -ci --batch-file=models.txt

Currently not possible.


Examples

[ ]    Core
[ ]    Achievements
[ ]    Activities
[ ]    Applications
[ ]    Images
[ ]    Lobbies
[ ]    Networking
[ ]    Overlay
[ ]    Relationships
[ ]    Storage
[ ]    Store
[ ]    Users
[ ]    Voice


Aborted during hashtable/db creation.

latest bw_plex on Windows 10 v2004 - fresh install
Latest plex server on same machine.
Plex web browser on same machine.
Command used:

bw_plex -d -c "<path>\config.ini" watch

Log:

2020-10-05 15:00:42,805 :: bw_plex :: INFO :: init.py:168 :: Using bw_plex version 0.1.1.dev89+g98269f7
2020-10-05 15:00:42,806 :: bw_plex :: INFO :: init.py:169 :: default folder set to <path>
2020-10-05 15:00:42,806 :: bw_plex :: INFO :: init.py:183 :: Log is not sanitized!
2020-10-05 15:00:43,383 :: urllib3.connectionpool :: DEBUG :: connectionpool.py:230 :: Starting new HTTP connection (1): <IP_ADDRESS>:32400
2020-10-05 15:00:43,386 :: urllib3.connectionpool :: DEBUG :: connectionpool.py:442 :: http://<IP_ADDRESS>:32400 "GET / HTTP/1.1" 200 2393
2020-10-05 15:00:43,387 :: bw_plex :: DEBUG :: misc.py:64 :: Getting server Arvus
2020-10-05 15:00:43,388 :: bw_plex :: DEBUG :: misc.py:572 :: Getting hashtable
2020-10-05 15:00:43,507 :: bw_plex :: INFO :: misc.py:663 :: Creating new hashtable db
2020-10-05 15:00:43,508 :: bw_plex :: DEBUG :: misc.py:594 :: Saving HashTable

Console Output:

2020-10-05 15:00:42,805 :: bw_plex :: INFO :: init.py:168 :: Using bw_plex version 0.1.1.dev89+g98269f7
2020-10-05 15:00:42,806 :: bw_plex :: INFO :: init.py:169 :: default folder set to <path>
2020-10-05 15:00:42,806 :: bw_plex :: INFO :: init.py:183 :: Log is not sanitized!
2020-10-05 15:00:43,383 :: urllib3.connectionpool :: DEBUG :: connectionpool.py:230 :: Starting new HTTP connection (1): <IP_ADDRESS>:32400
2020-10-05 15:00:43,386 :: urllib3.connectionpool :: DEBUG :: connectionpool.py:442 :: http://<IP_ADDRESS>:32400 "GET / HTTP/1.1" 200 2393
2020-10-05 15:00:43,387 :: bw_plex :: DEBUG :: misc.py:64 :: Getting server Arvus
2020-10-05 15:00:43,388 :: bw_plex :: DEBUG :: misc.py:572 :: Getting hashtable
2020-10-05 15:00:43,507 :: bw_plex :: INFO :: misc.py:663 :: Creating new hashtable db
2020-10-05 15:00:43,508 :: bw_plex :: DEBUG :: misc.py:594 :: Saving HashTable
Traceback (most recent call last):
File "C:\Program Files (x86)\Python37-32\Scripts\bw_plex-script.py", line 33, in
sys.exit(load_entry_point('bw-plex', 'console_scripts', 'bw_plex')())
File "c:\users\<user>\src\bw-plex\bw_plex\cli.py", line 24, in fake_main
real_main()
File "c:\users\<user>\src\bw-plex\bw_plex\plex.py", line 1401, in real_main
cli()
File "c:\program files (x86)\python37-32\lib\site-packages\click\core.py", line 829, in call
return self.main(*args, **kwargs)
File "c:\program files (x86)\python37-32\lib\site-packages\click\core.py", line 782, in main
rv = self.invoke(ctx)
File "c:\program files (x86)\python37-32\lib\site-packages\click\core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "c:\program files (x86)\python37-32\lib\site-packages\click\core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "c:\program files (x86)\python37-32\lib\site-packages\click\core.py", line 610, in invoke
return callback(*args, **kwargs)
File "c:\users\<user>\src\bw-plex\bw_plex\plex.py", line 1305, in watch
HT = get_hashtable()
File "c:\users\<user>\src\bw-plex\bw_plex\misc.py", line 666, in get_hashtable
HT.save(FP_HASHES)
File "c:\users\<user>\src\bw-plex\bw_plex\misc.py", line 612, in save
pickle.dump(self, f, pickle.HIGHEST_PROTOCOL)
MemoryError

Because the hash/db file wasn't saved correctly, I get subsequent Aborted launches, when I remove those files I get this same error so it's at least consistent. Let me know if there's additional info I can provide that might help.

Can i have the entire log? I dont understand why you should get a memory error on the start up unless the file is big. How much memory have you installed? Is this a 64 bit Python install?

That is the full log, I deleted everything cleaned out. Clones the repo and installed via instructions. This was first startup after I filled out my config file.
That said, it looks like this is using the 32 bit version of python. I'm going to try switching to 64 bit, I somehow overlooked that trying to diagnose the issue. I'll report back.

Yup, that did the trick. Currently up and running. Thanks, I appreciate the quick response from you!


Update Readme

oops! I merged too quickly… @tenmaster please replace the galgo link by the justplay one


When trying to execute test on device on which the user doe's not have a subscription for, the test fails without proper message

When trying to execute test on device on which the user doe's not have a subscription for, the test fails due to null pointer exception.
The user needs to debug the code in order to understand that the failure reason is "Resource is in invalid state: Failed to submit test run! No active subscription plan to run tests on selected devices."

Issue is probably depracated. Closing for now. Please feel free to re-open it, if you feel that it's still valid.


BUG: Doc drop-down can link to nonexistent HTML

Any .html that we have added in a given version that didn't exist in a previous version will errantly try to link to the nonexistent old page when using the drop-down (it assumes it'll be there). For example on the page:

https://mne.tools/dev/changes/v0.20.html

Selecting "1.0" with the drop-down tries to go to a page that didn't exist back then (404):

https://mne.tools/1.0/changes/v0.20.html

@drammock should we escalate to pydata-sphinx-theme?

Already fixed in main of the theme. I will strive to find time to fix our remaining blocker and get a release out ASAP

Okay I'll close as an upstream bug that'll get automagically fixed soon :)