Added hickory-dns feature for auth and storage

The default DNS resolver doesn't work in some environment, for example, when using rustls in a linux docker container, but using hickory-dns feature worked.

Thanks!


Details and comments
After talking with @jaygambetta, with the GitHub contributors section, we don't need to maintain a file manually.

Thanks @abdonrd ! :tada:


chore: prepare CI setup

resolves #69

So far, CI doesn't do anything for us... but the scaffold should do.

Once #93 is merged, this should be added to CI to automate building and publishing the docs
Once #68 is tackled, tests should be executed in CI, so that we have a control mechanism if what we're doing is sensible.

We could even consider automated releases through CI, but that's a discussion in and by itself.


Debug issue 100

Debug problem reported in https://github.com/conda-forge/mumps-feedstock/issues/100 .

Checklist

[ ] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

fixed by #102 and #107


Releasing webview from memory

Hi,
Is there a dispose function available to kill the webview after use, for instance in a pageview the webview seems to stay in memory (looking at dev tools in safari).
Thanks
Nathan

The InAppWebView widget should act like the other widgets, so the dispose function is called automatically when the widget is removed from the widget tree. If you see my example, switching tab from Inline and Chrome/Safari, the webview is being destroyed/disposed automatically.

Ok, I see it me too on iOS! I will take a look about that

I tried also the official plugin but seems to have the same issue!

@pichillilorenzo any update on this? have same issue :(

I'm experiencing the same issue on android, any update?

Fix available starting from the version 3.0.0.


Intel real sense camera not working.

librealsense
2.53.1 RELEASE

OS
Windows

Name
Platform Camera

Serial Number
5f5dc48

Usb Type Descriptor
2.01

Please provide a description of the problem
Intel Real sense Lidar Camera L515 is not working. When I am connecting to computer no video output is available on the intel real sense viewer window. Also Depth camera option is also missing.

Hi @yadavashwani467  Could you first try unplugging the micro-sized end of the USB cable from the base of the camera, reversing the connector's orientation and plugging it back into the L515 camera, please (USB-C cables are two-way insertion at the micro-sized end).  Does doing so make any difference?
Also, which firmware driver version is installed on the camera please?  You can find this information by clicking on the 'Info' button at the top of the Viewer's options side-panel.  Thanks!

Hi Marty,
I have tried both the things but the problem is that the viewer is not
able to recognize the device as I have to add my device using Add source
option. Also in my device manager the camera have yellow flag over it. I
have attached the screenshots for your reference. Please reply with a
suitable solution to my issue.
Thanks and Regards
__
Ashwani Kumar
On Tue, Mar 7, 2023 at 6:25 PM MartyG-RealSense @.***>
wrote:

Hi @yadavashwani467 https://github.com/yadavashwani467 Could you first
try unplugging the micro-sized end of the USB cable from the base of the
camera, reversing the connector's orientation and plugging it back into the
L515 camera, please (USB-C cables are two-way insertion at the micro-sized
end). Does doing so make any difference?
Also, which firmware driver version is installed on the camera please? You
can find this information by clicking on the 'Info' button at the top of
the Viewer's options side-panel. Thanks!
—
Reply to this email directly, view it on GitHub
https://github.com/IntelRealSense/librealsense/issues/11533#issuecomment-1457680060,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AL6UNQ7NPMK5VTY4ZVXNB4LW23PHLANCNFSM6AAAAAAVSCKYMI
.
You are receiving this because you were mentioned.Message ID:
@.***>

Images that are sent by email are not displayed on an issue's web-page.  Please add them on the page using the comment writing box.
I note that your listed USB type is 2.0.  The L515 model originally was USB 3 only, with USB 2 support added when the firmware driver is updated.  Does your computer have a USB 3 port that you can try the camera in?

Almost all the USB ports in my computer are USB 3.0

Also I am not able to figure out how can we update the firmware of our device. Since, the device is not showing in intel real sense viewer.

Still the same situation is there. The drivers again installed in other devices section. Do I need to attach the USB cable that is provided with the device or any type C cable will work?

I would recommend attaching the cable that is provided with the device if you have not done so already, as some Type-C cables can have quality issues that may affect the ability of a RealSense camera to function correctly.

Hi @yadavashwani467  Do you require further assistance with this case, please?  Thanks!

Yes, I will contact you once I get hold of the original cable that came
with the camera.
__
Ashwani
On Wed, Mar 15, 2023 at 6:31 PM MartyG-RealSense @.***>
wrote:

Hi @yadavashwani467 https://github.com/yadavashwani467 Do you require
further assistance with this case, please? Thanks!
—
Reply to this email directly, view it on GitHub
https://github.com/IntelRealSense/librealsense/issues/11533#issuecomment-1469490287,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AL6UNQ5PCWVQTD4R3VVTZODW4FV5TANCNFSM6AAAAAAVSCKYMI
.
You are receiving this because you were mentioned.Message ID:
@.***>

Thanks very much for the update.  I look forward to your next report.  Good luck!

Hi @yadavashwani467  Have you been able to obtain the original cable of your RealSense camera, please?  Thanks!

Yes, I did. And it is working now. Thanks for your help.

Ashwani
On Mon, 27 Mar, 2023, 18:00 MartyG-RealSense, @.***>
wrote:

Hi @yadavashwani467 https://github.com/yadavashwani467 Have you been
able to obtain the original cable of your RealSense camera, please? Thanks!
—
Reply to this email directly, view it on GitHub
https://github.com/IntelRealSense/librealsense/issues/11533#issuecomment-1484604695,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AL6UNQ43B2MK4N6HEKZVAC3W6E3IHANCNFSM6AAAAAAVSCKYMI
.
You are receiving this because you were mentioned.Message ID:
@.***>

You are very welcome.  It's excellent news that it is working.  Thanks very much for the update!


As i said in my recently closed issue...

Gravity API doesn't work in 1.19.2, it just crashes right away

i will try to contact gravity api's creator

ight ignore this


concatenate face in the last dimension

Hi,
I have a question concerning the collate function. In fact, I want to know the reason behind concatenating faces on the last dimension?
Indeed, I have a datasat composed of 3D triangular meshes, and I created Data objects of the form Data(pos=pos, x=x, face=face), but when I want to collate this, I get the error RuntimeError: Sizes of tensors must match except in dimension 1. which caused by the function __cat_dim__ returning -1 for attribute face and index.
Thank you in advance!

We generally want to save face tensors in format [3, num_faces] due to a better memory layout (contiguous access). If you do not want that, you can overwrite your data object via:
class MyData(Data):
    def __cat_dim__(self, key, value):
        if key == 'face':
            return 0
        return super(MyData, self).__cat_dim__(key, value)

Hi @rusty1s
Thanks for the quick response. I didn't know that faces must have the shape [3 , n_faces].
Actually, I have faces in the format [n_faces, 3], and the transform GenerateMeshNormals worked without any error, Maybe add an assertion to verify the shape, otherwise, it will give false results?


Load command

Coverage decreased (-2.5%) to 84.924% when pulling a24598331193db5bbde182b0ccc1017a92f08efe on Load-command into ab4243493bfc5543d6fe091eca7300953ad1a354 on Custom-storage-location.

Why closing?

On 17 Oct 2016, at 7:32 PM, Justin Tay<EMAIL_ADDRESS><EMAIL_ADDRESS>wrote:
Closed #69 https://github.com/CS2103AUG2016-W11-C2/main/pull/69.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/CS2103AUG2016-W11-C2/main/pull/69#event-826853294, or mute the thread https://github.com/notifications/unsubscribe-auth/AAGW1iajfF4fihJECyjX1XNDJHPMEKG4ks5q1C-6gaJpZM4KXqIJ.

Well it's using MainApp to reload the model, which is kinda wrong. Going to try another way later on

Cool!

On 18 Oct 2016, at 7:05 PM, Justin Tay<EMAIL_ADDRESS>wrote:
Well it's using MainApp to reload the model, which is kinda wrong. Going to try another way later on
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/CS2103AUG2016-W11-C2/main/pull/69#issuecomment-254463821, or mute the thread https://github.com/notifications/unsubscribe-auth/AAGW1toAir9fFE3Z8wox0kAv7iZXmuN1ks5q1JnogaJpZM4KXqIJ.


blue/green deploy

I'm trying to do a blue/green deploy but only in-place update is occurring.
AWS Beanstalk DNS names have changed to include a region, for example:
mysite.us-east-1.elasticbeanstalk.com
Is the new domain name structure affecting this or do I need to explicitly state blue green strategy in my YAML?

Nevermind I figured out my error.
Thanks

@dcho2013 what was the error? I have a similar issue.


prototype channel alias

This is a quick sketch at allowing channels to be shared across marks as mentioned in https://github.com/observablehq/plot/pull/708#issuecomment-1022415533. We should think through the syntax and the semantics a bit more.

I made this helper to allow inlining the functionality:
combine = (data, ...rest) => {
  const known = new Map();
  return Array.from(rest, ({ mark, ...options }) => {
    for (let k in options) {
      if (known.has(k)) options[k] = { alias: known.get(k) };
    }
    const m = mark(data, options);
    for (let k in options) {
      if (!known.has(k)) known.set(k, m);
    }
    return m;
  });
}

and the mark becomes:
marks: [
 combine(
  data,
  { mark: Plot.dot, x: "bill_length", y: "body_mass", symbol: "species" },
  { mark: Plot.text, x: "bill_length", y: "body_mass", text: "sex" }
 )
]

Superseded by #798.


Demo > Result is broken: https://foliotek.github.io/Croppie/

Expected Behavior
Have the cropped image show when clicking Get Result
Actual Behavior
Error in browser console:
sweetalert.min.js:1 Failed to load resource: the server responded with a status of 404
Steps to Reproduce the Problem

https://foliotek.github.io/Croppie/
Get result

Yeah the result isn't doing anything, I think this is major error

Sweetalert is missing. And EXIF.js too. The result should appear in an "alert" window.
https://lipis.github.io/bootstrap-sweetalert/


Disallow Editing of Admins Group ACLs

Along with https://github.com/chef/chef-server/issues/123 to avoid deletion of required groups , we want to tightly control the ability to change perms on the Admins group.
Changing these perms can disable the ability to manage the organization.

This is mitgated by:
https://github.com/chef/chef-server/pull/248

Closing, since looks like it is not an issue anymore. Please feel free to reopen if the issue persists.


Adding the workaround of glibc small bin double list crash, and now t…

…he test suites are run in parallel

Great!


1.3 dups

Codecov Report

Merging #13 into master will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##            master       #13   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            5         9    +4
  Lines           24       110   +86
=========================================
+ Hits            24       110   +86

Impacted Files
Coverage Δ

src/ch1/dupSeries/dup1/dup1.go
100.00% <100.00%> (ø)

src/ch1/dupSeries/dup2/dup2.go
100.00% <100.00%> (ø)

src/ch1/dupSeries/dup3/dup3.go
100.00% <100.00%> (ø)

src/ch1/helloworld/helloworld.go
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 69a3c91...9fab23d. Read the comment docs.


modeling software has no def

Description of the issue
Modeling software is a subclass of software and needs a definition.
Ideas of solution
Workflow checklist

[ ] I discussed the issue with someone else than me before working on a solution
[ ] I already read the latest version of the workflow for this repository
[x] I added this issue to the Project 'Issues'. If suitable, I add it to further Projects.
[ ] The goal of this ontology is clear to me

I am aware that

[ ] every entry in the ontology should have a definition
[ ] classes should arise from concepts rather than from words

Some thoughts:
I see two aspects of this and not sure if both should enter the def:

Modeling software is a software that can be used to build abstractions of the "real world", i.e. create a model

Thinking about a model as such - also including : this could  be static (i.e. a statue), or dynamic (a simulation model). The dynamic case is probably what we are interested in. Thus I wonder whether this should also be included in the def:

Modeling software can be used to execute a model, for example to run a simulation or optimization

What we currently have in the ontology is:
Software:  Software is a plan specification composed of a series of instructions that can be
interpreted by or directly executed by a processing unit.
Model: A model is a generically dependent continuant that is used for computing the behavior of a system using an idealized representation.
-> That definition of model already takes into account that a model is dynamic.

I link this to #180 since we have the definition for model there and it seems to imply dynamics already. Possibly we may want to consider that a model could also be static?

What do you mean in this context by static and dynamic?

Here are some thoughts on static models:

A statue carved from stone is a static representation of something and could be considered a model.
I could use software to draw an anatomical model of a foot. The result would be a static representation of the features of a foot.

These examples are not models according to our current definition of a model: A model is a generically dependent continuant that is used for computing the behavior of a system using an idealized representation.

Yes, I know, with the above comments I meant to ask whether we may want to make the model definition more generic to allow for the possibilities of static models.
For example: If I depict the nodes of an electricity grid (taking aside that the grid may develop over time) - would this not be a static model representation of the "real" electricity grid? And this model of the electricity grid could serve as input to a dynamic model?

A grid model is more than just the nodes, it has also the links between the nodes. And while the nodes might be static in the sense that there  are no additions or deletions of nodes the power flows between the nodes are changing over time.

Back to the original purpose of this issues. What about the following definition:
A modeling software is a software used to create a (mathematical) model.

I suggest to do the discussion on the class model itself in issue #180 and not here.

Back to the original purpose of this issues. What about the following definition:
A modeling software is a software used to create a (mathematical) model.

I like that definition because it allows the model definition to change without having to change the 'modeling software' definition.
Maybe also include not just creating but also maintaining etc of the model? Or is a model fixed once it was created and new data creates a new model?
A modeling software is a software used to create and maintain a (mathematical) model.

Maybe also include not just creating but also maintaining etc of the model? Or is a model fixed once it was created and new data creates a new model?

In the end that detail depends on the exact definition of model.
But I think your definition (A modeling software is a software used to create and maintain a (mathematical) model.) is fine anyway.
Shall I implement it like that?

that's fine by me


Error in LISI metric

I had the following error occur when calculating the LISI metric:
Convert nearest neighbor matrix and distances for LISI.
Compute knn on shortest paths
LISI score estimation
12 processes started.

/Users/luke.zappia/miniconda3/envs/scIB-python/lib/python3.7/site-packages/anndata/_core/anndata.py:21: FutureWarning: pandas.core.index is deprecated and will be removed in a future version.  The public classes are available in the top-level namespace.
  from pandas.core.index import RangeIndex
Trying to set attribute `.obs` of view, copying.
Trying to set attribute `.obs` of view, copying.
Trying to set attribute `.obs` of view, copying.
Trying to set attribute `.obs` of view, copying.
malformed matrix line 83 2661 9.753568422904793e-309
multiprocessing.pool.RemoteTraceback:
"""
Traceback (most recent call last):
  File "/Users/luke.zappia/miniconda3/envs/scIB-python/lib/python3.7/multiprocessing/pool.py", line 121, in worker
    result = (True, func(*args, **kwds))
  File "/Users/luke.zappia/miniconda3/envs/scIB-python/lib/python3.7/multiprocessing/pool.py", line 47, in starmapstar
    return list(itertools.starmap(args[0], args[1]))
  File "/Users/luke.zappia/miniconda3/envs/scIB-python/lib/python3.7/site-packages/scIB/metrics.py", line 1259, in compute_simpson_index_graph
    if stat(input_path + '_indices_'+ str(chunk_no) + '.txt').st_size == 0:
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/lisi_tmp1601377709/_indices_1.txt'
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "scripts/metrics.py", line 242, in <module>
    trajectory_=trajectory_
  File "/Users/luke.zappia/miniconda3/envs/scIB-python/lib/python3.7/site-packages/scIB/metrics.py", line 1876, in metrics
    multiprocessing = True, verbose=verbose)
  File "/Users/luke.zappia/miniconda3/envs/scIB-python/lib/python3.7/site-packages/scIB/metrics.py", line 1501, in lisi_graph
    multiprocessing = multiprocessing, nodes = nodes, verbose=verbose)
  File "/Users/luke.zappia/miniconda3/envs/scIB-python/lib/python3.7/site-packages/scIB/metrics.py", line 1434, in lisi_graph_py
    count))
  File "/Users/luke.zappia/miniconda3/envs/scIB-python/lib/python3.7/multiprocessing/pool.py", line 276, in starmap
    return self._map_async(func, iterable, starmapstar, chunksize).get()
  File "/Users/luke.zappia/miniconda3/envs/scIB-python/lib/python3.7/multiprocessing/pool.py", line 657, in get
    raise self._value
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/lisi_tmp1601377709/_indices_1.txt'

It only happens for one method (scanorama full) so it's not a general problem but I'm guessing something to do with the integration output.

So either this is a malformed matrix line 83 2661 9.753568422904793e-309 error in the multiprocessing part that is done in C, and then a particular file can't be found by the downstream analysis in python.... or you just don't have any files in /tmp/lisi_tmp1601377709. Could you check if there are any files in there?
Otherwise, @mbuttner... do you have any ideas?

The temp directory has an input.mtx file but none of the _indices* or _distances* files that my other LISI temp directories have.

It seems like the knn-graph has not been computed by the cpp function. That's why the different 'chunk files' are not present.

where could the line malformed matrix line 83 2661 9.753568422904793e-309 be coming from? Not from the cpp function?

How does the input.mtx file look like? In the LISI-code, I used
 mmwrite(mtx_file_path,
            adata.uns['neighbors']['connectivities'],
            symmetry='general')

To create the input.mtx file. If it is empty (or nonsense), that might explain why the cpp function did not produce any output.

where could the line malformed matrix line 83 2661 9.753568422904793e-309 be coming from? Not from the cpp function? And if one of the cpp function workers fails, would the others still produce output files?

The cpp function runs only once to compute the knn-graph on the full data matrix and splits the output (an index list) into chunks.

What is your scanpy version? Is the nearest neighbor graph still located at adata.uns['neigbors']['connectivities'] or do you have an .obsp object instead?

I would presume that the cpp run failed due to the malformed matrix line error and therefore produced no output (if it's just a single job where 1 error means no files are generated), which meant the error arose that no input file was available to read to further the calculations. But of course... I have no idea here :D

How does the input.mtx file look like?

It looks ok as far as I can tell
>>> mat = mmread('input.mtx')
>>> mat
<4314x4314 sparse matrix of type '<class 'numpy.float64'>'
	with 86450 stored elements in COOrdinate format>
>>> mat_dense = mat.todense()
>>> mat_dense
matrix([[0., 0., 0., ..., 0., 0., 0.],
        [0., 0., 0., ..., 0., 0., 0.],
        [0., 0., 0., ..., 0., 0., 0.],
        ...,
        [0., 0., 0., ..., 0., 0., 0.],
        [0., 0., 0., ..., 0., 0., 0.],
        [0., 0., 0., ..., 0., 0., 0.]])
>>> scipy.stats.describe(mat_dense)
DescribeResult(nobs=4314, minmax=(array([0., 0., 0., ..., 0., 0., 0.]), array([1., 1., 1., ..., 1., 1., 1.])), mean=array([0.00149025, 0.00100387, 0.00126313, ..., 0.00111166, 0.00090563,
       0.00126314]), variance=array([0.00086184, 0.0005056 , 0.00051443, ..., 0.00070479, 0.00040159,
       0.00078288]), skewness=array([28.81485849, 30.74991031, 27.84944371, ..., 31.60309792,
       35.09651265, 28.52167416]), kurtosis=array([<PHONE_NUMBER>6, 1120.46076981, 1009.07881687, ..., 1081.65372246,
       1546.08669569,<PHONE_NUMBER>3]))

What is your scanpy version? Is the nearest neighbor graph still located at adata.uns['neigbors']['connectivities'] or do you have an .obsp object instead?

I have scanpy v1.4.6 and anndata v0.7.1. It's only a problem for scanorama on a couple of scenarios so I think it's something to do with that integration output, not something general.

OK, but it puzzles me that you don't have the _indices* and _distances* files in your tmp directory.

Coming back to the malformed matrix error: I also assume that a distance of 9e-309 is too small to be represented as a double in C++.

The error is hardcoded from the C++ part:
https://github.com/theislab/scib/blob/47da3bf86ca9f9b8d9613230bd967cccc25b61df/scIB/knn_graph/knn_graph.cpp#L90-L105
Any idea what the error refers to?

Okay, so weight is a C++ 64 bitdouble, which has limits of: -1.7E+308 to +1.7E+308 and about 16 decimal digits. The e-309 unfortunately doesn't fit into that. It seems that scanorama uses a more precise method internally for their calculations. I would probably just look for the value and set it to 0 and rerun.
The question is... should we catch this in the code or not? If we look for this error, in the LISI C++ code, we will slow down the metric further, which doesn't seem like a good idea. We could look for this in the python code though. The real question is: how does python store this value? Could you look for the offending value, @lazappi and check how python stores it internally? At least we know it should be the value in adata.X[adata.obs_names[83],adata.var_names[2661]].

I can't get the indexing you suggested to work, not sure what is going on here:
>>> adata.X[adata.obs_names[83],adata.var_names[2661]]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/luke.zappia/miniconda3/envs/scIB-python/lib/python3.7/site-packages/scipy/sparse/_index.py", line 33, in __getitem__
    row, col = self._validate_indices(key)
  File "/Users/luke.zappia/miniconda3/envs/scIB-python/lib/python3.7/site-packages/scipy/sparse/_index.py", line 137, in _validate_indices
    row = self._asindices(row, M)
  File "/Users/luke.zappia/miniconda3/envs/scIB-python/lib/python3.7/site-packages/scipy/sparse/_index.py", line 161, in _asindices
    raise IndexError('Index dimension must be <= 2')
IndexError: Index dimension must be <= 2
>>> adata.obs_names[83]
'human3_lib3.final_cell_0803-0'
>>> adata.var_names[2661]
'GAS8'
>>> adata.X['human3_lib3.final_cell_0803-0', 'GAS8']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/luke.zappia/miniconda3/envs/scIB-python/lib/python3.7/site-packages/scipy/sparse/_index.py", line 33, in __getitem__
    row, col = self._validate_indices(key)
  File "/Users/luke.zappia/miniconda3/envs/scIB-python/lib/python3.7/site-packages/scipy/sparse/_index.py", line 137, in _validate_indices
    row = self._asindices(row, M)
  File "/Users/luke.zappia/miniconda3/envs/scIB-python/lib/python3.7/site-packages/scipy/sparse/_index.py", line 161, in _asindices
    raise IndexError('Index dimension must be <= 2')
IndexError: Index dimension must be <= 2

Using numbers for indexing doesn't show anything interesting:
>>> print(adata.X[80:85, 2658:2663])
  (0, 0)	-0.002799201
  (0, 1)	-0.007948541
  (0, 2)	0.001190949
  (0, 3)	0.0025276951
  (0, 4)	-0.00058060087
  (1, 0)	-0.0064782263
  (1, 1)	-0.00036682197
  (1, 2)	-0.004223289
  (1, 3)	0.014151698
  (1, 4)	-0.0005493724
  (2, 0)	-0.0060044294
  (2, 1)	-0.0008786302
  (2, 2)	-0.0067326566
  (2, 3)	0.024539318
  (2, 4)	-0.0005234006
  (3, 0)	-0.0020147967
  (3, 1)	0.02790912
  (3, 2)	0.0010080308
  (3, 3)	0.0024890346
  (3, 4)	-0.00047112707
  (4, 0)	0.014065156
  (4, 1)	0.011179721
  (4, 2)	0.0041127596
  (4, 3)	0.0038861749
  (4, 4)	-0.000660761

Looking for the smallest absolute value in X:
>>> x = adata.X.toarray()
>>> x_abs = np.absolute(x)
>>> x_abs.argmin()
22979577
>>> x.flatten()[22979577]
-4.0687386e-13

I tried to run lisi_graph() manually to verify the error but I couldn't quite get it working.

The indexing error is just numpy being numpy. I forgot you'd have to index separately and before the .X by: adata[adata.obs_names[83],:][:,adata.var_names[2661]].X. Otherwise, using the numbers would have been better. So adata.X[83,2661]` should work i guess.

Can you also check for the smallest value in adata.uns['neighbors']['connectivities']?

It should then be: (3, 3)	0.0024890346 in your list... Ah... just saw @mbuttner's comment... these are connectivity values, and not in adata.X

The neighbours aren't stored in the object so I had to compute them. I tried to do that the same way as the script but might be a bit different.
>>> scIB.preprocessing.reduce_data(adata_int, n_top_genes=None, neighbors=True, use_rep='X_pca', pca=True, umap=False)

Finding the smallest non-zero connectivity values:
>>> x = adata_int.uns['neighbors']['connectivities'].toarray()
>>> i, j = np.where(x==np.min(x[np.nonzero(x)]))
>>> x[i, j]
array([2.65916e-318, 2.65916e-318])

There are definitely some tiny values there. For some reason the indices are different though.
>>> i
array([2851, 3974])
>>> j
array([3974, 2851])
>>> x[i, j]

As far as I can tell these are stored as Python floats (but I'm not really sure how to check this).
>>> x_list = x[i, j].tolist()
>>> x_list
[2.65916e-318, 2.65916e-318]
>>> type(x_list[0])
<class 'float'>

Float info for my system (from here https://stackoverflow.com/questions/1835787/what-is-the-range-of-values-a-float-can-have-in-python):
>>> sys.float_info
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)
# Normalised min (with loss of precision)
>>> sys.float_info.min * sys.float_info.epsilon
5e-324

Hmm. Interesting. When you use scanorama, you obtain 2 different outputs (an embedding, stored in X_emb and the corrected data matrix. I assume that when you compute the neighbors based on X_pca, the distances are different from the ones when you use X_emb.

Otherwise, the distances are pretty low, so we could write a function that shifts all values that are below 1e-308 to that minimum/maximum in the python script before we run the C++ code. I think that this shouldn't take much time/memory, but might distort the neighborhood graph (esp. if there are a couple of these small values). Another option would be to multiply all values with a sufficiently large constant such that the we keep the overall relation of the neighbors.

There are definitely some tiny values there. For some reason the indices are different though.

that's because these are even smaller values than the error value you had before... that was probably just the first value that was smaller than 1e-308. If you check the 83,2661 value in the connectivity matrix, you'll probably find it's the value depicted above. Very curious that python can store floats smaller than your system claims possible.
I think I would go with Maren's "set to zero" suggestion. I wonder if this error might not occur on a different system... but then this is already 64-bit floats... so no idea.

That seems like a reasonable solution to me. I assume that connectivities that small won't make any meaningful difference to the scores. Maybe print a message though so you can tell it's happening.

We would then just need to change the error message in the knn_graph.cpp file I guess. However the error catching there is pretty generic, so hard to give a specific error. Maybe we just add something like "Warning: this means that no file is generated in knn_graph.o and will thus lead to metric errors in the LISI metric". And maybe add something about this might have to do with exceedingly small or large connectivites.

I was thinking you would do the check in Python and if any values are too small set them to zero and print something like "Warning: some connectivities are too small and have been set to zero, this may effect the values for LISI scores". That way you should still get a score rather than an error. Or is that what you are suggesting?
As an aside it's a real pain as a user if one of the metrics fails. You can't turn off an individual metric and you can't really skip the specific scenario that has the error. It would almost be better to return an NA for any metric errors rather than failing.

That is true.. we could check in python beforehand. I was thinking just improve the error message where it's thrown (in the C++ code).
We would just have to generally catch errors in the metrics() function. However, in that case you would not know what the error was... or we print the error but assign NA instead of raising it. You can turn off a metric, but only by going into the code...

Is there a solution for this already? I am currently getting the same error on almost all of my scArches/scVI runs.
ls /tmp/lisi_tmp1603868666/
input.mtx

Traceback (most recent call last):
  File "/storage/groups/ml01/workspace/karin.hrovatin//code/diabetes_analysis/integration/2_evaluation_script.py", line 259, in <module>
    compute_metrics(adata_full=adata_full,latent_adata=latent_adata,metrics=metrics,cell_type_col='cell_type')
  File "/storage/groups/ml01/workspace/karin.hrovatin//code/diabetes_analysis/integration/2_evaluation_script.py", line 185, in compute_metrics
    metrics['graph_iLISI'], metrics['graph_cLISI'] = sm.lisi_graph(adata=latent_adata, batch_key=batch_col,
  File "/home/icb/karin.hrovatin/scib/scIB/metrics.py", line 1511, in lisi_graph
    ilisi_score = lisi_graph_py(adata = adata, batch_key = batch_key,
  File "/home/icb/karin.hrovatin/scib/scIB/metrics.py", line 1453, in lisi_graph_py
    simpson_estimate_batch = compute_simpson_index_graph(input_path = dir_path,
  File "/home/icb/karin.hrovatin/scib/scIB/metrics.py", line 1271, in compute_simpson_index_graph
    if stat(input_path + '_indices_'+ str(chunk_no) + '.txt').st_size == 0:
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/lisi_tmp1603868666/_indices_0.txt'

Yes, we just merged a PR with a fix. Please update your scIB package and get back to us if the error persists.

Yes, I still get it:
multiprocessing.pool.RemoteTraceback:
"""
Traceback (most recent call last):
  File "/home/icb/karin.hrovatin/miniconda3/envs/rpy2_3/lib/python3.8/multiprocessing/pool.py", line 125, in worker
    result = (True, func(*args, **kwds))
  File "/home/icb/karin.hrovatin/miniconda3/envs/rpy2_3/lib/python3.8/multiprocessing/pool.py", line 51, in starmapstar
    return list(itertools.starmap(args[0], args[1]))
  File "/home/icb/karin.hrovatin/scib/scIB/metrics.py", line 1277, in compute_simpson_index_graph
    if stat(input_path + '_indices_'+ str(chunk_no) + '.txt').st_size == 0:
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/lisi_tmp1603881346/_indices_0.txt'
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/storage/groups/ml01/workspace/karin.hrovatin//code/diabetes_analysis/integration/2_evaluation_script.py", line 259, in <module>
    compute_metrics(adata_full=adata_full,latent_adata=latent_adata,metrics=metrics,cell_type_col='cell_type')
  File "/storage/groups/ml01/workspace/karin.hrovatin//code/diabetes_analysis/integration/2_evaluation_script.py", line 185, in compute_metrics
    metrics['graph_iLISI'], metrics['graph_cLISI'] = sm.lisi_graph(adata=latent_adata, batch_key=batch_col,
  File "/home/icb/karin.hrovatin/scib/scIB/metrics.py", line 1522, in lisi_graph
    ilisi_score = lisi_graph_py(adata = adata, batch_key = batch_key,
  File "/home/icb/karin.hrovatin/scib/scIB/metrics.py", line 1452, in lisi_graph_py
    results = pool.starmap(compute_simpson_index_graph, zip(itertools.repeat(dir_path),
  File "/home/icb/karin.hrovatin/miniconda3/envs/rpy2_3/lib/python3.8/multiprocessing/pool.py", line 372, in starmap
    return self._map_async(func, iterable, starmapstar, chunksize).get()
  File "/home/icb/karin.hrovatin/miniconda3/envs/rpy2_3/lib/python3.8/multiprocessing/pool.py", line 771, in get
    raise self._value
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/lisi_tmp1603881346/_indices_0.txt'

OK, is this the full output that you get when you run the LISI metric? I assume that the error comes from the cpp-code, but I do not see any error message related to it.

Yes. My code is
metrics['graph_iLISI'], metrics['graph_cLISI'] = sm.lisi_graph(
                                             adata=latent_adata, batch_key=batch_col,
                                             label_key=cell_type_col, k0=90, type_= 'embed',
                                             subsample=0.5*100, scale=True,
                                             multiprocessing = True, nodes = 4, verbose=False)

Thanks. Can I ask you to re-run your code with verbose=True?

/home/icb/karin.hrovatin/miniconda3/envs/rpy2_3/lib/python3.8/site-packages/scanpy/neighbors/__init__.py:121: FutureWarning: This location for 'distances' is deprecated. It has been moved to .obsp[distances], and will not be accesible here in a future version of anndata.
  adata.uns['neighbors']['distances'] = neighbors.distances
/home/icb/karin.hrovatin/miniconda3/envs/rpy2_3/lib/python3.8/site-packages/scanpy/neighbors/__init__.py:122: FutureWarning: This location for 'connectivities' is deprecated. It has been moved to .obsp[connectivities], and will not be accesible here in a future version of anndata.
  adata.uns['neighbors']['connectivities'] = neighbors.connectivities

using precomputed kNN graph
Convert nearest neighbor matrix and distances for LISI.
Compute knn on shortest paths
LISI score estimation
4 processes started.

---------------------------------------------------------------------------
RemoteTraceback                           Traceback (most recent call last)
RemoteTraceback:
"""
Traceback (most recent call last):
  File "/home/icb/karin.hrovatin/miniconda3/envs/rpy2_3/lib/python3.8/multiprocessing/pool.py", line 125, in worker
    result = (True, func(*args, **kwds))
  File "/home/icb/karin.hrovatin/miniconda3/envs/rpy2_3/lib/python3.8/multiprocessing/pool.py", line 51, in starmapstar
    return list(itertools.starmap(args[0], args[1]))
  File "/home/icb/karin.hrovatin/scib/scIB/metrics.py", line 1277, in compute_simpson_index_graph
    if stat(input_path + '_indices_'+ str(chunk_no) + '.txt').st_size == 0:
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/lisi_tmp1603887050/_indices_3.txt'
"""

The above exception was the direct cause of the following exception:

FileNotFoundError                         Traceback (most recent call last)
<ipython-input-19-c215c286d839> in <module>
----> 1 metrics['graph_iLISI'], metrics['graph_cLISI'] = sm.lisi_graph(adata=latent_adata, batch_key='study_sample',
      2                                                                    label_key='cell_type', k0=90, type_= 'embed',
      3                                       subsample=0.5*100, scale=True,
      4                                             multiprocessing = True,nodes = 4, verbose=True)

~/scib/scIB/metrics.py in lisi_graph(adata, batch_key, label_key, k0, type_, subsample, scale, multiprocessing, nodes, verbose)
   1520
   1521     #compute LISI score
-> 1522     ilisi_score = lisi_graph_py(adata = adata, batch_key = batch_key,
   1523                   n_neighbors = k0, perplexity=None, subsample = subsample,
   1524                   multiprocessing = multiprocessing, nodes = nodes, verbose=verbose)

~/scib/scIB/metrics.py in lisi_graph_py(adata, batch_key, n_neighbors, perplexity, subsample, multiprocessing, nodes, verbose)
   1450
   1451         #create argument list for each worker
-> 1452         results = pool.starmap(compute_simpson_index_graph, zip(itertools.repeat(dir_path),
   1453                                                                 itertools.repeat(batch),
   1454                                                                 itertools.repeat(n_batches),

~/miniconda3/envs/rpy2_3/lib/python3.8/multiprocessing/pool.py in starmap(self, func, iterable, chunksize)
    370         `func` and (a, b) becomes func(a, b).
    371         '''
--> 372         return self._map_async(func, iterable, starmapstar, chunksize).get()
    373
    374     def starmap_async(self, func, iterable, chunksize=None, callback=None,

~/miniconda3/envs/rpy2_3/lib/python3.8/multiprocessing/pool.py in get(self, timeout)
    769             return self._value
    770         else:
--> 771             raise self._value
    772
    773     def _set(self, i, obj):

FileNotFoundError: [Errno 2] No such file or directory: '/tmp/lisi_tmp1603887050/_indices_3.txt'

I am using different scanpy version, but I have modified the metrics file to be compatible with it - other metrics work and LISI worked on some other data.

It looks like you are not getting an output from the C++ file, but there is no error output of that run. I am assuming that _indices_3.txt is meant to be generated by the knn_graph.cpp file. Is that correct, @mbuttner?
Could it be that /tmp/ is full and therefore you cannot store the file in /tmp/ anymore? We have been using /localscratch/ on the slurm cluster instead to avoid this.

I think there is plenty space
df /tmp/
Filesystem     1K-blocks   Used Available Use% Mounted on
tmpfs          197456336<PHONE_NUMBER>25888   1% /tmp

okay, thx... and it's also not write-protected or sth?

I do not think so..I think there was a couple of directories created there by my code, but they do not contain the necessary files:
ls /tmp/lisi_tmp16038*
/tmp/lisi_tmp1603841892:
input.mtx

/tmp/lisi_tmp1603841935:
input.mtx

/tmp/lisi_tmp1603842446:
input.mtx

/tmp/lisi_tmp1603842695:
input.mtx

/tmp/lisi_tmp1603843800:
input.mtx

Okay. So I think the input.mtx is generated by the python part and is meant to be read in by the c++ code to generate the other outputs. That doesn't seem to be happening. I guess you have compiled the c++ code on your machine? It's strange that you don't get any output from that part of the code... we might need to add some print statements to see where it's failing... Or just run the c++ code on the input.mtx files without the pipeline.

Trying to run from python:
cpp_file_path = '/'.join(sm.__file__.split('/')[:-1])+ '/knn_graph/knn_graph.o' #create POSIX path to file to execute compiled cpp-code
#comment: POSIX path needs to be converted to string - done below with 'as_posix()'
#create evenly split chunks if n_obs is divisible by n_chunks (doesn't really make sense on 2nd thought)
n_chunks=1
n_splits = n_chunks -1
mtx_file_path='/tmp/lisi_tmp1603887050/input.mtx'
dir_path='/tmp/lisi_tmp1603887050/'
args_int = [cpp_file_path, mtx_file_path, dir_path, str(90), str(n_splits), str(100)]
subprocess.run(args_int)

CompletedProcess(args=['/home/icb/karin.hrovatin/scib/scIB/knn_graph/knn_graph.o', '/tmp/lisi_tmp1603887050/input.mtx', '/tmp/lisi_tmp1603887050/', '90', '0', '100'], returncode=1)

Running from bash:
 /home/icb/karin.hrovatin/scib/scIB/knn_graph/knn_graph.o /tmp/lisi_tmp1603887050/input.mtx /tmp/lisi_tmp1603887050/ 90  0 100
malformed matrix format, column number decreased 3 779 1.8001004e-01

Okay, now we have some information. This comes from here: https://github.com/theislab/scib/blob/fc65508d70e778b06a724d7cc5359f34e16c0054/scIB/knn_graph/knn_graph.cpp#L102-L106
It seems that the index order in your connectivities matrix is not contiguous in the columns. Could you check the type of adata.uns['connectivities']? Are you using a connectivities matrix that was not generated by sc.pp.neighbors?

I am using lisi_graph function and it does all calculation. The only thing I changed is  connectivities being stored in obsp as I am using newer version of scanpy. It works sometimes, but not always.

It would be important to check if the .mtx file you have generated has contiguous numbering in the row and column indices.. and if row numbers are the first index, or column numbers. You may also have a duplicate index in there for some reason.

So I think there might be problem with my mtx file. Do you know why this could happen or how to fix it?

Okay, so rows 2-6 have monotonically increasing column indices j, after that it goes down. Those first 5 numbers are the problem. I'm not sure why they are there. If you show the first 6 connectivities values in your adata.obsp['connectivities'] via adata.obsp['connectivities'].data[:6] do you see those values? I'm not sure how the .mtx file was generated here... maybe @mbuttner can say more here.

Okay, so rows 2-6 have monotonically increasing column indices j, after that it goes down. Those first 5 numbers are the problem. I'm not sure why they are there. If you show the first 6 connectivities values in your adata.obsp['connectivities'] via adata.obsp['connectivities'].data[:6] do you see those values? I'm not sure how the .mtx file was generated here... maybe @mbuttner can say more.

The input.mtx matrix is a copy of the adata.obsp['connectivities'] input.

Yes, the code is as Maren wrote. I tried to run it by hand and now it worked, but I am not sure what happens  sometimes that matrix gets malformed.

so the issue is in the write function for the .mtx file rather than anywhere else. Is this something worth following up, or shall we close for now @mbuttner ?

I suggest that we add a check function that ensures the correct format of the input.mtx function.

the question is where do we need to check. In the adata.uns['connectivities'] or in the mtx file. It would have been good to see the first connectivities values in the anndata object where it fails... but now it's working again ^^.

It is working only when I run the code by hand line by line. If I try to execute it with scib package it does not work.

Maybe it has to do with scipy versions then?

and does your adata.obsp['connectivities'].data[:10] look like the faulty .mtx file or the a correct version of it?

Not scanpy. lisi_graph_py works, but lisi_graph not. Will post notebook shortly.

Example notebook below.
I do not understand why lisi_graph fails, but lisi_graph_py does not. To best of my knowledge they should be the same.
My lisi_graph code (same as scIB, but some additional debug args): https://github.com/Hrovatin/scib/blob/6bf4498b336a7547b04333d9dd6e694eef159d40/scIB/metrics.py#L1481
troubleshoot_scib_lisi.pdf

Found it I think! (see in bold)
https://github.com/theislab/scib/blob/20b18f1f6627f16a72d25e1f08c092d901af1ccf/scIB/metrics.py#L1510
    if (type_ == 'embed'):
        **adata_tmp** = sc.pp.neighbors(adata,n_neighbors=15, use_rep = 'X_emb', copy=True)
    if (type_ == 'full'):
        if 'X_pca' not in adata.obsm.keys():
            sc.pp.pca(adata, svd_solver = 'arpack')
        **adata_tmp** = sc.pp.neighbors(adata, n_neighbors=15, copy=True)
    else:
        **adata_tmp** = adata.copy()
    #if knn - do not compute a new neighbourhood graph (it exists already)

    #compute LISI score
    ilisi_score = lisi_graph_py(adata = **adata**, batch_key = batch_key,
                  n_neighbors = k0, perplexity=None, subsample = subsample,
                  multiprocessing = multiprocessing, nodes = nodes, verbose=verbose)

    clisi_score = lisi_graph_py(adata = **adata**, batch_key = label_key,
                  n_neighbors = k0, perplexity=None, subsample = subsample,
                  multiprocessing = multiprocessing, nodes = nodes, verbose=verbose)

Thanks! Good you found it. I'll provide a fix.

lisi_graph_py is the python version of lisi, right @mbuttner? We're not running that in our pipeline atm.
What is the issue here exactly? All I see is a comma missing in the ilisi_score = lisi_graph_py(adata = adata line.

We create a adata_tmp object, where we recompute neighbors, but we use the adata in the lisi_graph_py call instead.

If you use type_ == 'embed' it should generate new adata_tmp with neighbours recomputed. But lisi_graph_py is then computed on input adata

This is now fixed in #201. The fix is only important if you add subsetting in the metrics script, as otherwise the neighborhood graph is already computed in that script and so technically doesn't require recomputation. Thus, we don't have to rerun anything.


Ability to manually change a number of users portal or quota through manual override

This issue has split off from #43.
Primary work will be in user_update script.  At the moment, this script can only handle a single patron.
Desire is a comma-separated list of netid or to have a CSV file.

This has been escalated higher.  It might be best to have this as a feature as I don't think it's an easy fix.  Will push to develop to use temporarily until v0.12.0 is complete.


Error when the plugin loading

Error code: https://hastebin.com/uturihoqoh.rb

The paste is empty, I cannot see the error.

The paste is empty, I cannot see the error.

hm. let me place once again
https://privatebin.net/?972cc121a7e16224#9oJYev7GXP7nPjbKpfQF8VqhxFkrEMwDiDv2YJJ4GHt6

Which version of bungeecord are you running? And of playerbalancer?

I have the same error, I use Flamecord, its a fork of bungee, and PlayerBalancer <IP_ADDRESS>

Tell me the version of BungeeCord or Flamecord, I need to know...
A screenshot of /bungee should work.

Closed for not providing issue information.


updated code in ref/getting_started.md

these changes make the code work
except places with comments:
# this gets : AttributeError: ...
# this gets : TypeError: ..

Codecov Report

Merging #270 (350e4b6) into development (a2bab90) will not change coverage.
The diff coverage is n/a.

@@             Coverage Diff              @@
##           development     #270   +/-   ##
============================================
  Coverage        92.44%   92.44%
============================================
  Files              114      114
  Lines            34732    34732
============================================
  Hits             32107    32107
  Misses            2625     2625

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

You can remove the lines creating the nextKeyDig and change the messagize calls to name the second argument:
msg = eventing.messagize(srdr, sigers=sigers)

I just did a commit that removes nextKeyDig and changes the calls to messagize appropriately.
However, I have now indicated one more error, pointed out by:
        # This is not defined (it should probably be `processEvent`).
        # Also, the real error is masked by this "catch".
        kevery.processOne(ims=msg)

Yeah, that's some pretty old code there, lol.
If you add to the imports:
import keri.core.parsing as parsing
and the change the "processOne" line to:
parsing.Parser().parseOne(ims=msg, kvy=kevery)
It should work for you.

OK.  I updated the "last" error.  All example in getting_started.md now work.
I find these examples as definitely the best place to see the code in action.
They should probably be made into tests/demos to ensure they are kept up-to-date.

Everything in that file is in tests but sprinkled throughout test_coring.py, test_eventing.py and elsewhere.
I get your point about these concise examples being useful and needing to keep them up to date.


Provide input via stdin and as an argument

Is your feature request related to a problem? Please describe.
Sometimes I want to pipe in some data (e.g. a file) and provide a prompt, what to do with the provided input via stdin.
Describe the solution you'd like
I want to be able to provide input via stdin and as an argument.
The input via an argument should be appended in such cases.
Example: cat some-file | sgpt "my prompt what i want to do with this file"
Describe alternatives you've considered
You can concatinate input in bash by using parentheses (see example below), but this solution is rather complicated.
( cat some-file; echo "my prompt what i want to do with this file"; ) | sgpt
Search

[X] I did search for other open and closed issues before opening this

Code of Conduct

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

Additional context
No response

won't be implemented for now

What was the motivation for not merging this feature? I was experimenting with sgpt recently and this was one of the first things I wanted to do. Specifically:
$ git diff --cached | sgpt "Summarize all of these changes in a single line."

I would have liked sgpt to send two messages to the chat, one with the piped file, and the second with the command-line prompt.

Yes, it's fine to have a second argument for me (so like pbpaste | sgpt SUBCOMMAND "Summarize this in a single line"). If I'm designing the interface from scratch, what I'd probably do is use a flag as a placeholder to indicate where piped input goes (so like pbpaste | sgpt "Summarize this in a single line" --stdin). Again, ideally these then get delivered as two separate messages to the model rather than catenated into a single model, but that's more minor.
The current workaround doesn't work for me; it's not ergonomic. My "current workaround" is to use llm instead when I want to do this (pbpaste | llm "Summarize this as a single line"), but I want to use sgpt because it's much easier to install a single binary than an entire python package.

Thank you very much for your input!
I will reopen this issue and integrate it. I cannot give you a timeline right now, but I will try to do it in a timely manner.


lnbits: missing parts

These are the missing changes.

I saw the discussion in the other PR regarding re-branding and changing the directory name. If you feel really passionate about this my suggestion would to get this done early on. So LNbits is only at 0.1...
How about moving the directory from LNBits to LNbits and creating a symlink..?

LND_CERT=/mnt/hdd/lnd/data/chain/${network}/${chain}net/tls.cert that is not the right path for the LND cert... or is it?
Should be /mnt/hdd/lnd/tls.cert.

Am I missing something here..?!
 macaroonInvoiceHex=$(sudo xxd -ps -u -c 1000 /mnt/hdd/lnd/data/chain/${network}/${chain}net/invoice.macaroon)
...
  sudo sed -i "s/^LND_INVOICE_MACAROON=.*/LND_INVOICE_MACAROON=${macaroonInvoiceHex}/g" /home/admin/lnbits/.env

Running xxd extracts the macaroon as a hex string. But the env-setting LND_INVOICE_MACAROON is later used in lnd_grpc.Client as a path.

Another question: Are you intending to run LNbits as user admin on the RaspiBlitz? Because admin does not have access to the macaroons without using sudo.
I would suggest to either use bitcoin or to use a dedicated user for LNbits.

Yes, the problem is that @arcbtc was going to test this but his Blitz is broken now... and mine is not ready yet :(
So I am just guessing the path here... As I said when I opened the PR the cert path needs to be checked.
As for the macaroons, that's the original code by @rootzoll , not sure if he wants to use a dedicated user or keep admin.

@rootzoll / @openoms  How should we do this? Should LNbits get a dedicated user?
@eillarra For some reason there does not seem to be a wheel available for the grpcio package for Python 3.7 on Arm. Therefore my Rasperry Pi 3 had to compile it which caused the activation of LNbits to take more than 25 minutes.. :-/

I had a similar experience of it taking more than 20 min to compile on my rPi 4. and when it finished i had some errors:
Apr 24 11:38:15  : Started lnbits. Apr 24 11:38:18  : Apr 24 11:38:18.000 [notice] Guard angeltest9 ($9288B75B5FF8861EFF32A6BE8825CC38A4F9F8C2) is failing more circuits than usual. Most likely this means the Tor network is overloaded. Success counts are 128/183. Use counts are 91/91. 128 circuits completed, 0 were unusable, 0 collapsed, and 0 timed out. For reference, your timeout cutoff is 60 seconds. Apr 24 11:38:21  : Loading .env environment variables… Apr 24 11:38:22  : [2020-04-24 11:38:22 +0100] [19105] [INFO] Starting gunicorn 20.0.4 Apr 24 11:38:22  : [2020-04-24 11:38:22 +0100] [19105] [INFO] Listening at: http://<IP_ADDRESS>:5000 (19105) Apr 24 11:38:22  : [2020-04-24 11:38:22 +0100] [19105] [INFO] Using worker: sync Apr 24 11:38:22  : [2020-04-24 11:38:22 +0100] [19687] [INFO] Booting worker with pid: 19687 Apr 24 11:38:22  : [2020-04-24 11:38:22 +0100] [19687] [ERROR] Exception in worker process Apr 24 11:38:22  : Traceback (most recent call last): Apr 24 11:38:22  :   File "/home/admin/.local/share/virtualenvs/lnbits-ztOIulw8/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker Apr 24 11:38:22  :     worker.init_process() Apr 24 11:38:22  :   File "/home/admin/.local/share/virtualenvs/lnbits-ztOIulw8/lib/python3.7/site-packages/gunicorn/workers/base.py", line 119, in init_process Apr 24 11:38:22  :     self.load_wsgi() Apr 24 11:38:22  :   File "/home/admin/.local/share/virtualenvs/lnbits-ztOIulw8/lib/python3.7/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi Apr 24 11:38:22  :     self.wsgi = self.app.wsgi() Apr 24 11:38:22  :   File "/home/admin/.local/share/virtualenvs/lnbits-ztOIulw8/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi Apr 24 11:38:22  :     self.callable = self.load() Apr 24 11:38:22  :   File "/home/admin/.local/share/virtualenvs/lnbits-ztOIulw8/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 49, in load Apr 24 11:38:22  :     return self.load_wsgiapp() Apr 24 11:38:22  :   File "/home/admin/.local/share/virtualenvs/lnbits-ztOIulw8/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp Apr 24 11:38:22  :     return util.import_app(self.app_uri) Apr 24 11:38:22  :   File "/home/admin/.local/share/virtualenvs/lnbits-ztOIulw8/lib/python3.7/site-packages/gunicorn/util.py", line 358, in import_app Apr 24 11:38:22  :     mod = importlib.import_module(module) Apr 24 11:38:22  :   File "/home/admin/.local/share/virtualenvs/lnbits-ztOIulw8/lib/python3.7/importlib/__init__.py", line 127, in import_module Apr 24 11:38:22  :     return _bootstrap._gcd_import(name[level:], package, level) Apr 24 11:38:22  :   File "<frozen importlib._bootstrap>", line 1006, in _gcd_import Apr 24 11:38:22  :   File "<frozen importlib._bootstrap>", line 983, in _find_and_load Apr 24 11:38:22  :   File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked Apr 24 11:38:22  :   File "<frozen importlib._bootstrap>", line 677, in _load_unlocked Apr 24 11:38:22  :   File "<frozen importlib._bootstrap_external>", line 728, in exec_module Apr 24 11:38:22  :   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed Apr 24 11:38:22  :   File "/home/admin/lnbits/lnbits/__init__.py", line 3, in <module> Apr 24 11:38:22  :     from flask import Flask Apr 24 11:38:22  :   File "/home/admin/.local/share/virtualenvs/lnbits-ztOIulw8/lib/python3.7/site-packages/flask/__init__.py", line 14, in <module> Apr 24 11:38:22  :     from jinja2 import escape Apr 24 11:38:22  : ModuleNotFoundError: No module named 'jinja2' Apr 24 11:38:22  : [2020-04-24 11:38:22 +0100] [19687] [INFO] Worker exiting (pid: 19687) Apr 24 11:38:22  : [2020-04-24 11:38:22 +0100] [19105] [INFO] Shutting down: Master Apr 24 11:38:22  : [2020-04-24 11:38:22 +0100] [19105] [INFO] Reason: Worker failed to boot. Apr 24 11:38:22  : lnbits.service: Main process exited, code=exited, status=3/NOTIMPLEMENTED Apr 24 11:38:22  : lnbits.service: Failed with result 'exit-code'.

The easiest solution would be switching back to REST API, I'll make a funding source now. It shouldn't take long

Thanks for all the testing folks!

@arcbtc Is Python3.7 a hard requirement? If no then I would say simply switching to Python3.6  is the easiest solution as there is a wheel available for that: https://pypi.org/project/grpcio/#files grpcio-1.28.1-cp36-cp36m-linux_armv7l.whl

@frennkie no, it should work with 3.6. If that helps for the Blitz I see no problem in using 3.6

Ah damn.. not that trivial after all
$ pipenv --python 3.6
Warning: Python 3.6 was not found on your system…

So we would have to install Python 3.6 extra for this.. which of course would be possible. But may be switching to the REST as @arcbtc suggest might really be the more maintainable solution.

Pi Wheels has the pre build gRPC wheel for Python 3.7: https://www.piwheels.hostedpi.com/project/grpcio/
But I have to admit that I have not heard of this site until. Using this is also a switch from PyPI to there.. no a change I would make without further consideration..

LND REST funding source has been restored so let's just use that rather than RPC, keep it simple

I would very much support a dedicated user for LNbits.
The approach I took with JoinMarket and BTCpay too.

Make  dedicated data directory on the disk in /mnt/hdd/app-data/.lnbits
Symlink it to /home/lnbits/.lnbits (for example) so it is kept during SD card updates and all data is recovered
with a dedicated user a clean uninstall in very easy with
sudo userdel -rf lnbits
(which would keep the data directory on the disk, but would delete the symlink)

@arcbtc are we are reverting to LndRestWallet?

I guess the key part here is: How do "bonus" scripts get access to macaroons. A copy of the admin.macaroon is available (to admin) here: /home/admin/.lnd/data/chain/bitcoin/testnet/admin.macaroon

Yes with more and users for extra apps getting introduced, the strategy to copy them all into seperate drectories comes to a limit.
To prevent copying we could place the original macaroons to a seperate directory in /mnt/hdd/app-data/lnd and use unix file permissions to allow different user access (lndadmin-group, lndread-group).
In the main lnd config we could force the different location for the macaroons with the following settings:
; Path to write the admin macaroon for lnd's RPC and REST services if it
; doesn't exist. This can be set if one wishes to store the admin macaroon in a
; distinct location. By default, it is stored within lnd's network directory.
; Applications that are able to read this file, gain admin macaroon access.
; adminmacaroonpath=~/.lnd/data/chain/bitcoin/simnet/admin.macaroon

; Path to write the read-only macaroon for lnd's RPC and REST services if it
; doesn't exist. This can be set if one wishes to store the read-only macaroon
; in a distinct location. The read only macaroon allows users which can read
; the file to access RPCs which don't modify the state of the daemon. By
; default, it is stored within lnd's network directory.
; readonlymacaroonpath=~/.lnd/data/chain/bitcoin/simnet/readonly.macaroon

; Path to write the invoice macaroon for lnd's RPC and REST services if it
; doesn't exist. This can be set if one wishes to store the invoice macaroon in
; a distinct location. By default, it is stored within lnd's network directory.
; The invoice macaroon allows users which can read the file to gain read and
; write access to all invoice related RPCs.
; invoicemacaroonpath=~/.lnd/data/chain/bitcoin/simnet/invoice.macaroon

So every bonus app user gets part of the fitting unix user group and has in his home directory also a ./.lnd/lnc.conf that points to those macroon locations - so that even lncli should work for those users.
@frennkie this way we could prevent any copying when macaroons get updated, correct?

@eillarra OK I merged and tested and it seems to run so far (loading, create wallet, send, receive). It was a bit slow on my testing machine - but maybe that needs a restart of my Blitz. Is it so far ready for a v1.5 release or is this reverting to LndRestWallet (or something else) something to wait for?

@eillarra OK I merged and tested and it seems to run so far (loading, create wallet, send, receive). It was a bit slow on my testing machine - but maybe that needs a restart of my Blitz. Is it so far ready for a v1.5 release or is this reverting to LndRestWallet (or something else) something to wait for?

Did it work with the gRPC library? I assumed you will be using the REST library in the end, because of the installation problems. I have a PR to make this requirements optional, so if you use REST the initial installation should be much lighter.
@arcbtc wanted to use gRPC because it is easier to check a individual invoice status than with REST. I think in REST it goes through all existing invoices to find one, so it can take a long on some Blitzs with lots of transactions.

Another thing we should discuss is what is the best option to install this (tags or not). Should we create a raspiblitz tag that can move between LNbits stable releases? So now it will point to 0.1.0, but then we can silently move the tag to 0.1.1 or other stable release.
I want to avoid master, but the current solution is not clean either: I think I have moved the 0.1.0 tag 3-4 times already as we were fixing Blitz related issues and other issues :)

LNDs REST doesnt allow you to check a single outgoing payment, which is bizarre, but I have limited it to only fetching 20 outgoing payments and parsing that, its still a big blob of data though, and might need to be revised if someone has a really busy LND REST/LNbits install

If GRPC takes ages to install REST should be used, and Eneko has submitted a PR our end to not include the GRPC library in the initial install
https://github.com/lnbits/lnbits/pull/26

Adding the separate user: https://github.com/rootzoll/raspiblitz/pull/1144
Tested installing, it takes couple of minutes, but nothing extreme.
Still quicker much than to build LND (shouldn'tt even mention electrs)

GRPC is much better as it is faster and better supported. Not being able to check a single outgoing payment over LND rest is an issue

The installation issues were solved by sorting the dependencies before 0.1.0.
I vote for staying with GRPC.

GRPC is a much better choice as it is faster

I agree

and better supported.

I partially agree.. But gRPC for sure adds a heavy dependency (on a Raspiberry Pi I think this is manageable.. on a ESP32.. not really..).

Not being able to check a single outgoing payment over LND REST is an issue.

https://api.lightning.community/#v1-invoice - no problem to retrieve a single payment via REST.

https://api.lightning.community/#v1-invoice - no problem to retrieve a single payment via REST.

this endpoint is to check an invoice added, ie incoming.
https://api.lightning.community/#v1-payments - is for outgoing and returns all payments, there is no v1/payment equivalent to v1/invoice
As far as I am aware LND can not be installed on an ESP32, if the install time is fine on the Pi, then GRPC is the way to go.

I was a bit quick with commenting and missed the "outgoing" part - sorry.

No worries, I just don't understand why /v1/payment doesn't exist anyway. It seems like a very basic requirement for LND to have. Easy LND pr for someone who knows what they're doing!

Is this saving the macaroon in a different file or is it in fact a string?
https://github.com/rootzoll/raspiblitz/commit/178ca9b520bdd8036488212d426cda03478dfe9f#r38794927

@eillarra the install is working on my side. But I can see that the app is slow and wallet balances take time to update. I think a moving tag for raspiblitz makes sense, so that you can improve still after the v1.5 release.

This is an installation error, some lag in the communication between the node and lnbits

If its something to be fixed during installation its critical for the v1.5 release. After the weekend I would release a v1.5 RC2 and by the end of the week (for the hacksprint) I like to have the final release ready. So if there is something to fix .. it should be commited latest mid of next week.


[clusterchecks/dispatcher_configs] Simplify shouldDispatchDangling func and fix typo in name

What does this PR do?
Small cleanup opportunity that I saw while working on related code.
Describe how to test/QA your changes
Skip
Reviewer's Checklist

[ ] If known, an appropriate milestone has been selected; otherwise the Triage milestone is set.
[ ] Use the major_change label if your change either has a major impact on the code base, is impacting multiple teams or is changing important well-established internals of the Agent. This label will be use during QA to make sure each team pay extra attention to the changed behavior. For any customer facing change use a releasenote.
[ ] A release note has been added or the changelog/no-changelog label has been applied.
[ ] Changed code has automated tests for its functionality.
[ ] Adequate QA/testing plan information is provided if the qa/skip-qa label is not applied.
[ ] At least one team/.. label has been applied, indicating the team(s) that should QA this change.
[ ] If applicable, docs team has been notified or an issue has been opened on the documentation repo.
[ ] If applicable, the need-change/operator and need-change/helm labels have been applied.
[ ] If applicable, the k8s/<min-version> label, indicating the lowest Kubernetes version compatible with this feature.
[ ] If applicable, the config template has been updated.

Rebased on top of main.


User access handling provision in wagtail

[ ] R&D User access handling in wagtail

Addressing this issue on #1, so closing it issue for now


bug:The Dailycode's Search Bar was not working

Title: Search Bar Does Not Return Results
To Reproduce :
Steps to reproduce the behavior:

Open the website in a browser (e.g., Chrome).
Navigate to the Learning Paths section.
Click on the search bar at the top.
Type any query into the search bar (e.g., "types").
Observe that no results are displayed, and the search functionality does not work.

Expected behavior

The search bar should return relevant results based on the input query.

Browser: Chrome
Additional context
This issue occurs consistently across different queries. The rest of the site appears to function normally.

Hi, thanks for pointing this out. I will check and inform the team

This is because the Google API got expired!

Should be fixed when #576 has a pr


Hazelcast (from examples/hazelcast) doesn't support namespaces and uses the old API

It has the same problem as examples/cassandra (see #10231 and #10034) since the code for pod discovery is very similar (Hazelcast, Cassandra).
Maybe we should create a tiny java library with this functionalty?

@caesarxuchao

@mwielgus , I think the change you made in #10231 is very good. I think it would be helpful if we make it a java library and reuse it in all related examples.

Fixed with #11146


[Event Request] Table 39 "Purchase Line" OnBeforeConfirmReceivedShippedItemDimChange

Describe the request
Hello, would it be possible to add OnBeforeConfirmReceivedShippedItemDimChange event on ConfirmReceivedShippedItemDimChange() procedure in table 39 "Purchase Line", like this:
    procedure ConfirmReceivedShippedItemDimChange(): Boolean
    var
        ConfirmManagement: Codeunit "Confirm Management";
        IsHandled: Boolean;
        Result: Boolean;
    begin
        IsHandled := false;
        OnBeforeConfirmReceivedShippedItemDimChange(Rec, IsHandled, Result); //New event
        if IsHandled then
            exit(Result);

        if not ConfirmManagement.GetResponseOrDefault(StrSubstNo(Text049, TableCaption), true) then
            Error(Text050);

        exit(true);
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeConfirmReceivedShippedItemDimChange(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean; var Result: Boolean)
    begin
    end;

Additional context
We need to skip confirm if PurchaseLine.GetSystemCalledDimensionUpdate() returns true.
Internal work item: AB#498858

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 16024.


Newline (\n) not doing \r on Linux ($TERM = xterm)

I feel like I must be doing something wrong as I can't really imagine being the first to notice this behavior. So I apologize in advance if I'm just being silly here.
I'm using linenoise in a multi-threaded application that accepts user-input on terminal but can also output text on its own (for example, in case of errors it prints an error message).
We used to use libreadline, but it's no longer possible because of its license.
The error messages are just printed as:
std::cout << "Line one\n";
std::cout << "Line two\n";

With linenoise, the output is as follows:
Line one
        Line two

So 'Line two' is on a new line, but it starts right after 'Line one', rather than at the beginning of the line. It is as if the implicit \r is missing.
It's solved by using "\r\n" instead of \n as newline but it's kind of awkward to change this all over the place.
Note: clearly, whenever something is printed as a result of user-input, everything is fine. e.g.
> help
No problem
with newlines
here

Is this a known issue? Can I work around it without having to sed all of my \n into \r\n?
Thank you for your time.

Instead of fixing output behaviour in other parts of code, we can do the following -

Set output mode to not raw by default.
Change the output mode to raw just before actual printing. Then, switch it back to not raw mode as illustrated in the patch below.

I recently created a patch in the connection on https://github.com/msteveb/linenoise/pull/18
It was easy to do in that branch as the print function was wrapped in as a custom function fd_printf()

I haven't tried termbox. I don't know about the possibility of this
conflict.
In my code (without termbox), I am using linenoise with this patch, and so
far it has worked satisfactorily.
~ Prasad Bhat
On 9 January 2015 at 15:06, Stephan Beal<EMAIL_ADDRESS>wrote:

Doesn't this patch conflict with the deprecation of tb_blit(), in that tb
can no longer know WHEN output will be performed (because we now have to
write directly to the buffer)?
—
Reply to this email directly or view it on GitHub
https://github.com/antirez/linenoise/issues/67#issuecomment-69312226.


Add jump to oldest unread button when entering a chat

Autoscroll to last read message

Issue created by BlueBubbles Bot in the BlueBubbles commnity on behalf of @zach in #requests.

Do we still need this now that we have a scroll to bottom button?

done, toggleable due to perf. implications


Update Gulp workflow for Docker

Updated gulp.js and package.json with copy action vs. symlink. Docker hates symlinks. Also added a buildDock and cleanDock command for easier usage and avoid impacting the current workflow.

The PR looks fine, and I don't have any issues with merging this. But, I am curious as to its purpose? The gulp tasks, in general, aren't meant for mainstream consumption, there only meant to be used in development. Is there any particular reason you are setting this up for docker?

I use Docker because I don't trust Windows to emulate the production infrastructure. I wanted it to run on the same server core. My hope would be to eliminate dev vs prod wonkiness. :-)
Docker hates symlinks, so I needed actual fs.copy operations. I didn't want to mess with the current workflow.
This could be useful for new devs looking to use Docker. There are several implementations out there for Foundry.

Sounds interesting. Maybe if it's merged and works well you can amend the contributing documents with alternate setup instructions ?

I would be happy to! I can include info and my docker-compose file.

Ok, sounds good. Since this doesn't have any affect on our current development process, and it might be useful anyway, I'm going to go ahead and merge it.


Question:  Is it possible to use a schema with in-memory storage

OrientDB Version, operating system, or hardware.

v2.0 SNAPSHOT[ ] - .18[ ] .17[ ] .16[ ] .15[ ] .14[ ] .13[ ] .12[ ] .11[ ] .10[ ] .9[ ] .8[ ] .7[ ] .6[ ] .5[ ] .4[ ] .3[ ] .2[ ] .1[ ] .0[ ]
v2.1 SNAPSHOT[ ] - .16[ ] .15[ ] .14[ ] .13[ ] .12[ ] .11[ ] .10[ ] .9[ ] .8[ ] .7[ ] .6[ ] .5[ ] .4[ ] .3[ ] .2[ ] .1[ ] .0[ ]
v2.2 SNAPSHOT[x] - .rc1[ ] .beta2[ ] .beta1[ ]

Operating System

[x] Linux
[ ] MacOSX
[ ] Windows
[ ] Other Unix
[ ] Other, name?

Expected behavior and actual behavior
Expected: create an in-memory database but able to leverage schema definitions
Actual: Able to create in-memory database but unsure how to add schema definitions
Steps to reproduce the problem
Create an in-memory database using Java

Absolutely. What's the problem?

Here's our scenario, we will have schema defined for our Development, Staging, and Production db instances such as Classes, Properties, Indexes, etc.   We want to use the in-memory option for unit tests.  After the tests are finished, there is nothing to clean up.  However, we would like the in-memory db to have the same schema as the plocal instances.  Not sure to inject schema definitions for in-memory without executing SQL statements one by one. Any ideas?

You can create the schema of in-memory database with SQL or API. The only thing is that once last session is closed it could be dropped if you work with plocal.

Is there a way to export a plocal db into sql statements which can be executed?  I know that the export UI can dump the database but that is not really something that can be imported into in-memory, can it?   Just trying to think of way to take schema from plocal and get it into an in-memory instance.

This is going to be a bit off-topic of sorts. Sorry for the slight tangent and thread hijacking. But, I think it could be a good point to make now.
The concern this thread raises is one of the reasons why we are looking for a pure NoSQL solution, similar to like MongoDB offers (but with relational data of course!!!). The major "trick" MongoDB offers is, if you insert a document into MongoDB and the collection is new to MongoDB, it automatically creates the collection for you. If you insert properties into a document, and those properties are new, MongoDB also creates the properties for you (ODB can do this too!). In other words, the data being input into the database defines the schema automatically. This allows for the object relational impedance mismatch to be avoided. This also means there is no longer the problem of schema migration or versioning.
This blog series explains the huge advantages for development much better.
https://www.mongodb.com/blog/post/mongodb-vs-sql-day-1-2
https://www.mongodb.com/blog/post/mongodb-vs-sql-day-3-5
https://www.mongodb.com/blog/post/mongodb-vs-sql-day-14
So, with this kind of "on-the-fly" schema building, development within a memory only ODB is simple, because the schema is created directly with inserting of data through the code. As MongoDB puts it, "Data is schema". This offers great advantages, which most people don't get, when they move to MongoDB. When it finally clicks with some people, they find it hard to go back to developing any RDBMS (even with ORMs).
I am hoping that ODB can offer this "MongoDB like" NoSQL on-the-fly schema building in version 3.0. I haven't mentioned this idea in a proper suggestion yet, but I will soon. I believe ODB isn't too far away from getting it done. It just needs the automatic creation of classes and indexing on properties not definied by schema. This could help ODB catapult to the top.
Scott

@RAndrews137 unfortunately there is no tool that create the SQL steps to recreate the database, but the export/import should do the job.

@smolinari what do you mean with schema in MongoDB?

@lvca - There is no schema in MongoDB. That is the important point. :smile:
When you have time, please read the blog posts I linked to above on what it means to develop without schema, or rather how the schema is determined mainly through the data in the code (there must always be some schema somewhere). It would be cool when ODB works as a proper NoSQL database, like MongoDB.
For instance, when I declare
CREATE VERTEX Car SET brand = 'Fiat', model = 'Cinquecento'

Then ODB looks for a class "Car", if it isn't already created, ODB creates the class and extends it from V (because we are creating a vertex) automatically. The two properties "brand" and "model" are also automatically added to the "Car" class with the values given.
ODB is almost there. We just need the automation of class creation and extention of V. :smile:
Scott

@smolinari I don't see this as a big deal: usually you know the type of records you're going to use beforehand. So a create class Car extends V can be executed when you create the database or at application startup. Instead, allowing automatic creation of classes at the fly could be dangerous in some case where you misspelled the class name and you end up with runtime errors of records not found, just because they were stored on different classes. Anyway this is very easy to support, we could provide a global configuration for this.

If the code started causing errors because of a misspelled class name, then it will cause those errors no matter what how the class is created, right?  I mean, I can just a well spell the class wrong in CREATE CLASS as I could in CREATE VERTEX or CREATE EDGE.
What we need is the ability to create internal data structures without the DDL, which is normally necessary to create internal data structures. For instance, CREATE CLASS or CREATE PROPERTY shouldn't be needed at all. :smile:
If you feel this important concept of NoSQL could be easily done within ODB, but with a global setting, that would be great too. :+1:
Still, also think about the all the new possibilities. For instance, the request in this thread to be able to create an in-memory database for testing, but without having to migrate any schema, would be a piece of cake. The tests only have to do inserts and away it goes. Also, and more importantly, code working with an ODB database wouldn't be schema version dependent. That is the real big win!
Also, please don't forget to allow for indexing on non-schema defined properties!!! Very, very important to make ODB a proper NoSQL solution! :stuck_out_tongue_closed_eyes:
Scott

For now, we are building our own utility to export out the schema from a known db, and will try to put that into statements which can be used against an in-memory db.

We were able to add schema via in-memory but that involved executing commands to create the schema. Longer term, it would nice if there was a way to inject schema via JSON or something.


Document "Getting Started/create and publish packages"

A tutorial on packaging a simple library for the vcpkg registry. Currently, the sample library is on my GH repo. Eventually, the sample library will move to a more official place.
Fixes: https://github.com/microsoft/vcpkg-docs/issues/181#issuecomment-1771460425

I could use some feedback on how to better communicate that the tutorials work together as a trilogy.


Cobudget emails

What are you needing here Susan? I'm happy to jam on this if you wanted to find a time? Is this things like, sign up and other automated emails? or mailchimp email lists?

@susanbasterfield

I think there should be 2 lists - one of the opt ins from the website, the other current users. I need help constructing an email to both, initially telling then that Cobudget  has been brought into the lab and then asking them for input, feeback, probably via a typeform?  What do you think @SlimeyD


Allow default arguments for sum enum variant constructors

Resolves #1399.

Hello!
One or more of the commit messages in this PR do not match the Jakt code submission policy, please check the lint_commits CI job for more details on which commits were flagged and why.
Please do not close this PR and open another, instead modify your commit message(s) with git commit --amend and force push those changes to update this PR.

I don't know the language very well, but I was asking if it was normal that these two codes don't compile:
fn h() -> i64 => 42

enum S {
    X
    fn my_func(this, anon def: i64 = h()) {
        println("{}", def)
    }
}

fn main() {
    S::X.my_func()
}

fn h() -> bool => true

enum Animal {
    Dog(name: String, cute: bool = h())
}

fn main() {
    let animal = Animal::Dog(name: "John")

    match animal {
        Dog(cute) => {
            if cute {
                println("I am cute")
            }
        }
    }
}

Here are the compiler outputs I get for these two codes:
Error: Call to unknown function: ‘h’
───┬─ ./test.jakt:5:38
 4 │     X
 5 │     fn my_func(this, anon def: i64 = h()) {
   │                                      ┬
   │                                      ╰─ Call to unknown function: ‘h’
 6 │         println("{}", def)
───┴─

Error: Call to unknown function: ‘h’
───┬─ ./test.jakt:4:36
 3 │ enum Animal {
 4 │     Dog(name: String, cute: bool = h())
   │                                    ┬
   │                                    ╰─ Call to unknown function: ‘h’
 5 │ }
───┴─

There are definitely a lot of rough edges around default arguments (this, also whether they can throw, where they're actually supposed to be evaluated, etc), so I'd say what you're seeing is a bug with either:

order of function declarations
where the default argument is evaluated
where the default argument is typechecked
?

(Build failure is expected, caused by AK changes)

Yes, I know the problem. It's the runtime/AK/Format.h file at line 718 that makes the compilation fail, just comment it out:
template<typename T>
struct Formatter<Optional<T>> : Formatter<FormatString> {
    static constexpr bool is_debug_only() { return true; }

    ErrorOr<void> format(FormatBuilder& builder, Optional<T> const& optional)
    {
        if (optional.has_value())
            return Formatter<FormatString>::format(builder, "Optional({})"sv, *optional);
        return builder.put_literal("OptionalNone"sv);
    }
};

Could you rebase on top of main? somehow GH seems okay with merging this as-is, but the last commit has a different hash and is a duplicate, so I'm not convinced GH knows what it's doing :sweat_smile:

Ok it's done.


iOS 14

Amazing program! Have you had a chance to update the code to make it work with iOS14. The phone recognizes the device and adds it to the list of cars, but the protocol.py kicks out a "struct.error: unpack requires a buffer of 24 bytes" error. Not sure if this is a IOS14 issue or an issue with what I'm doing.

So after messing around with the some more, it turns out the apk only works with the Carlinkit dongle and not one of the clones.

Ahh, that's a shame (also sorry for the reply). I'm surprised it doesn't work on the clones though, I'd expect things to be pretty similar - is there a specific point where it fails, or are they totally different?

No need to apologize for the late reply...what you have made is incredible. I changed the dongle on a whim after seeing this:
https://www.reddit.com/r/CarPlay/comments/iwch1s/autokit_android_carlinkit_worked_for_a_while_then/
Not sure at what point it fails, but definitely before the phone connection is made.
I was thinking of doing something slightly different (though my python skills are horrid.) It might be possible to display the H264 data on X and then VNC into it. Might end up having less overhead. Currently trying to understand your code a bit more. Attempted to play the audio packets through sounddevice, but I'm fairly far from being able to manage the speaker and microphone connection for now.
Like you, I am annoyed with the shenanigans of Tesla's refusal to allow CarPlay.

I seem to have similar issues, even with the Carlinkit dongle on iOS 14:
Found USB device...
Connected!
Connection started!
Exception in thread Thread-103:
Traceback (most recent call last):
  File "/usr/lib/python3.7/threading.py", line 917, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.7/threading.py", line 865, in run
    self._target(*self._args, **self._kwargs)
  File "/home/pi/dev/pycarplay/link.py", line 77, in _read_thread
    msg = header.upgrade(self._ep_in.read(needlen))
  File "/home/pi/dev/pycarplay/protocol.py", line 36, in upgrade
    upd._setdata(bodydata)
  File "/home/pi/dev/pycarplay/protocol.py", line 164, in _setdata
    (v,) = struct.unpack("<L", data)
struct.error: unpack requires a buffer of 4 bytes

The device appears to register its name, and even the carkit logo appears, but then dies and nothing seems to get piped through protocol.py afterwards

@harrylepotter Quick suggestion... If you have an RPi lying around, try throwing Android on it and see if the Carlinkit app works on it. I discovered that the knock-off version of the dongle I bought on Amazon didn't even work with the app on Android.

@bnazari - i tried this on an old Nexus 5 i had sitting in a drawer and the carplay works perfectly. I'm suspecting there may have been some changes to the box fw - according to the app it's running 2<IP_ADDRESS>9

update: I found an older (jadx-able) 2019 version of the APK. Have observed that the files uploaded seem to differ in the older release.

...From what i can see it initialized the car audio, but then i get this message back (protocol.py:164):
array('B', [4, 0, 0, 0, 57, 48, 58, 65, 50, 58, 53, 66, 58, 67, 66, 58, 68, 65, 58, 57, 48, 234, 95, 115])
Seems like this is maybe a frame we should be dropping/ignoring, perhaps?

Most of that is clearly ASCII, and it decodes to "90:A2:5B:CB:DA:90" which looks like a MAC address. I assume it's something to do with the wifi/Bluetooth support (which my dongle never had, so I was unable to debug it).

update: ignoring that message (the mac address seems to be the Bluetooth mac address of my iphone) results in a working implementation of teslabox.py:
index d2e1dfd..50a798b 100644
--- a/protocol.py
+++ b/protocol.py
@@ -38,6 +38,9 @@ class Message:
         except KeyError:
             upd=Unknown(self.type)
             upd._setdata(bodydata)
+        except struct.error:
+            upd=Unknown(self.type)
+            upd._setdata(bodydata)
         return upd

I'm sure I saw some mention of it (as you've also noticed). If I did I likely updated the "function name map" file I was using with jadx to show something more human readable, I thought I'd recently uploaded that into the repo but it looks like I didn't, I'll see if I can find it again as that might have some extra clues for anyone who wants to continue poking around in there.

Amazing! thankyou so much!

added support for buttons on another thread. Gist of protocol from Jad here: https://gist.github.com/harrylepotter/f4bfb37f11faf9efcfd6cd4b189cfa33

I uploaded the JADX function file to https://github.com/electric-monk/pycarplay/blob/master/Autokit.jobf, hopefully it has some useful extra function names in it (some that are just guesses).


[DO NOT MERGE] Remove " register" suffix from register names

Context
Friendly register names can now contain the " register" suffix, so adding it in the templates generates redundant redundancy.
I found this out the hard way by updating the government service register, which resulted in the frontend displaying "Government service register register".
This is a problem as right now we can't refresh the data in registers-frontend without breaking all the copy on the site.
Changes proposed in this pull request
We think that register frontend shouldn't impose any constraints over the naming of registers - it should be flexible enough to handle whatever we want to call them.
This PR changes all the places where register names are referred to like "the XYZ register" or just "XYZ register" to just "XYZ". This needs content review before merging. In particular, the copy on the updates page doesn't work anymore so I had to change the sentence structure.
Screenshots
These screenshots show what the website will look like with the current names (some of them will end with " register").
Note that this suffix will not show up when this is first deployed, because production still has old data. The goal of this PR is for registers frontend to work with both naming conventions.

The new names will also be surfaced in page titles and JSON-LD metadata that gets included in the HTML.

Going to close this and revert back to the old style names for now. We'd rather not refer to "* register" everywhere. We may still need to modify some of the copy on registers frontend at a later date, because if we start listing registers elsewhere we will lose control over the naming convention, but I think it will be easier to postpone this until we need to deal with it.


Remove AEM Nature not available

If a project is configured as a Content Project (by mistake), there should an option to remove the AEM nature from the project

good idea!
ps: meanwhile this can be achieved manually by modifying the nature section in the .project file.

@ashlyjose - converting to a content/bundle project does two things

adds the faceted project nature
adds a content/bundle facet

The facets can be removed by right-clicking on the project, selecting project facets, unchecking the particular facet you want to remove and pressing OK.
I'm not sure if it's possible to remove the faceted nature, but that's out of scope for us

Thanks @rombert - it works.
It is possible to remove the faceted nature as Maven plugin does it. You have the option in Maven to remove maven nature

By "out of scope for us" I mean to say that the faceted nature is something we inherit from the other Eclipse projects and we should not try to remove it.

Closing this as there hasn't been activity for over a year.


Add support for tag settings specific to org-journal

Fixes #109

@TinaRussell If you like, you can resolve it yourself, but I'm also willing to fix it.


Add equivalence-library rules between rzz and cp

Summary
These gates are locally equivalence (as are all the Ising-interaction gates), and this simple additional rule lets things like QFT, which are defined by Qiskit's default constructor in terms of cp, get converted into rzz or rzx.

Details and comments
I also have a complete rewrite of the equivalence library that is complete and in theory optimal (in 2q gate count) for translations at jakelishman/qiskit-terra@6654059193, but the current BasisTranslator algorithm does not work as well with the structuring of the rules.  I have a new algorithm for translation in mind that I'm calling the BasisConstructor, which will solve that problem, and also make basis translation for overcomplete basis sets and heterogeneous architectures more accurate, reliable and performant (hopefully!), but I haven't had chance to write it up yet.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>8
Details

18 of 18 (100.0%)  changed or added relevant lines in 1 file are covered.
5 unchanged lines in 3 files lost coverage.
Overall coverage increased (+0.02%) to 89.199%

Files with Coverage Reduction
New Missed Lines
%

qiskit/transpiler/passes/synthesis/unitary_synthesis.py
1
88.26%

crates/accelerate/src/two_qubit_decompose.rs
1
90.82%

crates/qasm2/src/lex.rs
3
91.98%

Totals

Change from base Build<PHONE_NUMBER>9:
0.02%

Covered Lines:
71528

Relevant Lines:
80189

💛  - Coveralls


Add Riak Disk Stats WM API (DO NOT MERGE)

Opening a PR for peer review before a customer demo.
This adds a Riak erlang HTTP client to CS, and adds a Riak disk stats webmachine API call (for use with Riak CS Control).
Implements issue https://github.com/basho/riak_cs/issues/612 , for use with https://github.com/basho/riak_cs_control/issues/39

Repo cleanup sweeping.
It seems this PR is stale? I will close it but
please feel free to re-open if I'm too fast :smile:


add puppeteer page listener

what about the docs? in different PR?

I added some docs in getting-started. I think it pretty much covers everything.
Should more docs be added?

oh... right... the testkit api hasn't really changed,
ok cool :)


"Always latest" notification type

Hi!
Is it possible to display only the latest notification?
i.e. we display an error after the validation and we don't want them to be stacked because only the latest is the relevant one
Thanks!

I ended up adjusting the styles attached to give a 0 opacity sooner than later


Release docker image for arm64

The following files have been modified:

In circle.yml file added a new job publish in order to use buildx to build and push the image for both the platforms to dockerhub.

Looks like there is a yaml error according to CircleCI

I merged these changes in #512

Thank you for tackling this! 🙏

Looks good on master


Ashuku/azurecodesignfor.netsdk

Contributing to the Azure SDK
Please see our CONTRIBUTING.md if you are not familiar with contributing to this repository or have questions.
For specific information about pull request etiquette and best practices, see this section.

Please do not add management and data plane libraries in the same pull request.

/azp run prepare-pipelines

/azp run net - trustedsigning - mgmt

/azp run net - trustedsigning - mgmt

/azp run net - trustedsigning - mgmt - ci


help odysee

Could you provide an api to list videos from a channel via get method, or put a module in python to do this function?

You get videos with
lbrynet claim search --channel=@MyChannel --stream_type=video

Normally this returns 1 page with 20 claims but you can make it return a page with an arbitrary number of claims. For example, to return all, you can use a very large number.
lbrynet claim search --channel=@MyChannel --stream_type=video --page_size=99000

I provide a library of functions that can be used in Python scripts, https://github.com/belikor/lbrytools
I would like to merge some useful functions into lbrynet but this may take a while as I need to investigate the code more.

how do I put it inside a python script and list the video page links?

Using my code.
import lbrytools

s = lbrytools.ch_search_latest("@DistroTube", number=10)
for claim in s:
    print(claim["canonical_url"])

The title of this issue makes no sense "help odysee". And also it's not a programming issue, so it should be closed.

Using my code.
import lbrytools

s = lbrytools.ch_search_latest("@DistroTube", number=10)
for claim in s:
    print(claim["canonical_url"])

The title of this issue makes no sense "help odysee". And also it's not a programming issue, so it should be closed.

I made my addon for kodi another way
script -<EMAIL_ADDRESS>Addon for Kodi - https://github.com/zoreu/addon_visao_libertaria/raw/main/plugin.video.visaolibertaria.zip

The way you are doing it is not optimal.
You are querying the lbry.tv website. This is unnecessary as this information can be gathered from the lbrynet daemon running locally, which directly connects to the blockchain.
Start the lbrynet daemon locally.
lbrynet start

Then you can communicate through the localhost server.
output = requests.post('http://localhost:5279', json=msg).json()
if "error" in output:
    return output["error"]

result = output["result"]
# inspect result for the new videos


result2pb: fix the wrong number of arguments check-ups (#2945)

Which would cause indexError exception in this case. Also, simply
the file I/O via with statement.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


WFLY-5070 @WebServlet.loadOnStartup=0 doesn't startup the servlet

Windows Build 2409 is now running using a merge of 90bb01336c782d9426c106ec263b8f7366a2e993

Linux with security manager Build 2224 is now running using a merge of 90bb01336c782d9426c106ec263b8f7366a2e993

Linux Build 7361 is now running using a merge of 90bb01336c782d9426c106ec263b8f7366a2e993

Linux with security manager Build 2224 outcome was SUCCESS using a merge of 90bb01336c782d9426c106ec263b8f7366a2e993
Summary: Tests passed: 889, ignored: 288 Build time: 0:06:41

Linux Build 7361 outcome was SUCCESS using a merge of 90bb01336c782d9426c106ec263b8f7366a2e993
Summary: Tests passed: 3082, ignored: 368 Build time: 0:48:27

Windows Build 2409 outcome was SUCCESS using a merge of 90bb01336c782d9426c106ec263b8f7366a2e993
Summary: Tests passed: 3082, ignored: 368 Build time: 0:50:46