[Discussion] Removal of options from getModelForClass making existingConnection usage challenging

I am attempting to migrate to 6.0. We are using NestJS as our framework, and more specifically, kpfromer/nestjs-typegoose for integrating Typegoose with NestJS.
In an effort to migrate nestjs-typegoose to 6.0, the first hangup I am running into is the removal of options from getModelForClass. Since the mongoose connection is setup ahead of time, and does not use the default connection, passing this connection into each model is challenging.
Giving this some additional thought, since the connection is added as part of a decorator, I'm having a hard time seeing how this could be done for even non-NestJS apps. Usually, an additional connection needs to be setup async ahead of time, which makes it hard to pass a connection to an imported file at module load time, without forcing the creation of a wrapper for each model that allows passing in a connection post module load time.
Any thoughts on how to get the existingConnection back into the model load time in a way more similar to how it was passed in via getModelForClass?

For reference, this is the line in nestjs-typegoose that I'm having a hard time porting:
https://github.com/kpfromer/nestjs-typegoose/blob/master/src/typegoose.providers.ts#L29
Since NestJS is DI driven, it needs the ability to load the models into the DI layer, and provide them with the connection as well.
This makes me feel like adding a "connectionOptions" argument back to the getModelForClass function is justifiable.
Perhaps there is a way to keep both approach in place, and if connectionOptions are passed into getModelForClass it takes precedence  (or vice-vera, modelOptions take precedence).

thanks for letting us know before v6.0.0 releases, i would have a question:
would schemaOptions be needed in getModelForClass or just existingConnection & existingMongoose?

We ran into the same issue:
@duro  Hotfix for us: Use Reflect.defineMetadata to define the decorator data.
I think only existingConnection & existingMongoose is necessary but schemaOptions would be nice to modify.

Fixed by #35


Unable to override SiteConfig.Title in some parts of the CMS

Affected Version
silverstripe-themes/simple     dev-master e4b3aa2 The SilverStripe simple theme (default SilverStripe 3 theme)
silverstripe/lumberjack        2.0.0              A module to make managing pages in a GridField easy without losing any of the functionality that you're used to i...
silverstripe/recipe-cms        1.1.2              SilverStripe recipe for fully featured page and asset content editing
silverstripe/recipe-plugin     1.3.0              Helper plugin to install SilverStripe recipes
tractorcow/silverstripe-fluent 4.1.2              Simple localisation for Silverstripe
Description
I need to override the getTitle function of the SiteConfig, so I writed that function in my SiteConfigExtension
namespace alesmaweb\core\Extensions;
use SilverStripe\ORM\DataExtension;
class amwSiteConfigExtension extends DataExtension {
public function getTitle() {
return "myString";
}
}
This function does nothing.
Instead, if I write this function:
public function Title() {
return "myString";
}
It returns "myString" in frontend and in backend only here

Here, however, not even

Please, how can I solve? I think that it's a bug, isn´t?
Thank you!

There’s a config setting for this https://github.com/silverstripe/silverstripe-admin/blob/1/code/LeftAndMain.php#L1779:
SilverStripe\Admin\LeftAndMain:
  application_name: 'MyString'

Hi! thanks for the reply but I think that doesn't solve the problem. I need to get the value from the SiteConfig table (field "Title") and not from the configuration file.

In that case, you’ll need to update the config value in PHP - after the database is ready - with something like:
use SilverStripe\Admin\LeftAndMain;
use SilverStripe\SiteConfig\SiteConfig;

// ...

$siteConfig = SiteConfig::current_site_config();
Config::modify()->set(LeftAndMain::class, 'application_name', $siteConfig->Title);

I’d probably put that in an extension applied to LeftAndMain, using the init hook here: https://github.com/silverstripe/silverstripe-admin/blob/1/code/LeftAndMain.php#L733.
If you’re still stuck, I’d suggest asking on the forums or Slack channel :)

Oh, I see. It looks like you’re trying to translate the title? If that’s the case, it’s probably better to apply FluentExtension to SiteConfig and add translations that way rather than storing them as JSON.
As Title is a database field in SiteConfig, creating a method named Title() usually would work (but is not advised). The title at the top of the list of pages (your second screenshot) is hard-coded to fetch the database value, not the template-rendered value here: https://github.com/silverstripe/silverstripe-cms/blob/4/code/Controllers/CMSMain.php#L2225-L2235. If that’s the approach you choose to take, you’ll need to hook into that updateCMSTreeTitle extension point.

Yes, exacty, I want to translate Title and Tagline fields. For Tagline all is good but for the Title I found out that problem. I just know the I'm able to translate the title (and other DataObject) with Fluent but in this case I would not create a new table for only two fields. That's all.
P.S: I tried with the updateCMSTreeTitle but nothing happend. I see that the title in the SiteTree page is generated by an ajax function (vendor\silverstripe\cms\templates\SilverStripe\CMS\Controllers\Includes\CMSMain_PageList.ss)

Well, at the end I used Fluent translation, now all is fine.
Thank you


Can't configure the image registry with config.toml.tmpl or registries.yaml or both of them.

Environmental Info:
K3s Version:
❯ k3s -v
k3s version v1.26.0+k3s1 (fae88176)
go version go1.19.4
❯ k3s kubectl get node -o wide
NAME     STATUS   ROLES                  AGE   VERSION        INTERNAL-IP    EXTERNAL-IP   OS-IMAGE     KERNEL-VERSION   CONTAINER-RUNTIME
k8saio   Ready    control-plane,master   37d   v1.26.0+k3s1   <IP_ADDRESS>   <none>        Arch Linux   5.15.86-1-lts    containerd://1.6.12-k3s1

Node(s) CPU architecture, OS, and Version:
❯ uname -a
Linux k8saio 5.15.86-1-lts #1 SMP Sun, 01 Jan 2023 16:03:00 +0000 x86_64 GNU/Linux

Cluster Configuration:
Only one node.
I want to configure the image registry, but anyway is unuseful.
Here is my config.toml.tmpl: ( /var/lib/rancher/k3s/agent/etc/containerd/config.toml.tmpl)
version = 2
[plugins."io.containerd.internal.v1.opt"]
  path = "/var/lib/rancher/k3s/agent/containerd"
[plugins."io.containerd.grpc.v1.cri"]
  stream_server_address = "<IP_ADDRESS>"
  stream_server_port = "10010"
  enable_selinux = false
  enable_unprivileged_ports = true
  enable_unprivileged_icmp = true
  sandbox_image = "rancher/mirrored-pause:3.6"

[plugins."io.containerd.grpc.v1.cri".containerd]
  snapshotter = "overlayfs"
  disable_snapshot_annotations = true

[plugins."io.containerd.grpc.v1.cri".cni]
  bin_dir = "/var/lib/rancher/k3s/data/81710a58143cb0c5b20f2a31e88a85b3401f2d407649b5988eacbe3e3ba1a203/bin"
  conf_dir = "/var/lib/rancher/k3s/agent/etc/cni/net.d"

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
  runtime_type = "io.containerd.runc.v2"

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
  SystemdCgroup = true

[plugins."io.containerd.grpc.v1.cri".registry]
  [plugin."io.containerd.grpc.v1.cri".registry.mirrors]
    [plugin."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
      endpoint = ["https://docker.mirrors.ustc.edu.cn"]

Also I've set the registries.yaml  ( /etc/rancher/k3s/registries.yaml) :
❯ cat /etc/rancher/k3s/registries.yaml
mirrors:
  docker.io:
    endpoint:
      - 'https://docker.mirrors.ustc.edu.cn'

However ，no matter which way I use or both have no effect. Who can help me...
❯ crictl info|grep  -A 5 registry
    "registry": {
      "configPath": "",
      "mirrors": null,
      "configs": null,
      "auths": null,
      "headers": null

I'm sure I've restart containerd and k3s.

You "template" at /var/lib/rancher/k3s/agent/etc/containerd/config.toml.tmpl is not a template, it is just a copy of an already templated config file. Please check the docs, and fill that file with actual template content that the registry configuration can be rendered into.


verification fails for the simple MM example

The HIP example at https://github.com/zjin-lcf/HeCBench/tree/master/src/wmma-hip is similar to codes in https://rocm.docs.amd.com/projects/rocWMMA/en/latest/API_Reference_Guide.html:
The matrices A and B are of type float16 while the matrices C and D are of float32. However, the verification fails for the example after the host GEMM is added for validation.
// Host GEMM validation
void gemm_cpu_h(uint32_t m, uint32_t n, uint32_t k, rocwmma::float16_t const *a,
                rocwmma::float16_t const *b, rocwmma::float32_t const *c, rocwmma::float32_t *d,
                uint32_t lda, uint32_t ldb, uint32_t ldc, uint32_t ldd,
                rocwmma::float32_t alpha, rocwmma::float32_t beta) {
  for (uint32_t i = 0; i < m; ++i) {
    for (uint32_t j = 0; j < n; ++j) {
      rocwmma::float32_t accum = 0.0f;
      for (uint32_t h = 0; h < k; ++h) {
        accum += static_cast<rocwmma::float32_t>(a[i * lda + h]) *
                 static_cast<rocwmma::float32_t>(b[j * ldb + h]);
      }
      d[i * ldd + j] = alpha * accum + beta * c[i * ldc + j];
    }
  }
}

It is successful for the CUDA example (https://github.com/zjin-lcf/HeCBench/tree/master/src/wmma-cuda).
I am not sure if there are issues in the example or library. Thank you.

Hello Jin, thank you for reaching out!
For this particular issue, we will require more information - much like from the given template in the Issue Discussion section of the Contributing Guide. Please provide information on your OS, GPU, and ROCm version for us to get started investigating. Thank you!

5.15.0-105-generic Ubuntu SMP
gfx908
hipcc --version
HIP version: 6.0.32831-204d35d16
AMD clang version 17.0.0 (https://github.com/RadeonOpenCompute/llvm-project roc-6.0.2 24012 af27734ed982b52a9f1be0f035ac91726fc697e4)
Target: x86_64-unknown-linux-gnu
Thanks.

I tested your HIP sample on gfx908 and had to change WAVE_SIZE from 32 to 64 to get the expected output. Let me know if that works for you.

That works on gfx908.
I also tried to run the example on a gfx1030 device.
The error message is the same when the WAVE_SIZE is 32.
./main 256 256 256 100 1
Max relative error: nan
When the size is 64, the output is
./main 256 256 256 100 1
Max relative error: 0.999846
Thanks

rocWMMA does not support gfx1030, only gfx11+ for RDNA.


Restore ability of non-admins to delete workbooks

I didn't try testing against old versions but I didn't find anything that looked like it would have introduced a change anytime recently.
Your change looks fine. I'll hold PR approval for the automated test coverage.

Hi @labkey-jeckels: I just added an integration test, but this exposed the need for a couple related changes, summarized below:

AbstractQueryUpdateService.java: truncate rows requires AdminPermission. Workbooks are kind of a weird case here, but I think my proposed change (deferring to container.getPermissionNeededToDelete()) is appropriate here.

TriggerConfigurationsTable.java has some weird preexisting code. It overrides hasPermission() to hard-code AdminPermission for everything. This took me a little bit to track down and understand, since the result was upstream code throwing a "The user does not have read permission for table X", when in fact there is code buried deep in the stack that ignores the actual permission being requested and asks for AdminPermission... Anyway, I am less sure on my proposal here because I dont exactly understand why that code exists, but I am proposing to also change this to Container.getPermissionNeededToDelete(), which will be Admin permission for normal container types and therefore unchanged by this PR.

@bbimber will the new test fail without those changes? I'm curious about the codepath that is triggering the problem. I can give it a try locally but wanted to confirm the repro scenario first.

@labkey-jeckels: This code only got on my radar specifically because is was triggered by this test. I can look at it in more detail if you want, but my guess is that on any container delete certain tables are truncated (perhaps container scoped domains or something?). In any event, DeleteFolderAction definitely triggered the pathways in question here. It is possible I could figure out some other resolution that is higher upstream of what I'm touching here, though nothing was immediately obvious the first time through.

@labkey-jeckels: This code only got on my radar specifically because is was triggered by this test. I can look at it in more detail if you want, but my guess is that on any container delete certain tables are truncated (perhaps container scoped domains or something?). In any event, DeleteFolderAction definitely triggered the pathways in question here. It is possible I could figure out some other resolution that is higher upstream of what I'm touching here, though nothing was immediately obvious the first time through.

Thanks. I repro'd locally and have a better handle on what's happening now. Your change to AbstractQueryUpdateService would probably be fine but I opted for an approach that makes TriggerConfigurationsTable slightly more normal. Unless you object, I'll verify it passes on TeamCity too and then approve/merge.

hi @labkey-jeckels: no, i have no opinions whatsoever on how to implement whatever the pipeline trigger code is trying to do. if you think your approach fits it better, fine with me.


It would be better to adjust the size to make the error message displays well and no scroll bar occurs on the 'Proxy Settings' dialog

Storage Explorer Version: 1.23.0-dev
Build Number: 20220109.3
Branch: main
Platform/OS: Windows 10
How Found: Ad-hoc testing
Regression From: Not a regression
Steps to Reproduce

Open Storage Explorer -> Click 'Edit -> Configure Proxy'.
Set Source to 'Use app proxy settings'.
Check 'Use a username and password' -> There is an error message.
Check whether the error message displays well and no scroll bar occurs.

Expected Experience
It would be better to adjust the size to make the error message displays well and no scroll bar occurs.
Actual Experience
The error message displays well after pulling down the scroll bar.

Additional Context

This issue also reproduces when typing an invalid Port/URL.
This issue doesn't reproduce on Linux Ubuntu 18.04/MacOS Big Sur 11.6.1.

Verified this issue on the build main/20220111.1. Fixed.


Miller-Rabin primality test and primes generation

Hi guys! Thanks for a nice library on bigints!
This PR implements Miller-Rabin primality test as a starting point for checking primality and generating random primes.

Miller-Rabin primality test method is_prime_miller_rabin_vartime for UInt
RandomPrime trait for generating random prime UInts

Miller-Rabin can be implemented using only existing crate machinery.
As far as I understood, all other algorithms are more advanced and not necessarily demanded for practical purposes (
https://crypto.stackexchange.com/questions/71/how-can-i-generate-large-prime-numbers-for-rsa
https://math.stackexchange.com/questions/1064784/do-we-still-need-probabilistic-primality-testing-methods-for-practical-applicati#1069342)

FYI, there's already a primes library built on crypto-bigint called crypto-primes: https://github.com/entropyxyz/crypto-primes
We don't mention it anywhere though so the discoverability is a little bad /cc @fjarri

FYI, there's already a primes library built on crypto-bigint called crypto-primes: https://github.com/entropyxyz/crypto-primes
We don't mention it anywhere though so the discoverability is a little bad /cc @fjarri

Oh, I see, cool :)

It's listed on cryptography.rs now, but otherwise I'm not sure where else I can mention it to help people find it

The crypto-bigint README would be a good start.
I’d also still be in favor of merging the two, which would definitely address the discoverability issue.

I’d also still be in favor of merging the two, which would definitely address the discoverability issue.

I am not really in favor of that. It is well-isolated and moves at a different velocity. I wouldn't want to have to wait for a new crypto-bigint release to get access to some new feature.

Okay cool, well we should add at least add a link in the README.md still.
That leaves the question of what to do with this PR.

(That said, I'm not opposed to moving crypto-bigint under the RustCrypto umbrella, but I think you were against adding another repo)

Okay cool, well we should add at least add a link in the README.md still.
That leaves the question of what to do with this PR.

No worries, guys, I am absolutely ok if you're going to close it :) Would be grateful if you could make a quick code review for the sake of my learning :)
Anyway thanks for a quick response and useful links!

Going to go ahead and close this, but thanks for the attempt!

(That said, I'm not opposed to moving crypto-bigint under the RustCrypto umbrella, but I think you were against adding another repo)

@fjarri that's an interesting idea

Would be grateful if you could make a quick code review for the sake of my learning :)

Sorry, can't justify going into much detail for a PR that's not going to be merged, but in general:

The performance without pre-sieving will be pretty bad. Especially when finding safe primes. And when I say bad I mean pretty much unusable for practical primes sizes (say, 1024 bits) :)
A sieving iterator (so that you generate a random start and search for primes starting from it) improves performance even more, but may lead to biased distribution (although both GMP and OpenSSL use it).
BPSW test (MR + Lucas) is the current state of the art for primality testing, and unlike pure MR is believed to not have false positives (at least for the practical bit sizes). OpenSSL uses pure MR, but only because they have a super-optimized MR method.
The default 50 rounds is neither here nor there. GMP uses 25, FIPS requires 64-128.
The use of inner functions (get_random_base() and mod_pow()) doesn't seem justified to me, they could be just inlined.
In the for _ in 0..k loop you repeatedly create DynResidueParams and cast integers in and out of the Montgomery representation. This is slow, you can just do it once and run the whole loop in Montgomery representation.
More tests would be good. MR has known false positives that it could be tested against (https://oeis.org/A001262). If you're testing a Carmichael number, you can check it properties with respect to specific bases.

Would be grateful if you could make a quick code review for the sake of my learning :)

Sorry, can't justify going into much detail for a PR that's not going to be merged, but in general:
* The performance without pre-sieving will be pretty bad. Especially when finding safe primes. And when I say bad I mean pretty much unusable for practical primes sizes (say, 1024 bits) :)

* A sieving iterator (so that you generate a random start and search for primes starting from it) improves performance even more, but may lead to biased distribution (although both GMP and OpenSSL use it).

* BPSW test (MR + Lucas) is the current state of the art for primality testing, and unlike pure MR is believed to not have false positives (at least for the practical bit sizes). OpenSSL uses pure MR, but only because they have a super-optimized MR method.

* The default 50 rounds is neither here nor there. GMP uses 25, FIPS requires 64-128.

* The use of inner functions (`get_random_base()` and `mod_pow()`) doesn't seem justified to me, they could be just inlined.

* In the `for _ in 0..k` loop you repeatedly create `DynResidueParams` and cast integers in and out of the Montgomery representation. This is slow, you can just do it once and run the whole loop in Montgomery representation.

* More tests would be good. MR has known false positives that it could be tested against (https://oeis.org/A001262). If you're testing a Carmichael number, you can check its properties with respect to specific bases.

@fjarri thanks a lot for a detailed response and a lot of comments to improve on!


Async optimizations

Some async performance stuff:

Concurrency where possible ie:

don't do:
let a = foo().await;
let b = bar().await;

do:
let (a, b) = join!(foo, bar).await;

Also, spawn may not be ideal for performance. It can be better to refactor to avoid that.

Recursive futures imply a heap allocation for every frame. If you can refactor the code to be imperative you may be able to avoid that.

Just some thoughts!

Wow, can you create a PR with examples @insanitybit? Amazing suggestions!


Feature/551 table locking

Changes

First change

Related issue

Additional information and checks

[ ] Pull request linked in changelog

@stefanspiska not sure  why the tests failed, can you trigger them again?


Ran for 200 epochs  batch size 32 on brats18

I noticed that I couldn't get the collab to work due to a tensorflow error however I tried to run it locally and was able to modify the notebook to run it as a python script.
I initially ran with default setting and this was my output:
https://gist.github.com/CraigMyles/12800936b55830d92aaf6a4b7bbb913e
I then ran with 200 epochs and batch size 32. and I got the following results:
https://gist.github.com/CraigMyles/f69392cba910accacbd45fc378a4474f
Epoch 200/200
4/4 [==============================] - 51s 13s/step - loss: 0.0225 - Dec_GT_Output_loss: 0.0000e+00 - Dec_VAE_Output_loss: 0.0225 - Dec_GT_Output_dice_coefficient: 0.0000e+00 - Dec_VAE_Output_dice_coefficient: 0.8982
I just have  a few questions regarding the model and how it works, I noticed that with other segmentation models, once you have trained it, you have a weighted model which can be used against a testing set however I don't see this to be the case here?
Also I was wondering if possible how I would be able to get results in the form of jpg or png images that I would be able to turn into a gif.
Any advice or explanation would be great

Hello @CraigMyles,
This script was written before TensorFlow2.0 was released. I am not sure how things work now, but since the model itself is designed in Keras, you should be able to do:
model.save('model.h5')

to save the model.
To later load the model:
from keras.models import load_model
model = load_model('model.h5')

To get predictions on a test image, you can use
model.predict(img)

Where img is a numpy array. You can save with cv2.imwrite.

FYI:

Hello @CraigMyles,
This script was written before TensorFlow2.0 was released. I am not sure how things work now, but since the model itself is designed in Keras, you should be able to do:
model.save('model.h5')

to save the model.
To later load the model:
from keras.models import load_model
model = load_model('model.h5')

This will not work due to custom loss function. I had to save weights and rebuild the model. Let me know if there is a better way.

This works actually. At least it used to in TensorFlow 1.x.
I forgot to account for the custom loss function. My bad. Anyway, this is how you do it. You save the model as described above. After that, to load the model, you load_model with a custom_objects argument where you pass in all the custom things.
You can read more about it here (Check the 4th point, aptly titled: Handling custom layers (or other custom objects) in saved models)

Thanks.
Here's what I tried:
from tensorflow.keras.models import load_model
from model import loss_gt, loss_VAE
from group_norm import GroupNormalization
model2 = load_model(model_name, custom_objects={'loss_gt': loss_gt,
'loss_VAE': loss_VAE,
'GroupNormalization': GroupNormalization})
Get hung up on the following error:

AttributeError                            Traceback (most recent call last)
 in ()
2 from model import loss_gt, loss_VAE
3 from group_norm import GroupNormalization
----> 4 model2 = load_model(model_name, custom_objects={'loss_gt': loss_gt, 'loss_VAE': loss_VAE, 'GroupNormalization': GroupNormalization})
8 frames
/tensorflow-1.15.2/python3.6/tensorflow_core/python/keras/saving/save.py in load_model(filepath, custom_objects, compile)
141   if (h5py is not None and (
142       isinstance(filepath, h5py.File) or h5py.is_hdf5(filepath))):
--> 143     return hdf5_format.load_model_from_hdf5(filepath, custom_objects, compile)
144
145   if isinstance(filepath, six.string_types):
/tensorflow-1.15.2/python3.6/tensorflow_core/python/keras/saving/hdf5_format.py in load_model_from_hdf5(filepath, custom_objects, compile)
160     model_config = json.loads(model_config.decode('utf-8'))
161     model = model_config_lib.model_from_config(model_config,
--> 162                                                custom_objects=custom_objects)
163
164     # set weights
/tensorflow-1.15.2/python3.6/tensorflow_core/python/keras/saving/model_config.py in model_from_config(config, custom_objects)
53                     'Sequential.from_config(config)?')
54   from tensorflow.python.keras.layers import deserialize  # pylint: disable=g-import-not-at-top
---> 55   return deserialize(config, custom_objects=custom_objects)
56
57
/tensorflow-1.15.2/python3.6/tensorflow_core/python/keras/layers/serialization.py in deserialize(config, custom_objects)
103       module_objects=globs,
104       custom_objects=custom_objects,
--> 105       printable_module_name='layer')
/tensorflow-1.15.2/python3.6/tensorflow_core/python/keras/utils/generic_utils.py in deserialize_keras_object(identifier, module_objects, custom_objects, printable_module_name)
189             custom_objects=dict(
190                 list(_GLOBAL_CUSTOM_OBJECTS.items()) +
--> 191                 list(custom_objects.items())))
192       with CustomObjectScope(custom_objects):
193         return cls.from_config(cls_config)
/tensorflow-1.15.2/python3.6/tensorflow_core/python/keras/engine/network.py in from_config(cls, config, custom_objects)
1079         if layer in unprocessed_nodes:
1080           for node_data in unprocessed_nodes.pop(layer):
-> 1081             process_node(layer, node_data)
1082
1083     name = config.get('name')
/tensorflow-1.15.2/python3.6/tensorflow_core/python/keras/engine/network.py in process_node(layer, node_data)
1037         if not isinstance(input_tensors, dict) and len(flat_input_tensors) == 1:
1038           input_tensors = flat_input_tensors[0]
-> 1039         layer(input_tensors, **kwargs)
1040
1041     def process_layer(layer_data):
/usr/local/lib/python3.6/dist-packages/keras/engine/base_layer.py in call(self, inputs, **kwargs)
473
474             # Handle mask propagation.
--> 475             previous_mask = _collect_previous_mask(inputs)
476             user_kwargs = kwargs.copy()
477             if not is_all_none(previous_mask):
/usr/local/lib/python3.6/dist-packages/keras/engine/base_layer.py in _collect_previous_mask(input_tensors)
1439             inbound_layer, node_index, tensor_index = x._keras_history
1440             node = inbound_layer._inbound_nodes[node_index]
-> 1441             mask = node.output_masks[tensor_index]
1442             masks.append(mask)
1443         else:
AttributeError: 'Node' object has no attribute 'output_masks'

Hmm, weird. Haven't seen that error. Will try to look into it. In the meantime, if you manage to solve it, please do share the solution here.


Volume fade in and fade out

Thank you so much for this great app, it's almost perfect!
The only thing I'd like to see is a volume fade in effect when playsing/resuming music and fade out effect when pausing/stopping playback. It it possible to implement it?
This, and the ability to continue playback when launching the app again remembering the last song and playlist would be super nice to have.
Thanks again!

I just had to reply... "almost perfect" is right. What a great app! Wishing there was an iOS version already.

@shokk why wouldn't you use Google Music for iOS?

I already do but there is no scrobbling in Google Music for iOS.


Proparse error on preprocessor constant in InitializeComponent method

A colleague has adjusted Visual Designer generated code in InitializeComponent to use a preprocessor constant instead of a hard coded value.
While this is against the internal rules (as this will break when changing anything using the Visual Designer), the preprocessor and compiler has no problem with this.
I do however get proparse errors on this, and I don't see how this differs from any other use of preprocessor constants.

[2024-09-10T11:08:24.318+0200] [ERROR] [Glims] Proparse error in 'be\mips\glims\client\qc\view\windows\QCPopulationView.cls' at position :1897:79
Position 79 appears to be the . after the closing } in the screenshot above...
The same in OEDT editor looks like this:

Any idea why Proparse can't handle this?

Yes!
It's in an include file, inside a
&IF '{&WINDOW-SYSTEM}' = 'MS-WINDOWS'
block.
I remember this is something we discussed (WindowSystem=MS-WINDOWS is in progress.ini).
So this is a known limitation which could be solved if we could inject this value into the preprocessor somehow...

The window-system preprocessor is set by whatever .exe is being used - prowin vs _progres - does your openedge-project.json config contain:
"graphicalMode": true

?

@stefandrissen Proparse doesn't rely on the AVM, so some values are hard-coded. It's possible to override them in sonar-scanner: https://github.com/Riverside-Software/sonar-openedge/wiki/Property-list#preprocessor--proparse. This is currently not possible in VS Code (but not for long).

@LievenDeFoor Added preprocessor section in openedge-project.json in order to control various preprocessor values. Will be available in next pre-release.

@stefandrissen , the value of SESSION:WINDOW-SYSTEM / {&WINDOW-SYSTEM} can be overridden, which is what we use to get a consistent value on Windows.

ABL supports an override option that enables applications that need the WINDOW-SYSTEM attribute to return the value of "MS-WINDOWS" for all Microsoft operating systems to do so. To establish this override capability, define the WindowSystem key in the Startup section in the current environment, which might be the registry or an initialization file. If the WindowSystem key is located, the WINDOW-SYSTEM attribute returns the value associated with the WindowSystem key on all platforms.

https://documentation.progress.com/output/ua/OpenEdge_latest/pdsoe/PLUGINS_ROOT/com.openedge.pdt.langref.help/rfi1424920468946.html

Version 1.11.2 is now on the marketplace (or will be soon). You can use the preprocessor section in opendge-project.json to control some preprocessor values in Proparse. Feedback welcome :-)

Version 1.11.2 is now on the marketplace (or will be soon). You can use the preprocessor section in opendge-project.json to control some preprocessor values in Proparse. Feedback welcome :-)

Can you give an example on the syntax to be used (e.g. to set the WINDOW-SYSTEM)?

@lievendf Here is an example:
  "preprocessor": {
    "windowSystem": "MS-TRUC",
    "batchMode": false
  }

You can use code completion in the config file.

@gquerret , thanks, we figured out some things by looking that the last commits on the develop branch ;-)
I noticed you use "windows" and "unix" for the opsys variable, but the documentation states the possible values are "UNIX" and "WIN32".
I verified "WIN32" is indeed the value returned when using OPSYS or "{&OPSYS}"

When using windows, opsys and {&opsys} will return WIN32. I'll update the documentation.


cato causes rome to crash

$ cat test.swift
#!/usr/bin/env cato

import URITemplate

let template = URITemplate(template: "test")
println("\(template)")

$ ./test.swift
Analyzing dependencies
Downloading dependencies
Installing URITemplate (1.1.1)
Generating Pods project
Building frameworks

Command
/Users/kyle/gems/bin/pod install --project-directory=/Users/kyle/.📦/test --no-repo-update --no-integrate

Stack
   CocoaPods : 0.36.3
        Ruby : ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14]
    RubyGems : 2.0.14
        Host : Mac OS X 10.10.2 (14C109)
       Xcode : 6.2 (6C131e)
         Git : git version 1.9.5 (Apple Git-50.3)
Ruby lib dir : /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib
Repositories : atest -  @ fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
HEAD
               b -  @ 890a50800684d5b90a9a77e6bf12d7568c8f8424
               foo -  @ fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
HEAD
               master - https://github.com/CocoaPods/Specs.git @ 979208d98333eeec177a1dfdd645e7dc0cc6c8fc

Plugins
cocoapods-deintegrate  : 0.2.1
cocoapods-dependencies : 0.4.0
cocoapods-plugins      : 0.4.1
cocoapods-rome         : 0.0.3
cocoapods-trunk        : 0.3.1
cocoapods-try          : 0.4.3

Podfile
platform :osx, '10.10'
plugin 'cocoapods-rome'
use_frameworks!
pod "URITemplate"

Error
NoMethodError - undefined method `map' for "-project Pods.xcodeproj -scheme Pods -configuration Release":String
/Users/kyle/gems/gems/cocoapods-0.36.3/lib/cocoapods/executable.rb:57:in `execute_command'
/Users/kyle/gems/gems/cocoapods-rome-0.0.3/lib/cocoapods-rome/post_install.rb:14:in `block (3 levels) in <top (required)>'
/Users/kyle/gems/gems/cocoapods-rome-0.0.3/lib/cocoapods-rome/post_install.rb:13:in `each'
/Users/kyle/gems/gems/cocoapods-rome-0.0.3/lib/cocoapods-rome/post_install.rb:13:in `block (2 levels) in <top (required)>'
/Users/kyle/gems/gems/cocoapods-rome-0.0.3/lib/cocoapods-rome/post_install.rb:11:in `chdir'
/Users/kyle/gems/gems/cocoapods-rome-0.0.3/lib/cocoapods-rome/post_install.rb:11:in `block in <top (required)>'
/Users/kyle/gems/gems/cocoapods-0.36.3/lib/cocoapods/hooks_manager.rb:115:in `call'
/Users/kyle/gems/gems/cocoapods-0.36.3/lib/cocoapods/hooks_manager.rb:115:in `block (3 levels) in run'
/Users/kyle/gems/gems/cocoapods-0.36.3/lib/cocoapods/user_interface.rb:110:in `message'
/Users/kyle/gems/gems/cocoapods-0.36.3/lib/cocoapods/hooks_manager.rb:109:in `block (2 levels) in run'
/Users/kyle/gems/gems/cocoapods-0.36.3/lib/cocoapods/hooks_manager.rb:107:in `each'
/Users/kyle/gems/gems/cocoapods-0.36.3/lib/cocoapods/hooks_manager.rb:107:in `block in run'
/Users/kyle/gems/gems/cocoapods-0.36.3/lib/cocoapods/user_interface.rb:110:in `message'
/Users/kyle/gems/gems/cocoapods-0.36.3/lib/cocoapods/hooks_manager.rb:106:in `run'
/Users/kyle/gems/gems/cocoapods-0.36.3/lib/cocoapods/installer.rb:402:in `run_plugins_post_install_hooks'
/Users/kyle/gems/gems/cocoapods-0.36.3/lib/cocoapods/installer.rb:394:in `perform_post_install_actions'
/Users/kyle/gems/gems/cocoapods-0.36.3/lib/cocoapods/installer.rb:98:in `install!'
/Users/kyle/gems/gems/cocoapods-0.36.3/lib/cocoapods/command/project.rb:71:in `run_install_with_update'
/Users/kyle/gems/gems/cocoapods-0.36.3/lib/cocoapods/command/project.rb:101:in `run'
/Users/kyle/gems/gems/claide-0.8.1/lib/claide/command.rb:312:in `run'
/Users/kyle/gems/gems/cocoapods-0.36.3/lib/cocoapods/command.rb:46:in `run'
/Users/kyle/gems/gems/cocoapods-0.36.3/bin/pod:44:in `<top (required)>'
/Users/kyle/gems/bin/pod:23:in `load'
/Users/kyle/gems/bin/pod:23:in `<main>'

The issue here is that Rome 0.0.3 is incompatible with CP 0.36.3 => gem install cocoapods-rome :tada:


Unify Collecting and Optimizing Assets

This PR creates a unified asset solution for all Dioxus renderers/bundlers.
Collect Assets
Asset collection and optimization happens in the new collect asset library. This PR just integrates that list of assets into the CLI bundler and assets directory. In order to make cargo run work, we also need to collect assets in the desktop, and fullstack launch functions.
This will unblock a cross platform UI library:
- [ ] A cross-platform component library like tamagui

This PR should also be a stepping stone towards much of the work on deploy tooling which needs us to collect different metadata at compile time:
- [ ]  Tracing for server functions
- [ ]  Devtools for components
- [ ]  Binary analysis for server functions and assets

Closes #1283
TODO:

[x] Copy assets into the build directory in the CLI
[x] Integrate assets into the bundler
[x] Copy assets in the Desktop launch function

[package]
name = "dioxus-test"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
assets-git-link-test = { git = "https://github.com/Demonthos/assets-git-link-test" }
dioxus = { git = "https://github.com/Demonthos/dioxus", branch = "intigrate-collect-assets" }
dioxus-fullstack = { git = "https://github.com/Demonthos/dioxus", branch = "intigrate-collect-assets" }
serde = "1.0.159"

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
dioxus-desktop = { git = "https://github.com/Demonthos/dioxus", branch = "intigrate-collect-assets" }

[target.'cfg(target_arch = "wasm32")'.dependencies]
dioxus-web = { git = "https://github.com/Demonthos/dioxus", branch = "intigrate-collect-assets" }

[features]
default = []
ssr = ["dioxus-fullstack/axum"]
web = ["dioxus-fullstack/web"]

use dioxus::prelude::*;
use assets_git_link_test::*;

#[cfg(any(feature = "web", feature = "ssr"))]
use dioxus_fullstack::prelude::*;

fn main() {
    #[cfg(any(feature = "web", feature = "ssr"))]
    LaunchBuilder::new(app).launch();
    #[cfg(not(target_arch = "wasm32"))]
    dioxus_desktop::launch(app);
    #[cfg(target_arch = "wasm32")]
    dioxus_web::launch(app);
}

fn app(cx: Scope) -> Element {
    let assets = [TEST_ASSET, IMAGE_ASSET, PNG_ASSET, RESIZED_PNG_ASSET, JPEG_ASSET, RESIZED_JPEG_ASSET, WEBP_ASSET, RESIZED_WEBP_ASSET];

    render! {
        for img in assets {
            div {
                img {
                    src: img,
                    width: "100px",
                    height: "100px",
                }
                img
            }
        }
        p {
            font_family: "Comfortaa",
            "thin font"
        }
    }
}

Fullstack support for bundling assets is blocked on https://github.com/DioxusLabs/dioxus/issues/1334. We need to set some environment variables differently for fullstack

Will this minify and bundle the output HTML and JS?

Will this minify and bundle the output HTML and JS?

Not yet, but we should add support for minifying those assets to magnanis.
Currently it supports:

[x] Support optimizing assets

[x] PNG

[x] JPG

[x] Convert images

[x] Resize images

[x] CSS

[x] Self-host remote assets (fonts)

[x] Google Fonts Integration
[x] Deduplicate assets
[x] Collect assets from dependencies
[x] Tailwind

Not yet, but we should add support for minifying those assets to magnanis.

I would love to help, but I don't know how to test it. I ran the test-package example but the only files that were outputted to assets/ is tailwind.css. That might because of an error with manganis::file!("./test-package-dependency/src/asset.txt"), which returns /assetsasset.txt instead of /assets/asset.txt.

Not yet, but we should add support for minifying those assets to magnanis.

I would love to help, but I don't know how to test it. I ran the test-package example but the only files that were outputted to assets/ is tailwind.css. That might because of an error with manganis::file!("./test-package-dependency/src/asset.txt"), which returns /assetsasset.txt instead of /assets/asset.txt.

This should be fixed. I was trying to optimize a function but accidentally changed the behavior to make the paths that the macro wrote to and the CLI read from different


re:  Use read-write listener for OLTP workload

In SSMS, I can connect to fg.database.windows.net, click Database and see all the databases, yet attempting to connect to a database gives a: Cannot open Failover Group "fg.database.windows.net " requested by the login. The login failed. (Microsoft SQL Server, Error: 40971)
Searching on the error is fruitless.  What am I missing?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 2476aace-c2ac-4084-93d5-8bd4edbc0ea0
Version Independent ID: fa098bb4-5c9e-0f58-cfc7-5d40eb1ce89b
Content: Failover groups and active geo-replication - Azure SQL Database
Content Source: articles/sql-database/sql-database-geo-replication-overview.md
Service: sql-database
GitHub Login: @anosov1960
Microsoft Alias: sashan

@jl101 Thanks for the feedback! We are currently investigating and will update you shortly.

@jl101 Thanks for reaching out. It seems you already have SQL Login created. However, creating user for that sql login in database and assigning appropriate role to that database user is required. As a sql admin you can run below to create SQL Login (which it seems already exist) and then create DB user and assign role -
-- Create login at master database
CREATE LOGIN login_name WITH PASSWORD = 'strong_password';
-- Create user from that login at user database
CREATE USER 'user_name' FOR LOGIN 'login_name';
ALTER ROLE db_owner ADD MEMBER [user_name];
Please let us know if this helps in resolving the issue. Thanks.
Reference: Tips & Tricks : What you need to do to create SQL Login to authenticate to Azure SQL DBs members in Auto-Failover Group

I created a SQL login (in master) and the user in the target database as db_owner and am seeing the  “ Cannot open Failover Group "xx.database.windows.net" requested by the login. The login failed. (Microsoft SQL Server, Error: 40971) “  error in SSMS.
Same results when using Azure Password authentication with my AAD account.
BTW, I can connect in SSMS using the admin SQL login and run queries without issue.
Sent from Mailhttps://go.microsoft.com/fwlink/?LinkId=550986 for Windows 10

From: Mohit Garg<EMAIL_ADDRESS>Sent: Wednesday, December 12, 2018 2:24:34 PM
To: MicrosoftDocs/azure-docs
Cc: jl101; Mention
Subject: Re: [MicrosoftDocs/azure-docs] re: Use read-write listener for OLTP workload (#20558)
@jl101https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fjl101&data=02|01||62fc30f451e74d5b6cc908d6606fd5b2|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|636802430767578809&sdata=W5DOHoD28X%2BqHlxdZ3U3nf0cbe48D%2FOWpC1dYovLeao%3D&reserved=0 Thanks for reaching out. It seems you already have SQL Login created. However, creating user for that sql login in database and assigning appropriate role to that database user is required. As a sql admin you can run below to create SQL Login (which it seems already exist) and then create DB user and assign role -
-- Create login at master database
CREATE LOGIN login_name WITH PASSWORD = 'strong_password';
-- Create user from that login at user database
CREATE USER 'user_name' FOR LOGIN 'login_name';
ALTER ROLE db_owner ADD MEMBER [user_name];
Please let us know if this helps in resolving the issue. Thanks.
Reference: Tips & Tricks : What you need to do to create SQL Login to authenticate to Azure SQL DBs members in Auto-Failover Grouphttps://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fblogs.msdn.microsoft.com%2Fazuresqldbsupport%2F2018%2F05%2F21%2Ftips-tricks-what-you-need-to-do-to-creat-sql-login-to-authenticate-to-azure-sql-dbs-members-in-auto-failover-group%2F&data=02|01||62fc30f451e74d5b6cc908d6606fd5b2|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|636802430767578809&sdata=Fg%2BOZIsa0mBxWPm6UMPhgXIyfPFHR7KTWK21JhwV7pQ%3D&reserved=0
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2Fazure-docs%2Fissues%2F20558%23issuecomment-446731188&data=02|01||62fc30f451e74d5b6cc908d6606fd5b2|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|636802430767578809&sdata=b%2FoaykQDxbJU0iTtnnIjWOzbeajiNciF9TZl8cvCo1I%3D&reserved=0, or mute the threadhttps://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FABUNk_jj5pJdQBkxh5xdaRg2832cNIjNks5u4WYCgaJpZM4ZPkM-&data=02|01||62fc30f451e74d5b6cc908d6606fd5b2|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|636802430767578809&sdata=kc8A6ymVBCM7tU%2B%2B1ec4W98TFWxcRVs5qmoo1p747Og%3D&reserved=0.

@jl101 Please note that I tested it and it worked fine for me. When you create failover group, the failover group name fg.database.windows.net will resolve internally to primary server name only. It seems what is happening is when you are trying to connect to server using SSMS by default it tires to connect to Master Database, however the  user you created has not been added as DB user in Master hence you get login failed. When you connect with sql admin account, that is part of DB user in Master DB and hence it connects fine.
Hence, when you are connecting to server using SSMS with user having access to required database, you need to specify specifically the database it must try to connect. You must in SSMS go to options and specific database name as shown in below screenshot and then connect.

Please let me know if this helps in resolving the issue. Thanks.

Mohit,
<EMAIL_ADDRESS><EMAIL_ADDRESS>Gives me:
<EMAIL_ADDRESS>On the other hand hitting the primary server name:
<EMAIL_ADDRESS><EMAIL_ADDRESS>Gives me:
<EMAIL_ADDRESS>Just be clear in the failover group contents, the primary server is there as shown in the following.
<EMAIL_ADDRESS>If there was an issue with the creation of the sql login, I wouldn’t expect to be able to successfully connect to the primary server. If there was an issue with  the supplied inputs for the fg, I would have expected its creation to fail.
Thanks,
jl
Sent from Mailhttps://go.microsoft.com/fwlink/?LinkId=550986 for Windows 10
From: Mohit<EMAIL_ADDRESS>Sent: Thursday, December 13, 2018 2:33 AM
To<EMAIL_ADDRESS>Cc<EMAIL_ADDRESS><EMAIL_ADDRESS>Subject: Re: [MicrosoftDocs/azure-docs] re: Use read-write listener for OLTP workload (#20558)
@jl101https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fjl101&data=02|01||e7a8772fa30947473e8108d660d59f17|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|636802867942401271&sdata=rDJGrsCelpLaVXG6CTWc8BY9P07H53ZUG%2FezzZlz%2BJE%3D&reserved=0 Please note that I tested it and it worked fine for me. When you create failover group, the failover group name fg.database.windows.net will resolve internally to primary server name only. It seems what is happening is when you are trying to connect to server using SSMS by default it tires to connect to Master Database, however the user you created has not been added as DB user in Master hence you get login failed. When you connect with sql admin account, that is part of DB user in Master DB and hence it connects fine.
Hence, when you are connecting to server using SSMS with user having access to required database, you need to specify specifically the database it must try to connect. You must in SSMS go to options and specific database name as shown in below screenshot and then connect.
[s1]https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fuser-images.githubusercontent.com%2F32749549%2F49925685-81a91680-fe6e-11e8-85b3-b949feab1378.JPG&data=02|01||e7a8772fa30947473e8108d660d59f17|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|636802867942557532&sdata=qOfZZt%2B3lHhhMA%2FqM6vE%2BhkaMxvhwaA2XYQHVtuvJLc%3D&reserved=0
[s2]https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fuser-images.githubusercontent.com%2F32749549%2F49925711-908fc900-fe6e-11e8-82ca-2082f43859de.JPG&data=02|01||e7a8772fa30947473e8108d660d59f17|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|636802867942557532&sdata=MsDjpWrFLkOddXOw46KRwC80D76xTNA3GtFpID%2BUtGY%3D&reserved=0
Please let me know if this helps in resolving the issue. Thanks.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2Fazure-docs%2Fissues%2F20558%23issuecomment-446884126&data=02|01||e7a8772fa30947473e8108d660d59f17|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|636802867942557532&sdata=ZE7Dp51bH5LLopFkehWdSlOlvIGqYp4FFFT4SOpCptA%3D&reserved=0, or mute the threadhttps://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FABUNk7I-S0waDUSWsedMQ-tbGuW-2qRKks5u4hDIgaJpZM4ZPkM-&data=02|01||e7a8772fa30947473e8108d660d59f17|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|636802867942557532&sdata=jtqHJWArcAyTwMq0bEDFW0MNFsYpwDhoBBEpQJMr9NU%3D&reserved=0.

@jl101 I am unable to see any image on above reply. I hope you already tried the option of mentioning Database Name while connecting through SSMS. Please send an email to<EMAIL_ADDRESS>with the screenshots and the error message so that I could further understand the issue and help you accordingly. While sending an email do mention -
Related to GitHub Issue Thread URL: https://github.com/MicrosoftDocs/azure-docs/issues/20558

@jl101 As per our discussion on email, I will move ahead and close this issue now. Thanks.

Run SELECT @@Servername and verify. Check the Failover Group in your Azure Portal & check to see if the database is still a part of the Failover Group! I encountered this error helping someone else and we were baffled. I finally checked the failover group and the database was NOT a part of it. Yet it was listed in SSMS when connecting with the listener ... bizarre.


gh-page not working

Describe the bug
gh page for the lib is not working
To Reproduce
https://namespace-ee.github.io/react-calendar-timeline-docs/

I'd rather remove that link from the description and not maintain the gh page.  However, I don't have admin rights on this repo and cannot remove it.
@mariusandra can you please remove the gh page link from this repo's description?

maybe we should host the demo on some other host service like now?


[REVIEW] rishipurwar1

GitHub Sponsor profile link
https://github.com/sponsors/rishipurwar1

Reviewed on live stream https://www.youtube.com/watch?v=He9lBSlTvhQ

suggest having 2 featured projects
potentially try to break up the text with styling/images


updated gitignore. Fixed the navigation bar (with basket) at top.

wrapped items like the 'navbar' and the 'tab_navigation' in base.html in a container and fixed that container to top. Removed the fixed property from tabs.html because it is now wrapped in fixed container

I've tried to test this branch, but when running runserver or any other management command, I get an error like this:
Traceback (most recent call last):
  File "manage.py", line 30, in <module>
    execute_from_command_line(sys.argv)
  File "/home/michael/work/imtek/topobank/venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
    utility.execute()
  File "/home/michael/work/imtek/topobank/venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 395, in execute
    django.setup()
  File "/home/michael/work/imtek/topobank/venv/lib/python3.8/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/michael/work/imtek/topobank/venv/lib/python3.8/site-packages/django/apps/registry.py", line 122, in populate
    app_config.ready()
  File "/home/michael/work/imtek/topobank/topobank/manager/apps.py", line 8, in ready
    import topobank.manager.signals
  File "/home/michael/work/imtek/topobank/topobank/manager/signals.py", line 11, in <module>
    from .views import DEFAULT_SELECT_TAB_STATE
  File "/home/michael/work/imtek/topobank/topobank/manager/views.py", line 46, in <module>
    from .forms import TopographyFileUploadForm, TopographyMetaDataForm, TopographyWizardUnitsForm
  File "/home/michael/work/imtek/topobank/topobank/manager/forms.py", line 16, in <module>
    from bootstrap_datepicker_plus.widgets import DatePickerInput
ModuleNotFoundError: No module named 'bootstrap_datepicker_plus.widgets'

Could this be related to the changes in this PR? One first sight, I don't think so.
But when I switch to the develop branch, I don't get this error...
Then I reinstalled all packages from the branch from scratch and the error is gone.
But now I encounter this (using runserver_plus):
Exception happened during processing of request from ('<IP_ADDRESS>', 56414)
Traceback (most recent call last):
  File "/usr/lib/python3.8/socketserver.py", line 683, in process_request_thread
    self.finish_request(request, client_address)
  File "/usr/lib/python3.8/socketserver.py", line 360, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/lib/python3.8/socketserver.py", line 747, in __init__
    self.handle()
  File "/home/michael/work/imtek/topobank/venv/lib/python3.8/site-packages/werkzeug/serving.py", line 363, in handle
    super().handle()
  File "/usr/lib/python3.8/http/server.py", line 427, in handle
    self.handle_one_request()
  File "/usr/lib/python3.8/http/server.py", line 415, in handle_one_request
    method()
  File "/home/michael/work/imtek/topobank/venv/lib/python3.8/site-packages/werkzeug/serving.py", line 243, in run_wsgi
    self.environ = environ = self.make_environ()
  File "/home/michael/work/imtek/topobank/venv/lib/python3.8/site-packages/django_extensions/management/commands/runserver_plus.py", line 326, in make_environ
    del environ['werkzeug.server.shutdown']
KeyError: 'werkzeug.server.shutdown'

Probably this is not related to the PR, I don't know. Currently I cannot test the branch and am looking for a solution.

Okay, it seems that I've run into a bug after a package update of "werkzeug":
https://stackoverflow.com/questions/72166259/werkzeug-server-is-shutting-down-in-django-application
After running runserver_plus with --keep-meta-shutdown it seems to work. Now I can have a look.


refactor(samples): convert sample tests from ava to mocha

Fixes convert all sample tests from ava to mocha  (it's a good idea to open an issue first for discussion)

[ ] Tests and linter pass
[ ] Code coverage does not decrease (if any source code was changed)
[ ] Appropriate docs were updated (if necessary)

Codecov Report

Merging #222 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff          @@
##           master   #222   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files           1      1
  Lines           5      5
=====================================
  Hits            5      5

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 a09eb55...1f80d48. Read the comment docs.


Unicode support

Unicode support
This PR adds support for Unicode codepoints at the syntax level: ReScript source code is now considered unicode text encoded in UTF-8.
Fixes https://github.com/rescript-lang/syntax/issues/397
Codepoint literals
A codepoint literal represents an integer value identifying a unicode code point. It is expressed as one or more characters enclosed in single quotes. Examples are 'x', '\n' or '\u{00A9}'. Multiple UTF-8-encoded bytes may represent a single integer value.
String literals
String literals are (possibly multi-byte) UTF-8 encoded character sequences between double quotes, as in "fox 🦊 \u{2665}". Internally they compile now as {js|fox 🦊 \u{2665}|js}, we don't want to garble the js output.
New escape sequences
Both codepoint and string literals accept the following new escape sequences:

Unicode escape sequences
Any character with a character code lower than 65536 can be escaped using the hexadecimal value of its character code, prefixed with \u. Unicode escapes are six characters long. They require exactly four characters following \u . If the hexadecimal character code is only one, two or three characters long, you’ll need to pad it with leading zeroes.
Example: '\u2665' (Represents ♥)

Unicode codepoint escape sequences
Any code point or character can be escaped using the hexadecimal value of its character code, prefixed with \u{ and suffixed with } . This allows for code points up to 0x10FFFF, which is the highest code point defined by Unicode. Unicode code point escapes consist of at least five characters. At least one hexadecimal character can be wrapped in \u{…} . There is no upper limit on the number of hex digits in use (for example '\u{000000000061}' == 'a')
Example: '\u{2318}' (Represents ⌘)

Why are \u{..} escape sequences needed in string literals if the source text is already assumed to be encoded in utf-8 (and thus able to express any code point)?

Escape sequences are primarily used to put hard/difficult to represent "characters" in a character or string literal. I guess you could compare it by using \n, \t or a hex escape sequence like \x41.

Does this mean that normal string literals ("") when compiled to a JavaScript source file would be 100% compatible, as opposed to messing up the string literal when there is a codepoint that doesn't fit in 16-bit? (like an emoji)? That would be very good news!

@jfrolich Indeed that's the goal, no more weird escaping in the js output =D

Question: why does this need to happen at the syntax level? Wouldn't it be a better fix to just don't let the rescript compiler fudge strings in any case and not just {js|...|js} type strings?

It happens on both levels:

compiler: {js|...|js} ast node is a compiler construct with utf8 semantics.
syntax: needs to parse strings into that construct

Hongbo suggested to just parse strings as {js|...|js}, since it already contains all the logic.

Yeah, I guess it works, but is there any reason to keep the garbled way of parsing string literals around in the compiler.
BTW: will it also print {js|...|js} as "..." with this change?

is there any reason to keep the garbled way of parsing string literals around in the compiler.

Time is limited, this is the fastest way to get the feature.

the JS interpreter will automatically convert a UTF8 string literal to UTF16 internally, so if you want behavior that matches JS, the current approach doesn't make sense. Also if you want to match legacy OCaml behaviors the approach also doesn't make sense, because OCaml sees strings as bytes, so some kind of UTF16 internal representation doesn't make sense in that case as well.

The standard says that the runtime model of JavaScript is based on UTF-16 code units. That doesn't specify what byte-encoding is used to convert a source file to those units.

BTW: will it also print {js|...|js} as "..." with this change?
The printer follows a different codepath with a separate internal encoding, you can rely on the parser emitting {js|…|js} for the compiler but not the other way around.

The standard says that the runtime model of JavaScript is based on UTF-16 code units. That doesn't specify what byte-encoding is used to convert a source file to those units.

Indeed. But most JavaScript files and thus string literals are encoded in utf-8 in the source files. If we need the garbling around (I never needed it and never found a usecase for it even after researching), can we put it as {utf16|...|utf16} for the people that really need it.
I am aware that this quick fix is probably the fastest way to get it shipped while not relying on Hongbo, but I am speaking on the long term. And if we agree I might be able to try and help accomplish this?

The printer follows a different codepath with a separate internal encoding, you can rely on the parser emitting {js|…|js} for the compiler but not the other way around.

Hmm so reformatting "bla" is going to yield {js|bla|js} (in some amount of the cases because it's not 100% reliable if I understand correctly?). That is not super pretty.

If you don't mind me asking, why do you you want your source files encoded in utf16?
UTF-8 is the most common character encoding method used on the internet today. Over 97% of all websites, likely including your own, store characters this way.
UTF-8 encoding is preferable to UTF-16 on the majority of websites, because it uses less memory. Recall that UTF-8 encodes each ASCII character in just one byte. UTF-16 must encode these same characters in either two or four bytes. This means that an English text file encoded with UTF-16 would be at least double the size of the same file encoded with UTF-8.

Hmm so reformatting "bla" is going to yield {js|bla|js} (in some amount of the cases because it's not 100% reliable if I understand correctly?). That is not super pretty.

"bla" will still yield "bla".

Haha no I don't want my source encoded in utf16 at all where did you think I said that? I am just saying that even if string literals are in utf-8 at the file level v8 (or any javascript engine) will convert them to the correct internal runtime representation (which is utf16 for JavaScript), so there is no need to do this "garbling" (let's use this term, probably not the best but you get what I mean).
I am just proposing the following (longer term):

Don't run garbling on string at all at a compiler level for "".
If we need to keep this around (I would love to see a usecase, so I know better why this feature exists, I think only Hongbo knows this), give it a separate literal like {utf16|...|utf16}.

"bla" will still yield "bla".

Ok, that is nice!


Added Collateralization Ratio to vaults stats and updated TVL

What kind of PR is this?:

/kind feature fix
What this PR does / why we need it:

Added Collateralization Ratio to vaults stats
Updated TVL popup values

Working on the loan component on the homepage. I was wondering where to get the Avg Col Ratio. LGTM


Update README.md

Clarify what fg stands for.
https://stackoverflow.com/questions/47310537/how-to-change-zsh-autosuggestions-color

Hi @DanTheColoradan, thank you for this! There is actually quite a bit more functionality available than just the 256-color palette. I've gone ahead and made a separate PR #434 to improve the documentation. Take a look and let me know what you think.


Compilation failing on RH8 with GCC 11.3.0

Hello,
I'm failing to compile arcae on a RH8 box using GCC 11.3.0 (using Spack 0.20.0). Here is the log:
==> Installing py-arcae-main-bgre6mp2qhikmyafc2yzgfv5nab3cnja
==> No binary for py-arcae-main-bgre6mp2qhikmyafc2yzgfv5nab3cnja found: installing from source
==> Ran patch() for py-arcae
==> py-arcae: Executing phase: 'install'
==> Error: ProcessError: Command exited with status 1:
    '/work/ska/soft/spack/blackhole/v2/opt/spack/linux-rhel8-cascadelake/gcc-11.3.0/python-3.10.4-tl3vrz4pgbao3vfzuyldkj5bn7qpic4g/bin/python3.10' '-m' 'pip' '-vvv' '--no-input' '--no-cache-dir' '--disable-pip-version-check' 'install' '--no-deps' '--ignore-installed' '--no-build-isolation' '--no-warn-script-location' '--no-index' '--prefix=/work/ska/soft/spack/blackhole/v2/opt/spack/linux-rhel8-cascadelake/gcc-11.3.0/py-arcae-main-bgre6mp2qhikmyafc2yzgfv5nab3cnja' '.'

144 errors found in build log:
     266      -- Detecting C compile features - done
     267      -- Found PkgConfig: /work/ska/soft/spack/blackhole/v2/opt/view__bipp-izar-gcc/bin/pkg-config (found version "1.9.5")
     268      -- Checking for module 'casacore'
     269      --   Found casacore, version 3.5.0
     270      -- Found PythonInterp: /work/ska/soft/spack/blackhole/v2/opt/spack/linux-rhel8-cascadelake/gcc-11.3.0/python-3.10.4-tl3vrz4pgbao3vfzuyldkj5bn7qpic4g/bin/python3
            .10 (found version "3.10.4")
     271      -- Found PythonLibs: /work/ska/soft/spack/blackhole/v2/opt/spack/linux-rhel8-cascadelake/gcc-11.3.0/python-3.10.4-tl3vrz4pgbao3vfzuyldkj5bn7qpic4g/lib/libpython
            3.10.so (found version "3.10.4")
  >> 272    <string>:2: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternati
            ves
  >> 273      <string>:2: DeprecationWarning: The distutils.sysconfig module is deprecated, use sysconfig instead
     274      -- Found Cython: /work/ska/soft/spack/blackhole/v2/opt/spack/linux-rhel8-cascadelake/gcc-11.3.0/py-cython-0.29.33-ocv6lqlck5nqwelih2edoa6jltp3em4n/bin/cython
     275      CYTHON table /tmp/orliac/spack-stage/spack-stage-py-arcae-main-bgre6mp2qhikmyafc2yzgfv5nab3cnja/spack-src/_skbuild/linux-x86_64-3.10/cmake-build/arcae/arrow_tab
            les.cxx
     276      -- Performing Test Weak Link MODULE -> SHARED (gnu_ld_ignore) - Success
     277      _modinit_prefix:PyInit_
     278      Linking arrow_tables against arrow_python
     279      Linking arrow_tables against arrow

     ...

     298      [4/11] Building CXX object cpp/CMakeFiles/arcae.dir/casa_visitors.cpp.o
     299      [5/11] Building CXX object cpp/CMakeFiles/arcae.dir/safe_table_proxy.cpp.o
     300      [6/11] Building CXX object cpp/CMakeFiles/arcae.dir/column_convert_visitor.cpp.o
     301      [7/11] Linking CXX shared library cpp/libarcae.so
     302      [8/11] Generating CXX source arcae/arrow_tables.cxx
     303      [9/11] Building CXX object arcae/CMakeFiles/arrow_tables.dir/arrow_tables.cxx.o
  >> 304    FAILED: arcae/CMakeFiles/arrow_tables.dir/arrow_tables.cxx.o
     305      /work/backup/ska/orliac/spack_0200/lib/spack/env/gcc/g++ -Darrow_tables_EXPORTS -I/tmp/orliac/spack-stage/spack-stage-py-arcae-main-bgre6mp2qhikmyafc2yzgfv5nab3
            cnja/spack-src/arcae/PkgConfig::casacore -I/work/ska/soft/spack/blackhole/v2/opt/spack/linux-rhel8-cascadelake/gcc-11.3.0/py-pyarrow-12.0.0-qa5dzazodts7cvjtmy2cyf
            xmxdpzjy7t/lib/python3.10/site-packages/pyarrow/include -I/work/ska/soft/spack/blackhole/v2/opt/spack/linux-rhel8-cascadelake/gcc-11.3.0/py-numpy-1.24.3-a24j2n7xq
            pnc4qlygxwkatwvmpbbbwxm/lib/python3.10/site-packages/numpy/core/include -I/tmp/orliac/spack-stage/spack-stage-py-arcae-main-bgre6mp2qhikmyafc2yzgfv5nab3cnja/spack
            -src/cpp -I/work/ska/soft/spack/blackhole/v2/opt/spack/linux-rhel8-cascadelake/gcc-11.3.0/python-3.10.4-tl3vrz4pgbao3vfzuyldkj5bn7qpic4g/include/python3.10 -I/tmp
            /orliac/spack-stage/spack-stage-py-arcae-main-bgre6mp2qhikmyafc2yzgfv5nab3cnja/spack-src/cpp/PkgConfig::casacore -isystem /tmp/orliac/spack-stage/spack-stage-py-a
            rcae-main-bgre6mp2qhikmyafc2yzgfv5nab3cnja/spack-src/vcpkg/installed/x64-linux-dynamic-cxx17-abi0-rel/lib/pkgconfig/../../include -O3 -DNDEBUG -std=c++17 -fPIC -D
            _GLIBCXX_USE_CXX11_ABI=0 -MD -MT arcae/CMakeFiles/arrow_tables.dir/arrow_tables.cxx.o -MF arcae/CMakeFiles/arrow_tables.dir/arrow_tables.cxx.o.d -o arcae/CMakeFil
            es/arrow_tables.dir/arrow_tables.cxx.o -c /tmp/orliac/spack-stage/spack-stage-py-arcae-main-bgre6mp2qhikmyafc2yzgfv5nab3cnja/spack-src/_skbuild/linux-x86_64-3.10/
            cmake-build/arcae/arrow_tables.cxx
     306      In file included from /tmp/orliac/spack-stage/spack-stage-py-arcae-main-bgre6mp2qhikmyafc2yzgfv5nab3cnja/spack-src/_skbuild/linux-x86_64-3.10/cmake-build/arcae/
            arrow_tables.cxx:786:
  >> 307      /work/ska/soft/spack/blackhole/v2/opt/spack/linux-rhel8-cascadelake/gcc-11.3.0/py-pyarrow-12.0.0-qa5dzazodts7cvjtmy2cyfxmxdpzjy7t/lib/python3.10/site-packages/p
            yarrow/src/arrow/python/datetime.h:50:8: error: 'PyDateTime_CAPI' does not name a type; did you mean 'PyDateTimeAPI'?
     308         50 | extern PyDateTime_CAPI* datetime_api;
     309            |        ^~~~~~~~~~~~~~~
     310            |        PyDateTimeAPI
     311      /work/ska/soft/spack/blackhole/v2/opt/spack/linux-rhel8-cascadelake/gcc-11.3.0/py-pyarrow-12.0.0-qa5dzazodts7cvjtmy2cyfxmxdpzjy7t/lib/python3.10/site-packages/p
            yarrow/src/arrow/python/datetime.h: In function 'int64_t arrow::py::internal::PyTime_to_us(PyObject*)':
  >> 312      /work/ska/soft/spack/blackhole/v2/opt/spack/linux-rhel8-cascadelake/gcc-11.3.0/py-pyarrow-12.0.0-qa5dzazodts7cvjtmy2cyfxmxdpzjy7t/lib/python3.10/site-packages/p
            yarrow/src/arrow/python/datetime.h:62:11: error: 'PyDateTime_TIME_GET_HOUR' was not declared in this scope
     313         62 |   return (PyDateTime_TIME_GET_HOUR(pytime) *<PHONE_NUMBER>LL +
     314            |           ^~~~~~~~~~~~~~~~~~~~~~~~
  >> 315      /work/ska/soft/spack/blackhole/v2/opt/spack/linux-rhel8-cascadelake/gcc-11.3.0/py-pyarrow-12.0.0-qa5dzazodts7cvjtmy2cyfxmxdpzjy7t/lib/python3.10/site-packages/p
            yarrow/src/arrow/python/datetime.h:63:11: error: 'PyDateTime_TIME_GET_MINUTE' was not declared in this scope
     316         63 |           PyDateTime_TIME_GET_MINUTE(pytime) * 60000000LL +
     317            |           ^~~~~~~~~~~~~~~~~~~~~~~~~~
  >> 318      /work/ska/soft/spack/blackhole/v2/opt/spack/linux-rhel8-cascadelake/gcc-11.3.0/py-pyarrow-12.0.0-qa5dzazodts7cvjtmy2cyfxmxdpzjy7t/lib/python3.10/site-packages/p
            yarrow/src/arrow/python/datetime.h:64:11: error: 'PyDateTime_TIME_GET_SECOND' was not declared in this scope
     319         64 |           PyDateTime_TIME_GET_SECOND(pytime) * 1000000LL +
     320            |           ^~~~~~~~~~~~~~~~~~~~~~~~~~

...

Can you guess what the problem is? (my cython version in use is 0.29.33)
Thank you,
Etienne

Hi @orliac
My best guess is that the Python headers aren't being passed to the compilation commands:
/work/backup/ska/orliac/spack_0200/lib/spack/env/gcc/g++
-Darrow_tables_EXPORTS
-I/tmp/orliac/spack-stage/spack-stage-py-arcae-main-bgre6mp2qhikmyafc2yzgfv5nab3cnja/spack-src/arcae/PkgConfig::casacore
-I/work/ska/soft/spack/blackhole/v2/opt/spack/linux-rhel8-cascadelake/gcc-11.3.0/py-pyarrow-12.0.0-qa5dzazodts7cvjtmy2cyfxmxdpzjy7t/lib/python3.10/site-packages/pyarrow/include
-I/work/ska/soft/spack/blackhole/v2/opt/spack/linux-rhel8-cascadelake/gcc-11.3.0/py-numpy-1.24.3-a24j2n7xqpnc4qlygxwkatwvmpbbbwxm/lib/python3.10/site-packages/numpy/core/include
-I/tmp/orliac/spack-stage/spack-stage-py-arcae-main-bgre6mp2qhikmyafc2yzgfv5nab3cnja/spack-src/cpp
-I/work/ska/soft/spack/blackhole/v2/opt/spack/linux-rhel8-cascadelake/gcc-11.3.0/python-3.10.4-tl3vrz4pgbao3vfzuyldkj5bn7qpic4g/include/python3.10
-I/tmp/orliac/spack-stage/spack-stage-py-arcae-main-bgre6mp2qhikmyafc2yzgfv5nab3cnja/spack-src/cpp/PkgConfig::casacore
-isystem
/tmp/orliac/spack-stage/spack-stage-py-arcae-main-bgre6mp2qhikmyafc2yzgfv5nab3cnja/spack-src/vcpkg/installed/x64-linux-dynamic-cxx17-abi0-rel/lib/pkgconfig/../../include
-O3 -DNDEBUG -std=c++17 -fPIC -D_GLIBCXX_USE_CXX11_ABI=0 -MD
-MT arcae/CMakeFiles/arrow_tables.dir/arrow_tables.cxx.o
-MF arcae/CMakeFiles/arrow_tables.dir/arrow_tables.cxx.o.d
-o arcae/CMakeFiles/arrow_tables.dir/arrow_tables.cxx.o
-c /tmp/orliac/spack-stage/spack-stage-py-arcae-main-bgre6mp2qhikmyafc2yzgfv5nab3cnja/spack-src/_skbuild/linux-x86_64-3.10/cmake-build/arcae/arrow_tables.cxx

Also, the following looks a bit strange to me. arcae is using sckit-build to build the cython extension and I wonder if something is going wrong here in the construction of includes. But I'm not sure.
-isystem
/tmp/orliac/spack-stage/spack-stage-py-arcae-main-bgre6mp2qhikmyafc2yzgfv5nab3cnja/spack-src/vcpkg/installed/x64-linux-dynamic-cxx17-abi0-rel/lib/pkgconfig/../../include

P.S. Aiming to have wheels out on pypi soon. Would this be helpful?

Hi Simon,
Thanks for the feedback.
In the cython generated arrow_tables.cxx file, in this block:
/* Early includes */
#include "ios"
#include "new"
#include "stdexcept"
#include "typeinfo"
#include <utility>

    #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)
    // move should be defined for these versions of MSVC, but __cplusplus isn't set usefully
    #include <type_traits>

    namespace cython_std {
    template <typename T> typename std::remove_reference<T>::type&& move(T& t) noexcept { return std::move(t); }
    template <typename T> typename std::remove_reference<T>::type&& move(T&& t) noexcept { return std::move(t); }
    }

    #endif

#include <map>
#include <memory>
#include <string.h>
#include <string>
#include <vector>
#include <stdint.h>
#include <functional>
#include <unordered_map>
#include <unordered_set>
#include <stdio.h>
#include "pythread.h"
#include "datetime.h"
#include <optional>

it includes (in my env)
/work/ska/soft/spack/blackhole/v2/opt/spack/linux-rhel8-cascadelake/gcc-11.3.0/py-pyarrow-12.0.0-yydvt3qe4zsv6afseskclwv5s7p7jpqp/lib/python3.10/site-packages/p
            yarrow/src/arrow/python/datetime.h

but shouldn't it be including this one instead?
/work/ska/soft/spack/blackhole/v2/opt/spack/linux-rhel8-cascadelake/gcc-11.3.0/python-3.10.4-tl3vrz4pgbao3vfzuyldkj5bn7qpic4g/include/python3.10/datetime.h ?

The inclusion of the lib/python3.10/site-packages/pyarrow/src/arrow/python/datetime.h seens correct to me. It's this file in the source code.
This SO answer implies that Python might need to be compiled in a particular way? https://stackoverflow.com/a/70911512
Also, https://github.com/python/cpython/issues/96822#issue-1372723729 says the following:

Note: currently, datetime.h is not included by Python.h and is excluded from the limited C API.

It looks like PEP 0670 made it into 3.11. Perhaps this has something todo with how SPACK packages Python 3.11?
Unfortunately these are just leads in the investigation, I don't have a comprehensive answer.

Thanks @sjperkins.
For information, I've opened an issue on pyarrow's side earlier on: https://github.com/apache/arrow/issues/36438.
What is not clear to me is where should the definition of PyDateTime_CAPI come from when PYPY_VERSION is not defined and therefore datetime.h is not included. See https://github.com/apache/arrow/blob/0b7bd74daef8fe120fed997975431e7a88f67e5a/python/pyarrow/src/arrow/python/datetime.h#L32C1-L54C7.
I'm currently rebuilding my stack based on Python 3.11.2 (was on 3.10.4 before) but it will take a bit of time, so I'll post the outcome later on.

Using Python 3.11.2 did not improve the situation:
    303      [9/11] Building CXX object arcae/CMakeFiles/arrow_tables.dir/arrow_tables.cxx.o
  >> 304    FAILED: arcae/CMakeFiles/arrow_tables.dir/arrow_tables.cxx.o
     305      /work/backup/ska/orliac/spack_0200/lib/spack/env/gcc/g++ -Darrow_tables_EXPORTS -I/tmp/orliac/spack-stage/spack-stage-py-arcae-main-z6eptsmwuwneacgiqa6swg
            pi6crewk7x/spack-src/arcae/PkgConfig::casacore -I/work/ska/soft/spack/blackhole/v2/opt/spack/linux-rhel8-cascadelake/gcc-11.3.0/py-numpy-1.24.3-wnq3x2p5wwxh
            x7qklhneb2emeaowfsva/lib/python3.11/site-packages/numpy/core/include -I/tmp/orliac/spack-stage/spack-stage-py-arcae-main-z6eptsmwuwneacgiqa6swgpi6crewk7x/sp
            ack-src/cpp -I/work/ska/soft/spack/blackhole/v2/opt/spack/linux-rhel8-cascadelake/gcc-11.3.0/python-3.11.2-3tbonxwosnvt7mok7m6mhaojvjvw2f2f/include/python3.
            11 -I/tmp/orliac/spack-stage/spack-stage-py-arcae-main-z6eptsmwuwneacgiqa6swgpi6crewk7x/spack-src/cpp/PkgConfig::casacore -isystem /tmp/orliac/spack-stage/s
            pack-stage-py-arcae-main-z6eptsmwuwneacgiqa6swgpi6crewk7x/spack-src/vcpkg/installed/x64-linux-dynamic-cxx17-abi0-rel/lib/pkgconfig/../../include -O3 -DNDEBU
            G -std=c++17 -fPIC -D_GLIBCXX_USE_CXX11_ABI=0 -MD -MT arcae/CMakeFiles/arrow_tables.dir/arrow_tables.cxx.o -MF arcae/CMakeFiles/arrow_tables.dir/arrow_table
            s.cxx.o.d -o arcae/CMakeFiles/arrow_tables.dir/arrow_tables.cxx.o -c /tmp/orliac/spack-stage/spack-stage-py-arcae-main-z6eptsmwuwneacgiqa6swgpi6crewk7x/spac
            k-src/_skbuild/linux-x86_64-3.11/cmake-build/arcae/arrow_tables.cxx
     306      In file included from /tmp/orliac/spack-stage/spack-stage-py-arcae-main-z6eptsmwuwneacgiqa6swgpi6crewk7x/spack-src/_skbuild/linux-x86_64-3.11/cmake-build/
            arcae/arrow_tables.cxx:786:
  >> 307      /work/ska/soft/spack/blackhole/v2/opt/spack/linux-rhel8-cascadelake/gcc-11.3.0/py-pyarrow-12.0.0-wcxrxbguxaabwgtmmu6zkti5rbdsht4k/lib/python3.11/site-pack
            ages/pyarrow/src/arrow/python/datetime.h:50:8: error: 'PyDateTime_CAPI' does not name a type; did you mean 'PyDateTimeAPI'?
     308         50 | extern PyDateTime_CAPI* datetime_api;
     309            |        ^~~~~~~~~~~~~~~
     310            |        PyDateTimeAPI

I think Python 3.10 would be required to work around PEP 0670 (if it is the problem).

Hello @sjperkins
I tried to install using the pypi 0.1.0 distribution. In that case it installs but it fails at runtime.
==> Installing py-arcae-0.1.0-n2yj7al5xxvwa25lrw46cyzixea2d6sg
==> No binary for py-arcae-0.1.0-n2yj7al5xxvwa25lrw46cyzixea2d6sg found: installing from source
==> Fetching https://files.pythonhosted.org/packages/source/a/arcae/arcae-0.1.0.tar.gz
==> No patches needed for py-arcae
==> py-arcae: Executing phase: 'install'
==> py-arcae: Successfully installed py-arcae-0.1.0-n2yj7al5xxvwa25lrw46cyzixea2d6sg
  Stage: 1.90s.  Install: 18.81s.  Post-install: 0.21s.  Total: 25.33s
[+] /work/ska/soft/spack/blackhole/v2/opt/spack/linux-rhel8-cascadelake/gcc-11.3.0/py-arcae-0.1.0-n2yj7al5xxvwa25lrw46cyzixea2d6sg

[bipp-izar-gcc] [orliac@i45 ~]$ python test_arcae.py
Traceback (most recent call last):
  File "/home/orliac/test_arcae.py", line 10, in <module>
    casa_table = arcae.table("~/SKA/epfl-radio-astro/bipp-bench/gauss4_t201806301100_SBL180.MS")
  File "/work/ska/soft/spack/blackhole/v2/opt/view__bipp-izar-gcc/lib/python3.10/site-packages/arcae/__init__.py", line 13, in table
    from arcae.lib.arrow_tables import Table
ModuleNotFoundError: No module named 'arcae.lib.arrow_tables'

Will try the wheels and will let you know.

Using the wheel I face an ABI incompatibility:
[bipp-izar-gcc] [orliac@i44 ~]$ python test_arcae.py
Traceback (most recent call last):
  File "/home/orliac/test_arcae.py", line 10, in <module>
    casa_table = arcae.table("~/SKA/epfl-radio-astro/bipp-bench/gauss4_t201806301100_SBL180.MS")
  File "/work/ska/soft/spack/blackhole/v2/opt/view__bipp-izar-gcc/lib/python3.10/site-packages/arcae/__init__.py", line 13, in table
    from arcae.lib.arrow_tables import Table
ImportError: /work/ska/soft/spack/blackhole/v2/opt/view__bipp-izar-gcc/lib/python3.10/site-packages/arcae/lib/libarcae.so: undefined symbol: _ZNK5arrow8DataType18ComputeFingerprintEv

Looking at the symbols in libarcae and libarrow:
[bipp-izar-gcc] [orliac@i44 ~]$ strings /work/ska/soft/spack/blackhole/v2/opt/view__bipp-izar-gcc/lib/python3.10/site-packages/arcae/lib/libarcae.so | grep _ZNK5arrow8DataType18ComputeFingerprintEv
_ZNK5arrow8DataType18ComputeFingerprintEv
_ZNK5arrow8DataType18ComputeFingerprintEv

[bipp-izar-gcc] [orliac@i44 ~]$ strings /work/ska/soft/spack/blackhole/v2/opt/view__bipp-izar-gcc/lib64/libarrow.so.1200 | grep _ZNK5arrow8DataType18ComputeFingerprintEv

(nothing found) whereas:
[bipp-izar-gcc] [orliac@i44 ~]$ strings /work/ska/soft/spack/blackhole/v2/opt/view__bipp-izar-gcc/lib64/libarrow.so.1200 | grep _ZNK5arrow8DataType18ComputeFingerprint
_ZNK5arrow8DataType18ComputeFingerprintB5cxx11Ev
_ZNK5arrow8DataType18ComputeFingerprintB5cxx11Ev.localalias
_ZNK5arrow8DataType18ComputeFingerprintB5cxx11Ev

So I guess it means that the wheel was built with -D_GLIBCXX_USE_CXX11_ABI=0.
If that was the intention, I can try to build arrow accordingly.

Using the wheel I face an ABI incompatibility:

Yes, currently arcae is built with manylinux2014 wheels (which use the older ABI), mostly because manylinux_2_28 (using the new ABI) is currently not that prevalent. Having said that, it may start becoming available in arrow 13.0.0: https://github.com/apache/arrow/pull/34818, although this further increases the number of continuous integration build actions. manylinux2014 (based on CENTOS 7 will be deprecated in July 2024).

Hello @sjperkins I tried to install using the pypi 0.1.0 distribution. In that case it installs but it fails at runtime.

It looks like it's trying to build from source. I don't think it's possible to build a working source build from scratch (because of the dependency on shared libraries built by vcpkg). At least this seems possible for me locally
$ git clone git@github.com:ratt-ru/arcae.git
$ virtualenv -p python3.9 ~/venv/arcaesrc
$ . ~/venv/arcaesrc/bin/activate
(arcaesrc) $ cd /
(arcaesrc) $ pip install --no-binary=arcae ~/code/arcae
$ pip install --no-binary=arcae  ~/code/arcae[dev,test]
Processing ./code/arcae
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting appdirs (from arcae==0.1.0)
....
Building wheels for collected packages: arcae
  Building wheel for arcae (pyproject.toml) ... done
  Created wheel for arcae: filename=arcae-0.1.0-cp39-cp39-linux_x86_64.whl size=268963 sha256=65bbc6fe77142a92906d5a962753274ff2e9f12ffa790cc69bff15a02bbb1c98
  Stored in directory: /tmp/pip-ephem-wheel-cache-35s3x43f/wheels/57/ca/66/ab589a3e8a6ecef38d467333fd4a0c91fd222b5fc2cbc98785
Successfully built arcae
Installing collected packages: mccabe, duckdb, docopt, appdirs, urllib3, unidecode, typing-extensions, tomlkit, tomli, tabulate, six, pygments, pyflakes, pycodestyle, pluggy, platformdirs, pathspec, packaging, numpy, mypy-extensions, mdurl, iniconfig, idna, exceptiongroup, contextlib2, colorama, click, charset-normalizer, certifi, schema, requests, python-casacore, pytest, pyarrow, markdown-it-py, flake8, cli-ui, black, tbump, rich, arcae
Successfully installed appdirs-1.4.4 arcae-0.1.0 black-22.1.0 certifi-2023.5.7 charset-normalizer-3.1.0 cli-ui-0.17.2 click-8.1.3 colorama-0.4.6 contextlib2-21.6.0 docopt-0.6.2 duckdb-0.8.1 exceptiongroup-1.1.2 flake8-4.0.1 idna-3.4 iniconfig-2.0.0 markdown-it-py-3.0.0 mccabe-0.6.1 mdurl-0.1.2 mypy-extensions-1.0.0 numpy-1.25.0 packaging-23.1 pathspec-0.11.1 platformdirs-3.8.0 pluggy-1.2.0 pyarrow-12.0.0 pycodestyle-2.8.0 pyflakes-2.4.0 pygments-2.15.1 pytest-7.4.0 python-casacore-3.5.2 requests-2.31.0 rich-13.4.2 schema-0.7.5 six-1.16.0 tabulate-0.8.10 tbump-6.10.0 tomli-2.0.1 tomlkit-0.11.8 typing-extensions-4.7.1 unidecode-1.3.6 urllib3-2.0.3

This seems to correctly install the arrow_tables*.so cython extension, as well as libarcae.so in site-packages
$ tree ~/venv/arcaesrc/lib/python3.9/site-packages/arcae -I __pycache__
/home/simon/venv/arcaesrc/lib/python3.9/site-packages/arcae
├── __init__.py
├── applications
│   ├── __init__.py
│   ├── entrypoint.py
│   └── ms_export.py
├── config.py
├── lib
│   ├── __init__.py
│   ├── arrow_tables.cpython-39-x86_64-linux-gnu.so
│   └── libarcae.so
└── tests
    ├── __init__.py
    ├── conftest.py
    └── test_pytable.py

3 directories, 11 files

However, LD_LIBRARY_PATH must be set to discover the casacore and other shared objects built by vcpkg in order for things to work properly:
(arcaesrc) $ export LD_LIBRARY_PATH=~/code/arcae/vcpkg/installed/x64-linux-dynamic-cxx17-abi0-rel/lib
(arcaesrc) $ py.test -s -vvv --pyargs arcae

The wheels correctly package the built casacore shared objects and dependencies via auditwheel, which is why I don't think source builds will ever be viable.

Did you have any luck here @orliac ?

Hello @sjperkins
Sorry for the silence and thank you for your last input.
In the end I managed to install arcae from the wheel but I had to adapt the Spack recipes of arrow, py-pyarrow and re2 in order to switch GLIBCXX_USE_CXX11_ABI to 0. At least I could run the example you provide under https://github.com/ratt-ru/arcae#usage (where AT should be replaced by arrow_table btw). Not sure if there will be side effects though.
When I have a bit more time I'll come back on the compilation from source but at least now I should be able to start experimenting with arcae.


[BUG] I should not have to install @ngrx/store in order to use @daffodil/core

:bug: Bug report
Current Behavior

Expected Behavior

Minimal reproduction of the problem with instructions

What is the motivation / use case for changing the behavior?

Environment

Daffodil version: X.Y.Z
Angular version: X.Y.Z

For Tooling issues:
- Node version: XX
- Platform:

Others:

Closed by #1091


build: :arrow_up: bump set-cookie-parser from 2.5.1 to 2.6.0

No need to open this PR since it was resolved by a dependabot PR


Improve error handling

Signed-off-by: Raul Sevilla<EMAIL_ADDRESS>Description
Helps to debug issues like https://github.com/cloud-bulldozer/benchmark-operator/issues/640

Codecov Report

Merging #322 (917e51c) into master (93ecf39) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #322   +/-   ##
=======================================
  Coverage   42.69%   42.69%
=======================================
  Files          14       14
  Lines         876      876
=======================================
  Hits          374      374
  Misses        502      502

Flag
Coverage Δ

gha
42.69% <ø> (ø)

python-3.6
42.69% <ø> (ø)

unit
42.69% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

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 93ecf39...917e51c. Read the comment docs.


install

app install not working on  on new install of #591
Windows 11 Pro
Version	23H2
Installed on	06/10/2023
OS build	22631.2338
Experience	Windows Feature Experience Pack 1000.22674.1000.0

I have already reported this issue. #1090


Convert spire-server config to json

This is in prep for custom config options from values.
Partially implements: https://github.com/spiffe/helm-charts/issues/20

Closing in favor of https://github.com/spiffe/helm-charts/pull/49


Add skipped test count to builtin reporters

This fixes https://github.com/sindresorhus/ava/issues/408 by adding the skipped test count to the builtin reporters, in yellow color.
Let me know if I missed anything or if another color is more appropriate.

Nice work @sotojuan. lgtm :+1:

LGTM :)

LGTM:

If mini reporter uses yellow for skipped number, we should do the same for the verbose reporter as well (it's cyan there).

@vdemedes - see #412


Improve UnitTest coverage for azure-cosmos Java SDK for ConsistencyReader/Writer/QuorumReader/Writer

Improve UnitTest coverage for azure-cosmos Java SDK for ConsistencyReader/Writer/QuorumReader/Writer

Current coverage looks good, will re-visit this if necessary.


Set resources:limits:memory: to 80Mi and remove resources:requests:

Services which need just few dozens Mi of mem were previously set to limit 128Mi.
After setting (#88) one of them to requests:32Mi & limits:64Mi, we were getting:
spec.containers[0].resources.requests: Invalid value: '80Mi': must be less than or equal to memory limit
When I'm trying to set requests to 64Mi or remove it completely the problem is still there,
so I think Openshift Online is set so that requests (& limits) can't be less than 80Mi.
EDIT: I'll test this on stg once I resolve a bug in ansible-playbook which prevents me from running make deploy.

you can easily test by editing the objects in webui

which is what I did (but only with the failing centosmsg dc) :-)
thanks

I spent yesterday trying to make the ansible work - with no luck - it always stucks on k8s module (reported upstream).
@TomasTomecek since you're the 'deploy-master' this week :-) can I ask you to pull this change (I'm merging this now) and re-deploy stg? Just ping me before you're doing it so that I can see how it goes. Thanks.


Problem with --image on Artifact Repository

Hello,
when I use --image on Artifact Repository,
it would be error: denied: Permission "artifactregistry.repositories.downloadArtifacts"
the reason is that when dsub starts the machine, it will deploy the image in the form of docker pull [image],
but Artifact Registry needs to set gcloud auth configure-docker asia-east1-docker.pkg.dev before pulling image to make docker pull normally.
what is the solution to this error?
Thanks.

Hi @Rnsras !
Thanks for reporting this. At the moment, we are stuck between two worlds.

The Life Sciences API, which the dsub providers google-v2 and google-cls-v2 depend on, don't support Artifact Registry
The Batch API, which dsub doesn't yet fully support, does support Artifact Registry

To be clear, the change for the google-v2 and google-cls-v2 providers would need to be made by Google in the Life Sciences API. dsub just passes the image through the API, and it is on-VM harness code from Google that sets things up and does the docker pull.
I think the best workaround at the moment would be to use Container Registry and push your dependent images to asia.gcr.io.
We are still working on the google-batch provider, but can't provide a timeline at the moment for feature parity with the existing providers.

so, real problem is Life Sciences service (google-cls-v2) not support Artifact Repository yet ?
thanks for reply

got it, thanks.
it's really helpful.

@mbookman @wnojopra Any updates on ETA for batch and full artifact registry support please As @carbocation discovered, egress charges are now getting pretty significant and would like to move to batch / AR earliest possible. Thanks

Hey @rivershah and @carbocation !
I just went looking into this issue again and realize that my original assertion about the Life Sciences API not supporting Artifact Registry was wrong. It does indeed support Artifact Registry (since late 2020 / early 2021). I'm really sorry about getting that wrong!
I thought that I tested this back in March when you originally reported the problem, but I realize that I actually misunderstood your report.
The error that you reported:

when I use --image on Artifact Repository,
it would be error: denied: Permission "artifactregistry.repositories.downloadArtifacts"

I assumed you meant with either the google-v2 or google-cls-v2 provider. I believe that I found an open request for the Life Sciences API to support Artifact Registry and took that and your (misunderstood) report for truth.
I now believe you meant with the local provider. I have tested this and reproduced that error.
I have now tested using the google-v2 and google-cls-v2 with an image in artifact registry and it worked fine.
So coming back to the original request - are you looking for support for Artifact Registry in the local provider or one of the google-v2 or google-cls-v2 providers? The latter should work.
Please let us know. Thanks!

@mbookman No, Artifact Registry does not work for me with google-cls-v2 unless I use my fork. (as discussed here) This two-line commit allows me to use the new URLs from Artifact Registry, without having to go through the hoops to create the gcr.io-compatible URLs. dsub uses string matching and the normal Artifact Registry URLs don't match the string that dsub expects. You can see the change that is needed in my ~two-line commit at that link. At least, according to github, my fork is 1 commit ahead and 0 commits behind your repo, so I don't believe this is fixed on the public-facing side of your code.

Got it. @wnojopra and I were looking at that and didn't see use-private-address mentioned in this issue, so weren't sure. That's an easy change for us to roll into the next release.
Thanks!

With 0.4.10, we have updated the support for Artifact Registry for the Google providers as per #255. PTAL and let us know if you are still having issues.
Thanks!


Basic logging output.

Adds basic logging output as it was in RC1.
Shows number of peer connections
Does not show total stats
Does not show per file stats

Downloading:

Sharing Live:

👍


API Manager try it UI shows http url with https port.

When you create API with both http and https transports enabled users can use tryout UI to invoke API with both http and https. URL is selectable on the top of API store page. But when you select http url its appear with 8243 port. And invocation get failed.
If someone need to use API developer portal over http then they can switch to http URL. And in that case users should be able to invoke http url as it do not cause mixed content issues which we get when trying to access 2 transports from same page.
If we do not allow http access for developer portal then we need to mention that and disable same in tryit too.

Same issue https://github.com/wso2/product-apim/issues/6811

Reopening as this is only fixed for openapi3.

We have fixed this for OpenAPI 3.0 from APIM 3.1.0 onwards and APIM 3.0.0 wum
It cannot be fixed for swagger 2.0 due to swagger 2.0 does not support multiple hosts.


Enable records longer than 255 chars

Is this a BUG REPORT or FEATURE REQUEST?:
feature
What happened:
Currently we error on records being longer than 255 chars as this is the maximum safe length of a TXT record.
What you expected to happen:
Allow multiple TXT records to be merged for TXTDirect to function accordingly.
How to reproduce it (as minimally and precisely as possible):
Example:
"v=txtv0;type=host;re=^\\/([^\\/]*)\\/\\?$;https://cs.k8s.io/?q=$1&i=fosho&files=.*(%5E%5B%5Ev%5D.*OWNERS%24)%7C(%5Ev%5B%5Ee%5D.*OWNERS%24)%20%7C(%5Eve%5B%5En%5D.*OWNERS%24)%7C(%5Even%5B%5Ed%5D.*OWNERS%24)%7C(%5Evend%5B%5Eo%5D.*OWNERS%24)%7C(%5Evendo%5B%5Er%5D.*OWNERS%24)%7C(%5E%5B%5Ev%5D%5B%5Ee%5D%5B%5En%5D%5B%5Ed%5D%5B%5Eo%5D%5B%5Er%5D%2F.*OWNERS%24)%7C%5EOWNERS%24%7C%5EOWNERS_ALIASES%24&repos="

Anything else we need to know?:
General idea would be:

loop through all records and check for v=txtvX aka any version from TXTDirect
sort them according to p=X
default single records and records without p= to p=1
merge each record key according to p=X

Idea:
"v=txtv0;type=host;re=^\\/([^\\/]*)\\/\\?$;to=https://cs.k8s.io/?q=$1&i=fosho&files=.*(%5E%5B%5Ev%5D.*OWNERS%24)%7C(%5Ev%5B%5Ee%5D.*OWNERS%24)%20%7C(%5Eve%5B%5En%5D.*OWNERS%24)%7C(%5Even%5B%5Ed%5D.*OWNERS%24)%7C(%5Evend%5B%5Eo%5D.*OWNERS%24)%7C(%5Evendo%5B%5Er%5D.*OWNERS%24)"
"p=2;to=%7C(%5E%5B%5Ev%5D%5B%5Ee%5D%5B%5En%5D%5B%5Ed%5D%5B%5Eo%5D%5B%5Er%5D%2F.*OWNERS%24)%7C%5EOWNERS%24%7C%5EOWNERS_ALIASES%24&repos="

The recommended way would be to follow RFC 4408:
3.1.3.  Multiple Strings in a Single DNS record

   As defined in [RFC1035] sections 3.3.14 and 3.3, a single text DNS
   record (either TXT or SPF RR types) can be composed of more than one
   string.  If a published record contains multiple strings, then the
   record MUST be treated as if those strings are concatenated together
   without adding spaces.  For example:

      IN TXT "v=spf1 .... first" "second string..."

   MUST be treated as equivalent to

      IN TXT "v=spf1 .... firstsecond string..."

   SPF or TXT records containing multiple strings are useful in
   constructing records that would exceed the 255-byte maximum length of
   a string within a single TXT or SPF RR record.

This needs to be checked, if all implementations adhere to this.


Create a new line for edits after the document

Fixes #690 where gopls is returning edits for a line that doesn't exist - this happens to work with VS Code because implementation details.
To do:

[x] remove list constructor so we can just pass an iterator from sorted in sort_by_application_order
[x] update comments in the test case

Coverage decreased (-0.07%) to 37.092% when pulling 3698351e0baf4145dc099908968db4859cc4a246 on handle-edits-beyond-last-line into a630fcda946390f22c257620a65805e215e3cdf3 on master.


Add option to require matching geographic area to exist in DwC import

This adds an alternative to silently failing to add a geographic area when importing specimens if the name wasn't recognized.

Codecov Report
Patch coverage has no change and project coverage change: -25.62% :warning:

Comparison is base (bf06c3d) 85.79% compared to head (e33d6fd) 60.18%.

:exclamation: Current head e33d6fd differs from pull request most recent head c164805. Consider uploading reports for the commit c164805 to get more accurate results

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@               Coverage Diff                @@
##           development    #3501       +/-   ##
================================================
- Coverage        85.79%   60.18%   -25.62%
================================================
  Files             2005     1509      -496
  Lines            72644    45376    -27268
================================================
- Hits             62328    27309    -35019
- Misses           10316    18067     +7751

Files Changed
Coverage Δ

...pp/models/dataset_record/darwin_core/occurrence.rb
7.07% <0.00%> (-49.29%)
:arrow_down:

... and 1119 files with indirect coverage changes

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Exception occured while reading gradle file

An exception occured while reading gradle file: No such file or directory @ rb_sysopen

Following error occured when using android_get_version_code and android_get_version_name containing white space in provided gradle path.
E-g .
android_get_version_code(gradle_file: "MBFS/build.gradle") works fine.
android_get_version_code(gradle_file: "MBFS\ JP/build.gradle") exception occur.

The same happens if path to the project has spaces:
An exception occured while reading gradle file: No such file or directory @ rb_sysopen - /Client\ Test\ And\ Internal\ Deploy/android/app/build.gradle

invoked by:
version = android_get_version_name(gradle_file: "android/app/build.gradle")

If I rename jerkins job (and folder name) to "ClientTestAndInternalDeploy" it works fine.


Added check for nested scrollbars

This adds a check to the scrolling so that when you're scrolling with the mouse-wheel if you've reached the top or bottom (ie: the scroll doesn't make an actual change) then allow the even to bubble up, and if it hasn't, prevent all propagation. This ensures that when you have nested scroll bars, if you wheel down inside the inner scroll it won't move the outer scroll unless the inner one has hit the bottom.

#56


notebook installation help

I think this one is ready to be merged, what you think?

@CerenB
I will reopen this one to have as a PR on dev and not on master. Sorry about that. :-)


Refactor Applications

Applications should support the following features:

Whitelisted APIs
Blacklisted APIs
#87

And should be more intuitive to use. @montanaflynn brought up the following issue: it is possible to create applications even if no authentication is being enabled, and the application properties depend on the authentication type that has been configured.
For the last point maybe Application's should be authentication-related by supporting a list of authentication_types, as discussed at #18. More or less authentication_types can be added to an Application depending what authentication schemes the API has installed through the relative Plugins.

Since yesterday we decided to ditch out the concept of applications in favour of consumers + still have multiple keys per authentication type, this issue kind of becomes obsolete. Update with yesterday's discussion in #18. #87 is still relevant.