Naive question about  evaluate

Hi,
I want to test the trained model in https://github.com/FunctionLab/selene/blob/master/tutorials/quickstart_training/quickstart_training.ipynb, the used .yml file is shown below:

ops: [evaluate]
model: {
# TODO: update this line with the absolute path to the file.
path: /root/selene/learn/deeperdeepsea.py,
class: DeeperDeepSEA,
class_args: {
sequence_length: 1000,
n_targets: 1,
},
non_strand_specific: mean
}
sampler: !obj:selene_sdk.samplers.file_samplers.BedFileSampler {
filepath: /root/selene/learn/training_outputs/test_data.bed,
reference_sequence: !obj:selene_sdk.sequences.Genome {
input_path: /root/selene/learn/male.hg19.fasta
},
n_samples: 1200,
sequence_length: 1000,
targets_avail: True,
n_features: 2,
}
evaluate_model: !obj:selene_sdk.EvaluateModel {
features:  !obj:selene_sdk.utils.load_features_list {
input_path: /root/selene/learn/distinct_features.txt
},
trained_model_path: /root/selene/learn/training_outputs/best_model.pth.tar,
n_test_samples: 1200,
batch_size: 64,
report_gt_feature_n_positives: 10,
use_cuda: True,
}
random_seed: 1447
output_dir: /root/selene/learn/training_outputs
create_subdirectory: False
Then I got this error:
Traceback (most recent call last):
File "main.py", line 12, in
parse_configs_and_run(configs)
File "/root/anaconda3/lib/python3.7/site-packages/selene_sdk/utils/config_utils.py", line 341, in parse_configs_and_run
execute(operations, configs, current_run_output_dir)
File "/root/anaconda3/lib/python3.7/site-packages/selene_sdk/utils/config_utils.py", line 208, in execute
evaluate_model = instantiate(evaluate_model_info)
File "/root/anaconda3/lib/python3.7/site-packages/selene_sdk/utils/config.py", line 239, in instantiate
return _instantiate_proxy_tuple(proxy, bindings)
File "/root/anaconda3/lib/python3.7/site-packages/selene_sdk/utils/config.py", line 144, in _instantiate_proxy_tuple
obj = proxy.callable(**kwargs)
File "/root/anaconda3/lib/python3.7/site-packages/selene_sdk/evaluate_model.py", line 134, in init
if type(self.reference_sequence) == Genome and
AttributeError: 'EvaluateModel' object has no attribute 'reference_sequence'
Would you like to help me debug?
Thank you very much!
Yours sincerely,
Shusen

It looks like there was a bug in evaluate_model.py. I just submitted PR #110 to fix this problem.

Thanks! I have merged @evancofer's PR. We will update conda/pip with a minor release in the next couple weeks to make sure the packages are up-to-date with master. For now, if you need help building the package locally let me know.

@evancofer Thank you very much！
It still can not be run properly！
Traceback (most recent call last):
File "main.py", line 12, in
parse_configs_and_run(configs)
File "/root/miniconda3/envs/selene-gpu/lib/python3.6/site-packages/selene_sdk-0.4.1-py3.6-linux-x86_64.egg/selene_sdk/utils/config_utils.py", line 341, in parse_configs_and_run
execute(operations, configs, current_run_output_dir)
File "/root/miniconda3/envs/selene-gpu/lib/python3.6/site-packages/selene_sdk-0.4.1-py3.6-linux-x86_64.egg/selene_sdk/utils/config_utils.py", line 208, in execute
evaluate_model = instantiate(evaluate_model_info)
File "/root/miniconda3/envs/selene-gpu/lib/python3.6/site-packages/selene_sdk-0.4.1-py3.6-linux-x86_64.egg/selene_sdk/utils/config.py", line 239, in instantiate
return _instantiate_proxy_tuple(proxy, bindings)
File "/root/miniconda3/envs/selene-gpu/lib/python3.6/site-packages/selene_sdk-0.4.1-py3.6-linux-x86_64.egg/selene_sdk/utils/config.py", line 144, in _instantiate_proxy_tuple
obj = proxy.callable(**kwargs)
File "/root/miniconda3/envs/selene-gpu/lib/python3.6/site-packages/selene_sdk-0.4.1-py3.6-linux-x86_64.egg/selene_sdk/evaluate_model.py", line 134, in init
if (hasattr(self.sampler, reference_sequence) and
NameError: name 'reference_sequence' is not defined

@shusen18 Wow, that was sloppy on my part! Thanks for catching this. I think I used the wrong conda environment to test this, but working on it again now.

It should be fixed now. Just waiting for #111 to be merged.

Merged - thank you!

Thank you very much!
The problem is solved！


Latest misspell broke binary strings

If I have a large binary blob embedded via go-bindata, the probability is fairly large to have a "misspelling" it it. Would be nice to ignore strings as until now. This worked correctly up until today.
E.g. https://github.com/ethereum/go-ethereum/blob/master/cmd/puppeth/module_dashboard.go#L391
Causing:
cmd/puppeth/module_dashboard.go:391:5782: "ect" is a misspelling of "etc"
cmd/puppeth/module_dashboard.go:391:275585: "ect" is a misspelling of "etc"
cmd/puppeth/module_dashboard.go:391:378784: "ect" is a misspelling of "etc"

Most trivial repro:
var variable = "ect"

Further inspection, it works correctly if I explicitly specify --source=go, so it would seem that it fails detecting that my file is Go and switching to the new ReplaceGo (https://github.com/client9/misspell/pull/104) method.

However explicitly specifying go will make it go belly up on non Go files in my repo, so it seems I'm in a deadlock here.


Extend search functionality

ordering + pagination,
nice query builder,
comments enriched with author info

@aheritier
@johnou
Please review.

Hi @myakovets
it's a lot of code with no tests. It will be hard to review it.


Unspecified dimension after tf.sparse_tensor_dense_matmul

Environment info
Operating System:
Problem encountered on linux CPU build installed from 47501a5ebc62fcb8a3d7832722d39997696897dc.
If possible, provide a minimal reproducible example (We usually don't have time to read hundreds of lines of your code)
import tensorflow as tf
indices = [[0, 0], [1, 2]]
values = [1., 1.]
shape = [4, 6]
test_sparse = tf.SparseTensor(indices, values, shape)
v = tf.ones((6, 1))

sess = tf.Session()
sess.run(tf.initialize_all_variables())

mult = tf.sparse_tensor_dense_matmul(test_sparse, v)
print(mult)
--> <tf.Tensor 'SparseTensorDenseMatMul_1/SparseTensorDenseMatMul:0' shape=(?, 1) dtype=float32>

# but of course
sess.run(mult).shape
--> (4, 1)

My question is: why is it that the shape of mult is partially unspecified before run time? It can be inferred from the shape of test_sparse and v that mult will have shape (4, 1).
This is very annoying because it prevents me from initializing a Variable with the result of a sparse matmul as in the following:
mult_val = tf.Variable(tf.sparse_tensor_dense_matmul(test_sparse, v))
--> ValueError: initial_value must have a shape specified: Tensor("SparseTensorDenseMatMul/SparseTensorDenseMatMul:0", shape=(?, 1), dtype=float32)

On the other hand, dense matmul has the desired behavior:
dense_mult = tf.matmul(tf.sparse_tensor_to_dense(test_sparse, v))
dense_mult.get_shape()
--> TensorShape([Dimension(4), Dimension(1)])

So why does sparse matmul behave differently? Is this a bug? An implementation quirk?
In the meanwhile, how can I initialize a Variable with the result of a sparse matmul without having to densify the sparse matrix first?

OK, there is an easy solution to this problem. Simply construct the variable with
mult_val = tf.Variable(tf.sparse_tensor_dense_matmul(test_sparse, v), validate_shape=False)

I'm leaving this open though, because I still don't see why sparse_tensor_dense_matmul should return a tensor with unspecified shape.

@rueberger nice that you found as solution to your immediate problem!
@concretevitamin can correct me if what I say below is wrong, or if we have future plans to improve things.
I think you can classify this as an "implementation quirk".  Let's start with the representation of sparse tensors.  Basically you can think of SparseTensor as a convenient wrapper around 3 underlying tensors, which represent the indices, values and shape independently:
https://www.tensorflow.org/versions/r0.10/api_docs/python/sparse_ops.html#SparseTensor
For a regular ops on non-sparse tensors, the shape of the output is determined by the shapes of the input tensors, as you expect.
Let's say that's all we're given, and we try to implement SparseTensor ourselves, on top of this framework.  Well the problem is that the shape of the SparseTensor is no longer fixed; since it is itself represented as a tensor.
Another way to look at at:

The shape of [1,2,3] is [3], since we have a 1-dimensional vector with 3 elements.
The shape of [4,6] is [2]
The shape of the shape = [4, 6] variable in your example is [2]

So basically if we limit ourselves to looking at the shapes, and not at the values, we end up the behavior you've reported.  Hope this helps!

Ah, of course, thanks for the explanation. Perhaps it would be possible to slightly modify tf.sparse_tensor_dense_matmul to have a defined shape when the shape argument is passed as an array? That would be a pretty easy change, no?

Is this still current?

Possibly. I just reported crashing behavior that seems to be related to the dimension of the tensors in sparse_tensor_dense_matmul (#7417). I'm on version 0.12.1.

(I'm mainly referring to "crash 2" from that report, where sparse_tensor_dense_matmul_op.cc seems to get confused about the number of rows.  I'll let you know when I have a reproducible example).

(example added.  Sorry for the triple comment!)

Automatically closing due to lack of recent activity. Please update the issue when new information becomes available, and we will reopen the issue. Thanks!


Feature Request: Ability to opt out of liveBinding with exports of const values

Suggestion

🔍 Search Terms

liveBinding Object defineProperty allocation export live view
✅ Viability Checklist

My suggestion meets these guidelines:

[ x] This wouldn't be a breaking change in existing TypeScript/JavaScript code
[ x] This wouldn't change the runtime behavior of existing JavaScript code
[ x] This could be implemented without emitting different JS based on the types of the expressions
[ x] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, new syntax sugar for JS, etc.)
[x ] This feature would agree with the rest of TypeScript's Design Goals.

⭐ Suggestion

opt out of liveBinding added in https://github.com/microsoft/TypeScript/pull/35967 for const values
📃 Motivating Example

Doing some profiling of an app I'm creating and seeing a lot of calls to the get function of Object defineProperty  that was added as part of https://github.com/microsoft/TypeScript/pull/35967. These might be optimized away when not using --trace-allocation-stack-interval but it would be great to not have to rely on the optimizer to do the right thing here.
I originally wanted to add a flag that would make sure that  https://github.com/microsoft/TypeScript/blob/1e65b330a71cc09065b31f1724d78e931aafed51/src/compiler/transformers/module/module.ts#L1147 doesn't unconditionally pass true here, but that would be a breaking change to existing Typescript code if the flag was used with a modifiable export (does the breaking change guideline count if someone needs to explicitly flag themselves into a behavior?)
If the exported value is const then you don't need a "live view" of it. But it's not clear if there is a good way to communicate const-ness at the time the export expression is created.
💻 Use Cases

I think I can work around this by saving the value of the re-export to a variable local to the the current script/module and using that. But that seems cumbersome.

Looking into this some more, I think I actually want to edit https://github.com/microsoft/TypeScript/blob/1e65b330a71cc09065b31f1724d78e931aafed51/src/compiler/transformers/module/module.ts#L1510
A really simple example of the issue is
import {createHash} from "crypto";

export {createHash}

Output
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createHash = void 0;
const crypto_1 = require("crypto");
Object.defineProperty(exports, "createHash", { enumerable: true, get: function () { return crypto_1.createHash; } });

Compiler Options
{
  "compilerOptions": {
    "strict": true,
    "noImplicitAny": true,
    "strictNullChecks": true,
    "strictFunctionTypes": true,
    "strictPropertyInitialization": true,
    "strictBindCallApply": true,
    "noImplicitThis": true,
    "noImplicitReturns": true,
    "alwaysStrict": true,
    "esModuleInterop": true,
    "declaration": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "target": "ES2017",
    "jsx": "react",
    "module": "ESNext",
    "moduleResolution": "node"
  }
}

Playground Link: Provided


Can I use this package on React JS

Hello Sir.
I want to use this package on React JS.
Can you help me?

Hi @magdalia2016 you can use it, but it's not a good idea to do that.
If in your project if you have any dependency with jQuery then I would say feel free to go ahead.
If you are ok with JQuery in React project then no need think much.


SSL For Video Feature Extraction

The feature extraction tutorial is available for only images https://vissl.ai/tutorials/Feature_Extraction. Can we extract features for videos? I would love to contribute and send PR if necessary
Open source status

[x] the model implementation is available: These are some implementations. Please let me know if there are better implementations

Unsupervised Learning from Video with Deep Neural Embeddings: https://github.com/neuroailab/VIE
Learning Joint Embedding with Multimodal Cues for Cross-Modal Video-Text Retrieval: https://github.com/niluthpol/multimodal_vtt
Temporally Coherent Embeddings for Self-Supervised Video Representation Learning: https://github.com/csiro-robotics/TCE

[x] the model weights are available: Yes, available in above github links
[x] who are the authors: Yes, available in above github links

Specifically, I am looking for embeddings that I can use for video-recommendation-engine in a very large scale (millions of data points)

Hi @rakesh4real , thank you so much for reaching out about this. We would love to support this and would appreciate the PR. Please go ahead and create the PR and we can provide all the support necessary :)

Thankyou @prigoyal. Will write up the action plan and start discussion here.

Hi, I'm interested in picking up on this issue if that's ok. I started working on adding support for video datasets for my own use, following the outline in VISSL #314 (comment).  I'd be happy to open a PR if that would be useful. Let me know!


Update Go version to 1.4.2

There's not really any great hurry on this AFAIK, but it might be nice to have soon, or after the release if we want to play it super super safe.
This style of build optimizes for bandwidth at the cost of some additional time on first compile / environment build.  The golang:1.4.2-cross image is quite large, and I have a feeling that bandwidth is a more limited resource than CPU cycles for most.  It looks like first build with this method takes quite a while comparatively on a fast connection, though (~1 minute for pull vs. ~4 for bootstrap on my Ethernet at the office), so we should consider the tradeoff carefully and do some additional benchmarking.
Signed-off-by: Nathan LeClaire<EMAIL_ADDRESS>

cc @ehazlett @hairyhenderson @sthulb

I'm +1 on the 1.4.2 bump.
The pull-time optimization is nice, and I think it's faster overall for me (I recall golang:1.3-cross taking 25mins to pull on my home internet connection a while back). I'm timing the build from this branch right now...

Results:
script/build  1.40s user 0.46s system 0% cpu 11:43.16 total

This is on my MacBook Pro from 2011 with 16GB RAM, with boot2docker running in VMWare Fusion.
To be honest, I was a little surprised how long it took. If the first-build time is going to be on this order of magnitude, I think I might actually prefer just going FROM golang:1.4.2-cross.
The other thing to consider is that this is a somewhat temporary problem, because Go 1.5 will (in theory) land in August, and the -cross image for that will be able to be much smaller (or so I've been told). So, it'd probably be better to use -cross when we move to 1.5, so maybe it isn't such a big deal to have the extra bandwidth cost with 1.4.2.
One big caveat though - I've actually gotten much more used to just running godep go build when I'm working on Machine lately, mostly because it's so much faster. But, I know I should be script/building :grin:

Yeah +1 from me too.  I think we can get this in after the 0.3 release and see how it works with the understanding of moving to 1.5 in Aug.  Sound good?

Yikes at those results @hairyhenderson.  That's what I'd worry about with this method.  We might actually be better off just using golang:1.4.2-cross.  The other option would be to pre-bake our "base" on our own, which I think would cut down the image size pretty well.

Yeah +1 from me too. I think we can get this in after the 0.3 release and see how it works with the understanding of moving to 1.5 in Aug. Sound good?

Yes!

+1, we should do it after the release :)

1.5 should be interesting in the summer, I'm looking forward to it, despite the runtime slowdown

@ehazlett WDYT about this?  I changed to just use golang:1.4.2-cross image, which I think is ultimately the better path in spite of the large size, although I don't think we should kick out the idea of just generating our own base (it would cut the size by >50% off golang:1.4.2-cross).

@ehazlett Does it LGTY?

LGTM


Update circbuf to v0.1.1

This version brings an optimized code path for sizes that are power of
two.
Signed-off-by: Leandro Motta Barros<EMAIL_ADDRESS>Change-type: minor

@balena-ci I self-certify!


Roll third-party dependencies.

This roll fixes some warnings on GCC 11.
Travis CI build without the roll: https://travis-ci.org/github/pwnall/leveldb/builds/771465615
Travis CI build with the roll: https://travis-ci.org/github/pwnall/leveldb/builds/771497121
This PR only touches sub-modules, and needs to be merged via GitHub, as opposed to going through Piper.

Thank you for the review!


The possible value for neuromorphic dataset

In your paper, you mentioned that the neuromorphic data have four possible values for triggers, and your code also shows that there are four possibilities.
However, my understanding is that neuromorphic data only have three states: -1 represents negative, 0 represents no events, and 1 represents positive. Could you please explain the four possibilities used in your paper, which correspond to the black, light blue, dark blue, and green in your paper?
Thank you for your clarification.

After reviewing your code, I found that you use the data processing method provided by SpikingJelly. In SpikingJelly, the event frame is constructed by integrating the number of corresponding events. Therefore, the possible space for the backdoor should not be limited to four values; it could be any non-negative integer value.

Hi!
Sorry for the late reply. I was on holiday :)
Yes, there are not really four states. I mean, some states cannot happen in real life, but we can construct them artificially. This is a limitation; the attack cannot happen in a physical scenario.
And yes, it can be "any" non-negative number. However, since the search space is too large, we considered using a limited range of possibilities for triggers that we create manually.
I hope that I answered your questions. Let me know if you want to discuss further.
Best,
Gorka

Thanks GorkaAbad! Your explanation is clear and understandable.


Fix multi node kind setup and run e2e

Fix #111
E2E run on multi node cluster
JUnit report was created: /tmp/test_e2e_logs/e2e_junit.xml

Ran 10 of 10 Specs in 220.478 seconds
SUCCESS! -- 10 Passed | 0 Failed | 0 Pending | 0 Skipped

Signed-off-by: Mohamed Mahmoud<EMAIL_ADDRESS>

/lgtm


Issue with Tidus's STMR

Reported by Carnefix on Discord.
Tidus's STMR Dreams of the Fayth (Increase esper's bonus stats (50%) Increase LB gauge fill rate (150%)) isn't taking into account the esper stat bonus when building for damage. When pinned, the attack is increased correctly.

Done


Added support for custom config dir path

Description
This PR implements support for a user specified config directory path. It aims to fix #67.
Usage
Simply run the program with the arguments -c [config_dir_path] or --config [config_dir_path]
Checklist
Please make sure you can check all the boxes that apply to this PR.

[x] All widgets I've added are correctly documented.
[ ] The documentation in the docs/content/main directory has been adjusted to reflect my changes.
[x] I used cargo fmt to automatically format all code before committing

TODO:

Update documentation
I think the way server.rs handles configuration paths could be cleaned up a bit.

The code, as it currently is, wouldn't be able to properly deal with me not specifying a config path, no? if no -c is specified, it should continue to default to ~/.config/eww/

It should fallback to default which in this case would be CONFIG_DIR. Take a look at server.rs lines 24 to 30.

merge this before the edit subcommand (if you are still planning on merging it)

Still to do: not use empty string, but set a fallback value properly directly or at least use Option<T>
(first option would be to set the actual config path in the structopt macro, not sure if that's possible).
@druskus20 u gonna finish this? :P

Still to do: not use empty string, but set a fallback value properly directly or at least use Option<T>
(first option would be to set the actual config path in the structopt macro, not sure if that's possible).
@druskus20 u gonna finish this? :P


Not sure how to use checkpoints

Hi,
I'm struggling to train the model. It gives me the following error:
Traceback (most recent call last):
  File "projects/PanopticFCN/train.py", line 114, in <module>
    launch(
  File "/home/mikkel/Desktop/masters/detectron2/detectron2/engine/launch.py", line 82, in launch
    main_func(*args)
  File "projects/PanopticFCN/train.py", line 108, in main
    trainer.resume_or_load(resume=False) #args.resume
  File "/home/mikkel/Desktop/masters/detectron2/detectron2/engine/defaults.py", line 413, in resume_or_load
    self.checkpointer.resume_or_load(self.cfg.MODEL.WEIGHTS, resume=resume)
  File "/home/mikkel/.local/lib/python3.8/site-packages/fvcore/common/checkpoint.py", line 215, in resume_or_load
    return self.load(path, checkpointables=[])
  File "/home/mikkel/Desktop/masters/detectron2/detectron2/checkpoint/detection_checkpoint.py", line 53, in load
    ret = super().load(path, *args, **kwargs)
  File "/home/mikkel/.local/lib/python3.8/site-packages/fvcore/common/checkpoint.py", line 141, in load
    assert os.path.isfile(path), "Checkpoint {} not found!".format(path)
AssertionError: Checkpoint /data/detectron2_modelzoo/basemodel/R-50-MSRA.pkl not found!

I see that it needs a .pkl file in the directory /data/detectron2_modelzoo/basemodel/, but there exists no directory like this and the README only gives a download link to the model weights which are of a .pth extension.
I run the model with the following command lines:
python3 projects/PanopticFCN/train.py --config-file projects/PanopticFCN/configs/PanopticFCN-R50-1x.yaml --num-gpus 1

Hi, this is the path to your pretrained imagenet model. If there is no imagenet model in your root dir, consider the default one provided by Detectron2 using the config WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"

Ah! Thanks, seem to solve the problem.
On a different note, how much VRAM should my GPU have in order to run this repo? I have a 1070ti with 8GB VRAM, but I am now getting a CUDA out of memory error. Don't know if I should open another issue or not.


Remove duplicates, sometimes with incomplete or missing GPRs

Description of the issue:
*Try to be as clear as possible: Is it something wrong/missing in the model? Is it a simulation issue?
The following reactions are duplicates, and sometimes they have a missing or incomplete GPR:
remove: MAR08992, MAR02490, MAR04562, MAR00464, MAR07262, MAR11310, MAR10410, MAR11269, MAR11275, MAR11273
keep:   MAR04477, MAR06621, MAR02608, MAR07178, MAR00333, MAR00108, MAR02404, MAR10178, MAR10367, MAR10383
Expected feature/value/output:
How the reaction/metabolite/gene/simulation result should look (cite literature if needed). PLEASE DELETE THIS LINE.
Current feature/value/output:
How the reaction/metabolite/gene/simulation actually looks in the main branch. PLEASE DELETE THIS LINE.
Reproducing these results:
Please attach any Matlab code used . PLEASE DELETE THIS LINE.

I hereby confirm that I have:

[ ] Tested my code on my own computer for running the model
[ ] Done this analysis in the main branch of the repository
[ ] Checked that a similar issue does not exist already

Note: replace [ ] with [X] to check the box. PLEASE DELETE THIS LINE

These will potentially cause problems both for Gecko and tINIT

@johan-gson can you please provide the keep ones and remove one as pair (or in a table), and specify which have missing GPRs and which have miss GPRs, as well as evidence supporting your claims.

remove:		keep:		GPRs:
MAR08992	MAR04477	RPE   RPE or RPEL1
MAR02490	MAR06621	empty (RRM1 and RRM2 and RRM2B and TXN2) or (RRM1 and RRM2 and RRM2B and TXN)
MAR04562	MAR02608	CPT1A or CPT1B or CPT1C  CPT1A or CPT1B or CPT1C
MAR00464	MAR07178	empty FABP1
MAR07262	MAR00333	empty empty
MAR11310	MAR00108	empty CPT1A or CPT1B or CPT1C
MAR10410	MAR02404      empty SLC22A10
MAR11269	MAR10178	empty empty
MAR11275	MAR10367	empty empty
MAR11273	MAR10383	empty empty
I'm thinking it is best to ditch the reaction with empty GPR, or on the first row, the one with the largest GPR. If they are equal, I just randomly selected one.

Since the reactions with GPRs need more in-depth investigation, my suggestion is to split this issue into several small ones for checking the GPR of each reaction, thus restricting the current issue to removing the "purely duplicated" reactions. Also, since the number in the reaction identifier hints at the reaction "age", I propose to keep the older reaction from each pair.

remove
keep
GPR
GPR

MAR07262
MAR00333
empty
empty

MAR11269
MAR10178
empty
empty

MAR11275
MAR10367
empty
empty

MAR11273
MAR10383
empty
empty

This is great, @johan-gson - I would have expected these to have been identified/removed earlier, but that is obviously not the case.
I agree with @mihai-sysbio that it's worth double checking the GPRs to make sure we don't lose any information, and to generally keep the "older" (lower number) reaction ID in the case of duplicates.

@JonathanRob it looks like the duplication existed in Recon3D, which would explain why they have not been found when comparing with HMR2.

With the issue partially resolved, and the remaining reported in #363, I am closing this one.


Crash on destroyed lua state in sol::coroutine after move assign

I've encountered a crash after using move-assign on a struct storing a sol::coroutine.  For context, in my project I am storing references to in-progress sol::coroutines (along with their thread, etc) in object pools for use in an ECS system where move-assign is used to remove/destroy components.
I've attached a trimmed down example program that reproduces the issue.  I had to force garbage collection to consistently reproduce this issue, otherwise it is infrequent.  I have found that commenting out the if (detail::xmovable(lua_state(), r.lua_state())) { block in basic_reference::move_assign and allowing the default implementation to run resolves this issue.  I'm not sure if this is an issue with the move_assign implementation or if I'm using sol incorrectly.
Thanks for the great library!
I am using Lua 5.4 and compiling with Visual Studio 2019.  I have included a project that compiles, but here is the relevant code snippet:
{
	CoroutineStorage(sol::state& luaContext)
	{
		mLuaState = &luaContext;
		mThreadEnvironment = sol::environment(luaContext, sol::create, luaContext.globals());
		mThread = sol::thread::create(luaContext);
		sol::set_environment(mThreadEnvironment, mThread);
		sol::state_view luaThreadState = mThread.state();

		sol::optional<sol::table> actionTable = luaThreadState["aTable"];
		if (actionTable)
		{
			mThreadTick = actionTable.value()["Tick"];
		}
	}

	CoroutineStorage& operator=(CoroutineStorage&& r) & noexcept
	{
		mThreadTick = std::move(r.mThreadTick);
		mLuaState->collect_garbage();
		mThread = std::move(r.mThread);
		mLuaState->collect_garbage();
		mThreadEnvironment = std::move(r.mThreadEnvironment);
		mLuaState->collect_garbage();
		return *this;
	}

	CoroutineStorage(CoroutineStorage&& r) noexcept = default;

	sol::state* mLuaState;
	sol::environment mThreadEnvironment;
	sol::thread mThread;
	sol::coroutine mThreadTick;
};

int main()
{
	sol::state lua;
	lua.open_libraries(sol::lib::base, sol::lib::coroutine);

	lua.script(R"(
		aTable = {}
		aTable["Tick"] = function()
			coroutine.yield()
		end
		)");

	std::vector<CoroutineStorage> luaCoroutines;

	luaCoroutines.emplace_back(lua);
	luaCoroutines.emplace_back(lua);

	// This mimics the erase behavior from an object pool as implemented by Entt - https://github.com/skypjack/entt/
	auto other = std::move(luaCoroutines.back());
	luaCoroutines[0] = std::move(other);
	luaCoroutines.pop_back();
}

SolReport.zip

This should be fixed now in latest. Sorry about the bug!


ConnectGuardians.tsx displays wrong value

        <CopyInput
          value={process.env.REACT_APP_FM_CONFIG_API || ''}
          size='lg'
          buttonLeftIcon={<Icon as={CopyIcon} />}
        />

We currently use the UI enviroment variable as the connection. However, this is incorrect and should be the FM_API_URL passed into the Coordinators config for fedimintd.

https://github.com/fedimint/ui/issues/19
Related.


Problem on Running Test

I got this problem when I ran the test. mse = exp.test() , Is there any potential solution for this problems?
OpenSTL\openstl\api\train.py", line 359, in test
    metrics=metric_list, channel_names=channel_names, spatial_norm=spatial_norm)

OpenSTL\openstl\core\metrics.py", line 188, in metric
    true[b, f].swapaxes(0, 2), multichannel=True)
**TypeError: 'NoneType' object is not callable**

Hi, @netlabcode, thanks for your question. Could you please provide detailed information for this problem, e.g., the config file and full outputs of errors?


[bump] client: 2.0.0-internal.4.0.6 => 2.0.0-internal.4.0.7 (patch)

Bumped client from 2.0.0-internal.4.0.6 to 2.0.0-internal.4.0.7.
via flub release -g client on release/v2int/4.0 branch

We have to abandon this.  I neglected to finish/merge it before 2.0.0-internal.4.1.0 was released, so now the type validation tests are failing because the old version is internal.4.0.0 which pulls in internal.4.1.1 which breaks the tests (as you'd expect)


Abstract & update device os info that are used in tests

This also fixes those tests failing b/c of relying on a
really old invalidated os release.
Change-type: patch
See: https://www.flowdock.com/app/rulemotion/resin-tech/threads/3WDfDVeEH8raYKGJ4iSRVaHFw_p
Signed-off-by: Thodoris Greasidis<EMAIL_ADDRESS>
Contributor checklist

[ ] Includes tests
[ ] Includes typings
[ ] Includes updated documentation
[ ] Includes updated build output

@balena-ci I self-certify!


Flatpak package and Flathub publication

Really liking the app so far, it would be nice if the project was available as a Flatpak.

Sounds like a good idea to me! I'm not really a linux user myself. Is this something you're knowledgeable on / would mind helping out with?

No, infortunately I haven't done anything like this before. But I'll try looking into it, my guess is that it shouldn't be too difficult.

Alright, I did some initial research and I'm trying to throw a manifest together. I have a question tho. Would you like to publish the finished application on Flathub yourself?
Flathub's policy is that users are allowed to submit applications that they're not the developer of. https://docs.flathub.org/docs/for-app-authors/submission#theres-an-app-that-id-like-to-see-on-flathub-but-im-not-the-developer
But it seems that having the developer publish the application is preferred. https://docs.flathub.org/docs/for-app-authors/submission#someone-else-has-put-my-app-on-flathubwhat-do-i-do
This is still in the future, the manifest is nowhere near ready yet. I just wanted to shoot this question out beforehand.
I'm hoping this might not even matter because once a repository in https://github.com/flathub has been created the publisher gets write permissions and I hope more people can be invited to also have write access. This way we could both manage the application on Flathub. https://docs.flathub.org/docs/for-app-authors/submission/#after-submission

I have no strong preferences about being the primary publisher. If you or anybody else want to help out here, I'd be quite pleased! That's why Tangent is open source now.

I might have spoken too soon :sweat_smile:
Tangent being an Electron app using npm for builds complicates things because Flathub doesn't allow network access from the sandbox where the application is built. The workaround for this is to pull the dependencies before the build process starts and then use npm in offline mode for the build. They have tooling and a guide for this, but the Typewriter fork being a local module seems to break their script for dependency fetching. I'm afraid I'm not enough of an npm guru for this :sweat_smile:
In case anyone wants to pick this up, feel free to do so.
I'll post an update if I manage to get any further, but my hopes aren't so high anymore :pensive:
This is what I have so far:
id: io.github.suchnsuch.Tangent
runtime: org.freedesktop.Platform
runtime-version: '23.08'
sdk: org.freedesktop.Sdk
base: org.electronjs.Electron2.BaseApp
base-version: '23.08'
sdk-extensions:
  - org.freedesktop.Sdk.Extension.node18
# Electron doesn't use a traditional locale format
separate-locales: false
writable-sdk: true
command: run.sh
finish-args:
  - --device=dri
  - --share=ipc
  - --socket=x11
  - --socket=pulseaudio
  # Probably not needed
  #- --share=network
  - --filesystem=home
modules:
  - name: tangent
    buildsystem: simple
    build-options:
      append-path: /usr/lib/sdk/node18/bin
      env:
        NPM_CONFIG_LOGLEVEL: info
        XDG_CACHE_HOME: /run/build/tangent/flatpak-node/cache
        npm_config_cache: /run/build/tangent/flatpak-node/npm-cache
        npm_config_nodedir: /usr/lib/sdk/node18
        npm_config_offline: 'true'
    subdir: main
    sources:
      - type: git
        url: https://github.com/suchnsuch/Tangent
        tag: tangent-v0.7.6
      - type: script
        dest-filename: run.sh
        commands:
          - zypak-wrapper.sh /app/main/electron-sample-app "$@"
      #- type: file
      #  path: io.github.suchnsuch.Tangent.desktop
      #- type: file
      #  path: io.github.suchnsuch.Tangent.svg
      #- type: file
      #  path: io.github.suchnsuch.Tangent.metainfo.xml
    build-commands:
      # build linux
      - npm install --offline
      # install
      #- install -Dm644 -t /app/share/icons/hicolor/scalable/apps/ io.github.suchnsuch.Tangent.svg
      #- install -Dm644 -t /app/share/applications io.github.suchnsuch.Tangent.desktop
      #- install -Dm644 -t /app/share/metainfo io.github.suchnsuch.Tangent.metainfo.xml
      #- install -Dm755 -t /app/bin/ run.sh

Does recursive mode help at all? What kind of errors are you getting?

Initially I had an issue with the Typewriter fork, but that was my fault. I didn't realize it was a submodule and that it isn't cloned by default.
Now I cloned the Tangent repo at version 0.7.6 including the submodules (git submodule update --init --recursive) and ran flatpak-node-generator npm package-lock.json.
I'm getting
Reading packages from lockfiles...
Traceback (most recent call last):
  File "/home/k8ie/.local/bin/flatpak-node-generator", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/home/k8ie/.local/share/pipx/venvs/flatpak-node-generator/lib/python3.12/site-packages/flatpak_node_generator/main.py", line 277, in main
    asyncio.run(_async_main())
  File "/usr/lib/python3.12/asyncio/runners.py", line 194, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/asyncio/base_events.py", line 687, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/home/k8ie/.local/share/pipx/venvs/flatpak-node-generator/lib/python3.12/site-packages/flatpak_node_generator/main.py", line 198, in _async_main
    packages.update(lockfile_provider.process_lockfile(lockfile))
  File "/home/k8ie/.local/share/pipx/venvs/flatpak-node-generator/lib/python3.12/site-packages/flatpak_node_generator/providers/npm.py", line 166, in process_lockfile
    yield from self._process_packages_v2(lockfile, data)
  File "/home/k8ie/.local/share/pipx/venvs/flatpak-node-generator/lib/python3.12/site-packages/flatpak_node_generator/providers/npm.py", line 138, in _process_packages_v2
    raise NotImplementedError(
NotImplementedError: Don't know how to handle package packages/tangent-test-workspace-generator in package-lock.json

I think this could be a forgotten package in the package-lock.json file. I removed the section mentioning packages/tangent-test-workspace-generator and got a bit further now:
Reading packages from lockfiles...
1070 packages read.
Generating packages [1069/1070] app-builder-bin @ 4.0.0
Traceback (most recent call last):
  File "/home/k8ie/.local/bin/flatpak-node-generator", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/home/k8ie/.local/share/pipx/venvs/flatpak-node-generator/lib/python3.12/site-packages/flatpak_node_generator/main.py", line 277, in main
    asyncio.run(_async_main())
  File "/usr/lib/python3.12/asyncio/runners.py", line 194, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/asyncio/base_events.py", line 687, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/home/k8ie/.local/share/pipx/venvs/flatpak-node-generator/lib/python3.12/site-packages/flatpak_node_generator/main.py", line 229, in _async_main
    await progress.run()
  File "/home/k8ie/.local/share/pipx/venvs/flatpak-node-generator/lib/python3.12/site-packages/flatpak_node_generator/progress.py", line 78, in run
    await coro
  File "/usr/lib/python3.12/asyncio/tasks.py", line 631, in _wait_for_one
    return f.result()  # May raise f.exception().
           ^^^^^^^^^^
  File "/home/k8ie/.local/share/pipx/venvs/flatpak-node-generator/lib/python3.12/site-packages/flatpak_node_generator/progress.py", line 68, in _generate
    await self.module_provider.generate_package(package)
  File "/home/k8ie/.local/share/pipx/venvs/flatpak-node-generator/lib/python3.12/site-packages/flatpak_node_generator/providers/npm.py", line 365, in generate_package
    await self.special_source_provider.generate_special_sources(package)
  File "/home/k8ie/.local/share/pipx/venvs/flatpak-node-generator/lib/python3.12/site-packages/flatpak_node_generator/providers/special.py", line 482, in generate_special_sources
    await self._handle_playwright(package)
  File "/home/k8ie/.local/share/pipx/venvs/flatpak-node-generator/lib/python3.12/site-packages/flatpak_node_generator/providers/special.py", line 373, in _handle_playwright
    metadata = await RemoteUrlMetadata.get(dl_url, cachable=True)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/k8ie/.local/share/pipx/venvs/flatpak-node-generator/lib/python3.12/site-packages/flatpak_node_generator/url_metadata.py", line 41, in get
    async for part in Requests.instance.read_parts(url, cachable=False):
  File "/home/k8ie/.local/share/pipx/venvs/flatpak-node-generator/lib/python3.12/site-packages/flatpak_node_generator/requests.py", line 57, in read_parts
    async for part in self._read_parts(url, size):
  File "/home/k8ie/.local/share/pipx/venvs/flatpak-node-generator/lib/python3.12/site-packages/flatpak_node_generator/requests.py", line 30, in _read_parts
    async with self._open_stream(url) as stream:
  File "/usr/lib/python3.12/contextlib.py", line 210, in __aenter__
    return await anext(self.gen)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/k8ie/.local/share/pipx/venvs/flatpak-node-generator/lib/python3.12/site-packages/flatpak_node_generator/requests.py", line 24, in _open_stream
    async with session.get(url) as response:
  File "/home/k8ie/.local/share/pipx/venvs/flatpak-node-generator/lib/python3.12/site-packages/aiohttp/client.py", line 1197, in __aenter__
    self._resp = await self._coro
                 ^^^^^^^^^^^^^^^^
  File "/home/k8ie/.local/share/pipx/venvs/flatpak-node-generator/lib/python3.12/site-packages/aiohttp/client.py", line 696, in _request
    resp.raise_for_status()
  File "/home/k8ie/.local/share/pipx/venvs/flatpak-node-generator/lib/python3.12/site-packages/aiohttp/client_reqrep.py", line 1070, in raise_for_status
    raise ClientResponseError(
aiohttp.client_exceptions.ClientResponseError: 404, message='The specified blob does not exist.', url=URL('https://playwright.azureedge.net/builds/firefox/1440/firefox-ubuntu-18.04.zip')

That looks like it's trying to pull binaries for the development dependencies. Playwright is used for automated testing.
tangent-test-workspace-generator is just a different tool in the mono-repo. Hopefully you should be able to ignore it?
After doing some poking around, you might be hitting this issue?

Yes, that seems to be it exactly. Nice find.
Regarding tangent-test-workspace-generator, I think it was moved at some point to a different directory but not updated in the package-lock.json file. If you take a look at that error message, it was looking for it in packages/tangent-test-workspace-generator, but in the repo it's located in the apps folder.

Ah! I should probably do a package update to refresh package-lock.json.

If you do so, could you please backport it to the tangent-v0.7.6 tag? Or perhaps create a new one for that like tangent-v0.7.7.

Hmm.. would it be kosher to move ahead with the v0.8.x version as a test case and release on Flathub when v0.8 is ready?

They only have a policy that says no unstable releases, so I'd say yes. We can work with 0.8.x and release the package along with 0.8.

I was kinda hoping they would have fixed that error in flatpak-node-generator by now, but they didn't. So I'm running a modified copy that includes the fix.
After manually removing the missing packages/tangent-test-workspace-generator package, the command passed and generated the file needed for the Flatpak builder.

Alright, I've run into another thing.
Every time I try to build the Flatpak, I get to bwrap: Can't chdir to /run/build/tangent/main: No such file or directory after checking out the submodule.
I tried building https://github.com/flathub/electron-sample-app as well, but I get the same result.
I've also tried to build the Flatpak in a privileged Docker container to make sure this isn't an issue specific to Arch or my system install.
The only related issue I was able to find is https://github.com/flathub/com.visualstudio.code-oss/issues/78, but that's pretty old and was solved by using a newer flatpak-builder version. I'm already using the latest one. I've also tried using the flatpak-builder Flatpak instead of the Arch package, but the result is the same.

Nevermind, that issue was caused by the subdir: main statement in the Flatpak manifest. Removing it gets me a little further.

I have great news, I was finally able to build and run Tangent in a Flatpak!
Now it's just a matter of going through the Flathub guidelines and making sure it passes them. I'll post a link to the Flatpak packaging repo here once it's at least somewhat ready.

I was also able to test Tangent on a mobile phone. I couldn't before because it runs Alpine and Alpine doesn't exactly see eye-to-eye with AppImages. Likely because it uses musl.
Now with the Flatpak it works flawlessly. Tangent even scales down pretty nicely. The note takes up a lot of horizontal space, forcing the user to scroll. Works great in landscape mode tho. Just thought I'd share.

This is awesome news! Thank you for all your hard work!
Using it with a phone is pretty interesting. Try turning down the "min panel width" in the settings. That should help!

I did have to make some changes in this repo as well, I'll open a PR for those.

@taylorhadden Here are the Flatpak sources in their current state, I recommend looking at the Metainfo file, it contains most of the metadata that will be visible on Flathub and in stores.
I wasn't able to find a .desktop file in the main repo, so I made one as well.
The .desktop file and Metainfo are the two main things where I could have made a mistake, I encourage you to check both and let me know it you don't like something.
https://github.com/k8ieone/flathub/tree/new-pr

Here's a preview of how the metadata looks when rendered.

This is super cool! I'll take a look at the description.

@taylorhadden I have one issue to report and that's that the spell-checking doesn't seem to work.
Does Tangent use some kind of system-wide dictionary that could be missing in the Flatpak? I know some programs use the files in /usr/share/dict for example.

Huh, that's odd. It just uses the default Chromium spellcheck system.

Alright, it turns out the spell-checking system automatically downloads the language files needed. This means it needs internet access.
When I initially put the manifest together I disabled networking because I thought an editor probably doesn't need it. Well, I was wrong :sweat_smile:
I'll update the manifest to include network access. After doing this spell-checking works again.

Hmm, we probably also want some flag to disable the built-in auto-update behavior, right? Are you seeing any issues with that?

I thought that this behavior was controlled by the APPIMAGE env variable.
I see this during startup:
APPIMAGE env is not defined, current application is not an AppImage

I'm not sure how the app behaves when it tries to update itself. I haven't seen that happen yet.
But yes, it would make sense to disable auto-updates when running in Flatpak.

@taylorhadden Do you have a plan for the next stable release? If you have a date in mind, keep me posted please. It's possible some new issue may pop up with the new release and I'd like to be ready for it.

Nevermind, I just checked the releases page :smile:
I'll try to get to finishing up the publication as soon as I can.

Flathub PR open! ^^

Thanks for pushing this through! Those files can live in the "build" folder of Tangent. Maybe in "build/flatpak"?
There are some bug fixes that want to get into a 0.8.2, so no worries there.

Done!

Seems like we're blocked until Electron is able to fix this https://github.com/electron/electron/issues/43819
Either we wait for this to get resolved or we use an older version.

@taylorhadden Seems like the fix isn't going to get backported to older versions of Electron any time soon. Is there any significant amount of work that would need to be done to use Electron 34 when it releases?

I wouldn't expect it to be a problem. Electron updates have been largely painless. In fact, I think they've fixed some contenteditable issues for me.

Awesome, I'd rather wait for 34 to release instead of downgrading it just to pass on Flathub. But it's your project, so this decision is up to you. We could find a working version in the issue report, a few were mentioned as working.

Given that my last upgrade fixed some other bugs, I don't really want to downgrade. I'm okay waiting on 34.


feat: new compile-time auto instrumentation

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


RFP - BS Player

On recommendation from Google groups and admins here, I'm reposting the request:
Hi!
Let me first say, that Chocolatey is one of the best apps ever made. I use it personally and also recommend to all my friends and family. I only would like to have some more programs added to the pages. I would love to have:
BSPlayer: http://bsplayer.com/
Thanks for anything,

As mentioned in issue #157 I will work on getting a package for this up today.

@AdmiringWorm please put this back to "Status: Available For Maintainer(s)" as I am giving up on this project myself, been working on this all day and getting really no where on it. So this is up for someone else to take over on.

has been packaged and pushed on up https://chocolatey.org/packages/bsplayer/
Uninstaller is a little weird as the auto uninstaller tries to uninstall the package as well, so there ends up being a silent uninstall and then a non-silent one (if you answer yes on the auto uninstall) if you answer no on the auto uninstaller then it will only do the silent one. Doesn't seem to matter if yes or no is chosen as package/program is still uninstalled in the end either way and the package is deleted without any errors.

Package has been approved


Index signature in object gets ignored

Example Type:
export type ExampleType = {
  id: number
} & Record<`test_data.${string}`, number | string | boolean>

Here test_data.foo is not a valid path in getByPath and will throw a typescript error.

Well this is not actually a error. Path with '.' have to be ignored at the moment, since we can't distinguish between actually accessing a nested object or accessing a property which key contains a '.'.
Any idea for a elegant solution to still allow this? @saibotk

Closing this issue for now, since i see now way to allow properties with dots.

Closing this issue for now, since i see now way to allow properties with dots.


fixed broken anchor

@yegor256/z please, pay attention to this pull request

@ashtonhogan there is a conflict, please fix

Hope this helps!


Test Java 23

Context

Contributor Checklist

[ ] Review Contribution Guidelines.
[ ] Make sure that all commits are signed off to indicate that you agree to the terms of Developer Certificate of Origin.
[ ] Make sure all contributed code can be distributed under the terms of the Apache License 2.0, e.g. the code was written by yourself or the original code is licensed under a license compatible to Apache License 2.0.
[ ] Check "Allow edit from maintainers" option in pull request so that additional changes can be pushed by Gradle team.
[ ] Provide integration tests (under <subproject>/src/integTest) to verify changes from a user perspective.
[ ] Provide unit tests (under <subproject>/src/test) to verify logic.
[ ] Update User Guide, DSL Reference, and Javadoc for public-facing changes.
[ ] Ensure that tests pass sanity check: ./gradlew sanityCheck.
[ ] Ensure that tests pass locally: ./gradlew <changed-subproject>:quickTest.

Reviewing cheatsheet
Before merging the PR, comments starting with

❌ ❓must be fixed
🤔 💅 should be fixed
💭 may be fixed
🎉 celebrate happy things

@bot-gradle test RFR

I've triggered the following builds for you. Click here to see all build failures.

ReadyForRelease build

I've triggered the following builds for you. Click here to see all build failures.

ReadyForRelease build

@bot-gradle test RFR

I've triggered the following builds for you. Click here to see all build failures.

ReadyForRelease build

@bot-gradle test RFR

I've triggered the following builds for you. Click here to see all build failures.

ReadyForRelease build

I've triggered the following builds for you. Click here to see all build failures.

ReadyForRelease build

@bot-gradle test RFR

I've triggered the following builds for you. Click here to see all build failures.

ReadyForRelease build

@bot-gradle test RFR

I've triggered the following builds for you. Click here to see all build failures.

ReadyForRelease build

Java 23 support addressed in:

https://github.com/gradle/gradle/pull/29016


CASMCMS-8284: Fix v2 state generation for staged shutdown

Summary and Scope
Fixes a bug where applying a staged shutdown was trying to write an empty bss token to the staged state area.
Issues and Related PRs

Resolves CASMCMS-8284

Testing
Tested on:

Not yet tested

Test description:
Not yet tested
Risks and Mitigations
None
Pull Request Checklist

[X] Version number(s) incremented, if applicable
[X] Copyrights updated
[X] License file intact
[X] Target branch correct
[X] CHANGELOG.md updated
[X] Testing is appropriate and complete, if applicable
[X] HPC Product Announcement prepared, if applicable

You'll need to update the changelog.


Feature: refactor user profile tabs routing implementation

Type of feature
🍕 Feature
Current behavior
We are currently appending the tabs to the url path
Exp:

highlights -> /user/{username}/highlights
contributions -> /user/{username}/contributions

This solution works... But if we are to put SEO into consideration, A better solution is using URL parameters
Exp:

highlights -> /user/{username}?tab=highlights
contributions -> /user/{username}?tab=contributions

What are the benefits of this approach?

SEO and shareability: URL parameters are more search engine friendly and shareable. Search engines can index individual tab URLs, and users can easily copy and share specific tab URLs.
Browser history: URL parameters modify the URL itself, creating a new entry in the browser history. This allows users to bookmark or navigate back to specific tab URLs.
Server-side rendering:  URL parameters are easier to handle as they can be processed on the server and the appropriate tab can be rendered accordingly.

Suggested solution
Change the current path implementation to urlParams to handle all tabs in the user profile page
Additional context
No response
Code of Conduct

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

Contributing Docs

[X] I agree to follow this project's Contribution Docs

Side note: clicking on tabs does not change the URL right now if you are on the profile page.
Just asking: why the query parameter is better than path parameters? From my understanding query is being used to filter rather than show a specific page.

Side note: clicking on tabs does not change the URL right now if you are on the profile page.

That's most likely a bug

Just asking: why the query parameter is better than path parameters? From my understanding query is being used to filter rather than show a specific page.

Yeah, query parameters are typically used to filter or sort data.
What about SEO?

Note From copilot

In terms of SEO, there is no significant difference between using query parameters or path parameters. Search engines can crawl and index both types of parameters.
However, it's important to note that search engines prefer URLs that are easy to read and understand. Using path parameters can make your URLs more descriptive and easier to read, which can be beneficial for SEO.

I think using ?tab= notation is better in this case and more descriptive since both pages are the same

@OgDev-01 can you pick this one up.

You can give it a shot if you want😊😊


RS422 UART  (IDFGH-2122)

I've been looking through https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/peripherals/uart.html
for support examples of using RS422 UART and I can not seem to find anything.
Has anyone else seen any examples?
Thanks in advance

Rs422 doesn't really need anything special it is just a uart with a differential phy.  There is an rs485 example here https://github.com/espressif/esp-idf/tree/master/examples/peripherals/uart/uart_echo_rs485

thanks for that. am im able to use the ESP to calculate the differential or am i having to add an extra layer (chip) converter in the circuit ?

You need to use a transceiver chip

thats awesome :) any recommendations?

Hi @lildent ,The RS422 is half duplex interface and has two differential lines instead of half duplex RS485 which has one differential line for send and transmit signal. You need specific line driver for this. For example SN65C1168E: http://www.ti.com/lit/ds/symlink/sn65c1168e-sep.pdf
In order to check interface you can use the uart_echo_rs485 example.

@lildent Thanks for reporting. Would you please help check if any updates for the issue? Thanks.

I manage to get a rs422 to TTL and got my issue working on the esp32 :) thanks


Enable Odo test execution on remote cluster

[kind/Feature]

Which functionality do you think we should add?
Odo testsuite execution on a remote OpenShift cluster
Why is this needed?
Sometime test execution on local cluster is painful due to local setup issue. We should keep an option open to run our test on cluster hosted somewhere else.

https://github.com/openshift/odo/pull/1875#issuecomment-511411883


HTTP Endpoint for KOURIER_EXTAUTHZ_HOST

I see in the e2e tests for external authz that a gRPC service is supported. Any idea this will support a HTTP service?
I'd like to use ORY Oathkeeper as the external authenticator and it only exposes an HTTP endpoint for now.

/good-first-issue
We did not have the plan as nobody requested the feature. But I think it makes sense and complicated change is not necessary.
It just needs to add an option and switch the http option here - https://github.com/knative-sandbox/net-kourier/blob/37d366313782ca3ebf7b40166c278610fac72205/pkg/config/ext_authz.go#L97-L103
PR is welcome :pray:

Thank you @nak3. I'll try to understand the code.
According to the Envoy docs either grpc_service (config.core.v3.GrpcService) or http_service (extensions.filters.http.ext_authz.v3.HttpService) should be set.
So I'm assuming there's also going to be some changes here?
https://github.com/knative-sandbox/net-kourier/blob/37d366313782ca3ebf7b40166c278610fac72205/pkg/config/ext_authz.go#L141-L155
I'm very new to this, and barely getting around Knative, Kourier and GoLang. So forgive me if I'm not very helpful.

Yes, I think you are right. Thank you!


write a string matcher for matching pvpchallenges to their corresponding language strings

this is being done manually as needed, so closing


'$' is not defined in google-token.js

it was a useful tutorial, thanks a lot
it worked like a charm with default google setting, but with google-token i get these 2 errors on the console :
torii-providers/google-token.js: line 47, col 16, '$' is not defined.
torii-providers/google-token.js: line 31, col 11, 'client_id' is defined but never used.
2 errors

and the pop-up appears and closes instantly without letting me to login

I assume you are using ember-cli and the error is coming from js-hint. You can access $ as Ember.$ instead. As for the second error you can simply remove that line since client_id is unused.

That part of the tutorial I used jquery which is the $. Include it in your app and it will be resolved. Alternatively do a get request manually

thanks for your answers, i agree about the second error
Frozenfire92: it's already included jquery but still get same error
    <script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
    {{content-for 'head'}}
    <link rel="stylesheet" href="assets/vendor.css">
```
ethanharstad: being new to ember i can't figureout how to use your solution, I tried this : Ember.$.get(...) but got 'Ember' is not defined

What you are experiencing is js-hint getting mad about you not importing the modules that you are using, you can google ES6 modules for more information. Your code should work as it stands if those are the only warnings you are seeing. Jquery ($) is already loaded by ember by the time you try to use it in your authenticator. It is good practice to explicitly import any module you use, which is why js-hint was warning you.
import Ember from 'ember';
at the top of your file will load the ember module, where you can access jquery by doing Ember.$. If you want a nicer name for it you can add
var $ = Ember.$;
after the import statement and then you can refer to jquery as just $.

Did that fix it for you @mohamed3ali ? is this still an issue?

yes it solved the problem, thanks a lot


Add option to canonicalise the version

Context
Fixes #16
Code changes
For all cases, this adds a . between pre_l and pre_n for nodeJS version; this is recommended - see for example the behavior of .inc semver.
The user can also set a configuration flag canonical to True to convert Python package prerelease string to alpha, beta or rc in NodeJS (fallback to using the same string).

I'd generally avoid asking users to pin. If you do, you should commit to releasing v1 after you release v2 for as long as packages are still around pinning to v1. Build backends are fairly likely to need fixes as Python, OSs, etc. all evolve. Pinning it isn't something you can undo, so if you are stuck on a broken version, you are stuck. The Pythonic way to handle this is have a deprecation period & a warning. That doesn't mean users can't pin, but asking them to pin IMO is promising that pin will be supported in the future.

Thanks for the quick review @agoose77

I would take a pragmatic approach here. Although as you mentioned they are all different versions for Node.js. We can assume that a developer is consistent in its format. So there is a low chance it will change the version format in a way that does not change the Python version.
Moreover, if we advice in the documentation to prefer using the CLI hatch version <desired_version> to update the version rather than changing it by hand. There is even less possibilities of errors.

Note: We probably can document that edge case.

I just wanted to drop a line that things are crazy busy right now. I will try and look at this again soon. If this starts to block any Jupyter work, let me know, and I can either bump it in priority, or just bow out of the review.

Friendly ping to agoose77

I remembered that this is still open today. I'll take another look at it soon, and figure out how best to proceed :)

I'm experiment with source from this repo (ipylab). When I run
hatch version major,rc

It currently produces the following:
package.json
"version": "2.0.0-rc0"

_version.py
__version__ = VERSION = '2.0.0rc0'

Notice that the Python version is missing -.
Is the pull request likely to fix this round-trip problem?

@fleming79 could you specify what you'd like to happen here? Python's pre-release segments should not be hyphenated (https://peps.python.org/pep-0440/#pre-releases).

Is it possible to make them identical?

@fleming79 I'm pretty sure the answer is no — the Python (PEP440) and SemVer specifications are incompatible. We support round-tripping by parsing PEP440 versions with a different pattern to SemVer.

@agoose77 . Thank you for considering and the quick response. I guess in this case I could replace r with -r in the Python version to get the JavaScript version. But would it be possible to write the JavaScript version into the _version.py  file (written by Hatch) so that it is easily accessible with Python?

But would it be possible to write the JavaScript version into the _version.py file (written by Hatch) so that it is easily accessible with Python?

It is not needed as the package.json is copied within the Python package (the file is needed for lab extension by JupyterLab). In particular for your case, you can find it at ipylab/labextension/package.json (see the pyproject.toml serach for ensured-targets).
To answer more specifically your need, you can get the JS version in the ipylab/__init__.py with a snippet like:
import json
from pathlib import Path

js_version = None
try:
  HERE = Path(__file__).parent.resolve()
  with (HERE / "labextension" / "package.json").open() as fid:
      data = json.load(fid)
      js_version = data["version"]
except:
   ...

@fleming79 thanks to you @fcollonval, I now understand the potential use case for this. By default, hatch-jupyter-builder (IIRC) bundle any JS assets under site-packages/<PACKAGE>/. You can instruct hatch to do this, e.g. to include the package.json: https://hatch.pypa.io/1.9/config/build/#forced-inclusion
Note that this works because we're asking Hatch to include a file twice, once as part of the Python "package", and once as part of the shared-data. Hatch doesn't let you copy files (at least to my knowledge), so we get two copies only because these are two separate inclusion mechanisms.

Thank you both for your assistance.
Adding the following to the pyproject.toml includes the file in the distribution.
[tool.hatch.build.targets.wheel.force-include]
"ipylab/labextension/package.json" = "ipylab/labextension/package.json"

@fleming79 fab! For the avoidance of doubt, I made a typo in my original reply — you both helped me to figure out what we should do here, it's appreciated.

@agoose77 what should we do with this one? Maybe related to it, would you agree to transfer the owner ship of this to a oss community - like JupyterLab?


Support pages with similar names

Given I have two nested pages

pages/one/foo.js
pages/two/foo.js

And I want to provide different custom page routing configurations for these
Then I expect to write my custom pageConfig like this:
custom:
  serverless-nextjs:
    nextConfigDir: ./
    pageConfig:
      one/foo: #...
      two/foo: #...

But only the page file is used as a name, so I can not provide different configs for these.
I'd propose to use the relative page path as identifier in the custom config.
I'd be happy to provide a PR. But this change would be a braking change with the current API. Please let me know how to proceed.

Might also be fixed by new api proposed in https://github.com/danielcondemarin/serverless-nextjs-plugin/issues/51

@Xiphe feel free to PR! This would be great. If there is any overlap with https://github.com/danielcondemarin/serverless-nextjs-plugin/issues/51 we’ll sort it.

awesome! closing since https://github.com/danielcondemarin/serverless-nextjs-plugin/issues/51 is released now

As an FYI - I'm still planning to support pageConfig which still doesn't use the new page identifiers one/foo, two/foo etc. That would be the breaking change which I'll do at some point later. For now the routes configuration covers most cases where you need custom pageConfig.

Ah, good to know. I'll see if the current change fixes the situation for me and might provide a PR if not. Thanks!


Customize NMDC schema documentation pages to NOT show LinkML todos

Showing todos in the NMDC schema documentation isn't ideal. These are things we should keep internal.
During a metabolink meeting we decided we needed to add todos, but have to put them in the notes so they don't appear in the docs.
Can we update the build of NMDC schema docs to NOT show todos?

@sujaypatil96 when do you think you'd have time to work on this?

@mslarae13 the NMDC schema documentation jinja templates have been customized/modified to not show todos anymore. I think this issue is good to be closed?

@sujaypatil96 I'm still seeing TODOs here: https://microbiomedata.github.io/nmdc-schema/ControlledTermValue/ and here: https://microbiomedata.github.io/berkeley-schema-fy24/ControlledTermValue/ .

Thanks @kheal!! i'll make a PR to update this tomorrow.


Progress Bar freezes

The progress bar will freeze after about 5 seconds, and will not show it updating until you break (CTRL + C) and start the command again.
Any suggestions on how to fix this?
Thanks!

@SteadyStatus21 thanks for your reporting!
Could you tell me your environment?

I am using Windows 10 Home, version 21H2 with a AMD processor.
I am using the latest version in the releases tab, which of 12/31/2021 is v0.0.6 and the filename is pget_windows_amd64.zip.
The bug I encounter is when I use pget, the progress bar freezes and will not continue until I break the command prompt (CTRL + C) and run the same command again.
I am NOT using Go environment, however pget worked before and now does not. There is nothing that caused this besides the program itself, as I rarely update my computer.
Here is a GIF of my Command Prompt:

Thanks,
SteadyStatus21

@SteadyStatus21 Hi!
I update the progress bar library. Could you try again with the latest release? https://github.com/Code-Hex/pget/releases
Unfortunately, I don't have windows 10. So I need your help :bow:
Thanks

Hey @Code-Hex! I am glad to help with the development of pget on Windows 10!
I have tried the Ubuntu ISO again, but normally it would run without any errors. However, there is a TLS Handshake Timeout error.
See below GIF for details.

Hope this helps!
SteadyStatus21

@SteadyStatus21 Thanks for your reply.
TLS Handshake Timeout error is another topic in this issue. but let's explain why this error has happened.
The Internet, for example, has what is called bandwidth. It is also present in the internet connection (e.g. 4G, LTE) you are using. There is a maximum amount of bandwidth that can be connected at the same time, and you're probably getting more than that at the same time. (The option you are running is -p 1024, so you are using 1024 connections at the same time.)
If this amount is exceeded, the machine will perform scheduling for each connection. The more connections there are, the more scheduling processes occur, and the more machine resources start to be exhausted. This will happen both on your machine and on the server where the image will be distributed.
In other words, the more connections you have when you exceed a certain number of connections, it will be slower your download speed. I plan to remove the -p option in the future and use pget to assign the suitable number.
Currently, I can recommend a number such as -p 6. (I don't know the TCP window size of your machine, so this is just a guess) 1024 is almost the same as attacking the other server.
If you get the same error with -p 6, please raise the issue again with that purpose.
Thank you.

Ah, I was using too many processes at the same time! Thank you! It seems that I overwhelmed my router and it blocked it because it thought I was trying to DDOS another server. Thank you and sorry about that 😅
SteadyStatus21


CI: Move all unit tests to test/unit

Change-type: patch
Signed-off-by: Josh Bowling<EMAIL_ADDRESS>

@balena-ci I self certify!


ignore_malformed parameter on ip_range data_type throws mapper_parsing_exception

Signed-off-by: Andriy Redko<EMAIL_ADDRESS>Description
Allows using ignore_malformed on a mapping for ip_range data type
Issues Resolved
Closes https://github.com/opensearch-project/OpenSearch/issues/1873
Check List

[X] New functionality includes testing.

[X] All tests pass

[ ] New functionality has been documented.

[ ] New functionality has javadoc added

[X] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

start gradle check

In log 3228:
> Task :qa:full-cluster-restart:v1.3.0#oldClusterTest

REPRODUCE WITH: ./gradlew ':qa:full-cluster-restart:v1.3.0#oldClusterTest' --tests "org.opensearch.upgrades.FullClusterRestartIT.testEmptyShard" -Dtests.seed=62097E0829CCE721 -Dtests.security.manager=true -Dtests.jvm.argline="-XX:TieredStopAtLevel=1 -XX:ReservedCodeCacheSize=64m" -Dtests.locale=lv -Dtests.timezone=Europe/Chisinau -Druntime.java=17

org.opensearch.upgrades.FullClusterRestartIT > testEmptyShard FAILED
    org.opensearch.client.WarningFailureException: method [PUT], host [http://[::1]:36423], URI [/test_empty_shard], status line [HTTP/1.1 200 OK]
    Warnings: [Translog retention settings [index.translog.retention.age] and [index.translog.retention.size] are deprecated and effectively ignored. They will be removed in a future version.]
    {"acknowledged":true,"shards_acknowledged":true,"index":"test_empty_shard"}
        at __randomizedtesting.SeedInfo.seed([62097E0829CCE721:2E72A9D0D5F5C8B4]:0)
        at app//org.opensearch.client.RestClient.convertResponse(RestClient.java:346)
        at app//org.opensearch.client.RestClient.performRequest(RestClient.java:320)
        at app//org.opensearch.client.RestClient.performRequest(RestClient.java:295)
        at app//org.opensearch.test.rest.OpenSearchRestTestCase.createIndex(OpenSearchRestTestCase.java:973)
        at app//org.opensearch.test.rest.OpenSearchRestTestCase.createIndex(OpenSearchRestTestCase.java:956)
        at app//org.opensearch.test.rest.OpenSearchRestTestCase.createIndex(OpenSearchRestTestCase.java:952)
        at app//org.opensearch.upgrades.FullClusterRestartIT.testEmptyShard(FullClusterRestartIT.java:670)

It's reported in https://github.com/opensearch-project/OpenSearch/issues/2359.

start gradle check

One of my recent pull requests succeed on 5th attempt only :(


New additional parameter $defaultTenantHasAllowAppDatabaseWrite does not seems to work in case of newdatabase switch

This new additional parameter only seems to be implemented for switching the default database to multi-tenant.
In case of new/clean database this parameter doesn't affect the setting of the default tenant.
See two runs: first one is switching the default database to multi tenat. The second one is using cleandatabase:
New-BCContainer -accept_eula
-containerName $ContainerName
-Auth NavUserPassword
-Credential $credential
-artifactUrl $ArtifactUrl
-imageName $ImageName
-licensefile $LocalLicenseFileName
-updateHosts
-myScripts @("$LocalCollationFileName")
-memoryLimit 20G
-multitenant
-TimeZoneId (Get-TimeZone).id
-copyTables @('Add-in', 'Report Layout', 'Style Sheet')
-additionalParameters @("--env defaultTenantHasAllowAppDatabaseWrite=Y",
                        "--volume ${LocalHostSharePath}:${ContainerHostSharePath}",
                        "--volume ${LocalAddInsPath}:${ContainerAddInsPath}")
NavContainerHelper is version <IP_ADDRESS>
NavContainerHelper is running as administrator
Host is Microsoft Windows 10 Pro - 1903
Docker Client Version is 19.03.13
Docker Server Version is 19.03.13
Removing container bc165
Removing bc165 from host hosts file
Removing C:\ProgramData\NavContainerHelper\Extensions\bc165
ArtifactUrl and ImageName specified
Fetching all docker images
Image myown_16.5.15897.17019:sandbox-16.5.15897.17019-nl already exists
Using image myown_16.5.15897.17019:sandbox-16.5.15897.17019-nl
Creating Container bc165
Version: 16.5.15897.17019-NL
Style: sandbox
Platform: 16.0.15884.16928
Generic Tag: <IP_ADDRESS>
Container OS Version: 10.0.18362.1016 (1903)
Host OS Version: 10.0.18362.1016 (1903)
Using locale nl-NL
Using process isolation
Disabling the standard eventlog dump to container log every 2 seconds (use -dumpEventLog to enable)
Using license file C:\Users\ekeukens\Documents\AL\FpsFameFall\Scripts\BcContainer\4805272.flf
Additional Parameters:
--env defaultTenantHasAllowAppDatabaseWrite=Y
--volume C:\bacpac165:C:\hostshare
--volume C:\bacpac165\Add-Ins:C:\Run\Add-Ins
Files in C:\ProgramData\NavContainerHelper\Extensions\bc165\my:

AdditionalOutput.ps1
Collation.txt
license.flf
MainLoop.ps1
SetupVariables.ps1
updatehosts.ps1
Creating container bc165 from image myown_16.5.15897.17019:sandbox-16.5.15897.17019-nl
e9bad388958a60d9937a6fa96be93cce45b0642da4a05404427a0ac52b456f1a
Waiting for container bc165 to be ready
Initializing...
Setting host.docker.internal to <IP_ADDRESS> in container hosts file (copy from host hosts file)
Setting gateway.docker.internal to <IP_ADDRESS> in container hosts file (copy from host hosts file)
Setting kubernetes.docker.internal to <IP_ADDRESS> in container hosts file (copy from host hosts file)
Setting host.containerhelper.internal to <IP_ADDRESS> in container hosts file
Starting Container
Hostname is bc165
PublicDnsName is bc165
Using NavUserPassword Authentication
Starting Local SQL Server
Starting Internet Information Server
Copying Database on localhost\SQLEXPRESS from CRONUS to tenant
Taking database CRONUS offline
Copying database files
Attaching files as new Database tenant
Putting database CRONUS back online
Removing Database CRONUS from localhost\SQLEXPRESS
Exporting Application to CRONUS
Removing Application from tenant
Creating Self Signed Certificate
Self Signed Certificate Thumbprint F8BC0C8A18F8F085A34E4F721934EE2E73E54145
Modifying Service Tier Config File with Instance Specific Settings
Starting Service Tier
Registering event sources
Creating DotNetCore Web Server Instance
Enabling Financials User Experience
Enabling rewrite rule: Don't rewrite system files
Enabling rewrite rule: Already have tenant specified
Enabling rewrite rule: Hostname (without port) to tenant
Using license file 'c:\run\my\license.flf'
Import License
Copying template database
Copying Database on localhost\SQLEXPRESS from tenant to default
Taking database tenant offline
Copying database files
Attaching files as new Database default
Putting database tenant back online
Mounting Tenant
Mounting Database for default on server localhost\SQLEXPRESS with AllowAppDatabaseWrite = True
Sync'ing Tenant
Tenant is Operational
Creating http download site
Setting SA Password and enabling SA
Creating admin as SQL User and add to sysadmin
Creating SUPER user
Container IP Address: <IP_ADDRESS>
Container Hostname : bc165
Container Dns Name : bc165
Web Client : http://bc165/BC/?tenant=default
Dev. Server : http://bc165
Dev. ServerInstance : BC
Dev. Server Tenant : default
Setting bc165 to <IP_ADDRESS> in host hosts file
Files:
http://bc165:8080/ALLanguage.vsix

WARNING: You are running a container which is 76 days old.
Microsoft recommends that you always run the latest version of our containers.

Container Total Physical Memory is 31.9Gb
Container Free Physical Memory is 12.9Gb

Initialization took 163 seconds
Ready for connections!
Reading CustomSettings.config from bc165
Set TimeZone in Container to W. Europe Standard Time
Creating Desktop Shortcuts for bc165
Container bc165 successfully created

New-BCContainer
-accept_eula
-containerName $ContainerName
-Auth NavUserPassword
-Credential $credential
-artifactUrl $ArtifactUrl
-imageName $ImageName
-licensefile $LocalLicenseFileName
-updateHosts
-myScripts @("$LocalCollationFileName")
-memoryLimit 20G
-multitenant
-UsecleanDatabase
-useNewDatabase
-TimeZoneId (Get-TimeZone).id
-copyTables @('Add-in', 'Report Layout', 'Style Sheet')
-additionalParameters @("--env defaultTenantHasAllowAppDatabaseWrite=Y",
                        "--volume ${LocalHostSharePath}:${ContainerHostSharePath}",
                        "--volume ${LocalAddInsPath}:${ContainerAddInsPath}")
NavContainerHelper is version <IP_ADDRESS>
NavContainerHelper is running as administrator
Host is Microsoft Windows 10 Pro - 1903
Docker Client Version is 19.03.13
Docker Server Version is 19.03.13
Removing container bc165
Removing bc165 from host hosts file
Removing C:\ProgramData\NavContainerHelper\Extensions\bc165
ArtifactUrl and ImageName specified
Fetching all docker images
Image myown_16.5.15897.17019:sandbox-16.5.15897.17019-nl already exists
Using image myown_16.5.15897.17019:sandbox-16.5.15897.17019-nl
Creating Container bc165
Version: 16.5.15897.17019-NL
Style: sandbox
Platform: 16.0.15884.16928
Generic Tag: <IP_ADDRESS>
Container OS Version: 10.0.18362.1016 (1903)
Host OS Version: 10.0.18362.1016 (1903)
Using locale nl-NL
Using process isolation
Disabling the standard eventlog dump to container log every 2 seconds (use -dumpEventLog to enable)
Using license file C:\Users\ekeukens\Documents\AL\FpsFameFall\Scripts\BcContainer\4805272.flf
Additional Parameters:
--env defaultTenantHasAllowAppDatabaseWrite=Y
--volume C:\bacpac165:C:\hostshare
--volume C:\bacpac165\Add-Ins:C:\Run\Add-Ins
Files in C:\ProgramData\NavContainerHelper\Extensions\bc165\my:

AdditionalOutput.ps1
Collation.txt
license.flf
MainLoop.ps1
SetupVariables.ps1
updatehosts.ps1
Creating container bc165 from image myown_16.5.15897.17019:sandbox-16.5.15897.17019-nl
829fd9d4d966903d955db55db9a3c87e921f434114f19311a21fca8068fa767b
Waiting for container bc165 to be ready
Initializing...
Setting host.docker.internal to <IP_ADDRESS> in container hosts file (copy from host hosts file)
Setting gateway.docker.internal to <IP_ADDRESS> in container hosts file (copy from host hosts file)
Setting kubernetes.docker.internal to <IP_ADDRESS> in container hosts file (copy from host hosts file)
Setting host.containerhelper.internal to <IP_ADDRESS> in container hosts file
Starting Container
Hostname is bc165
PublicDnsName is bc165
Using NavUserPassword Authentication
Starting Local SQL Server
Starting Internet Information Server
Creating Self Signed Certificate
Self Signed Certificate Thumbprint 02A6E4860382E96786F59FAC54C457ABC266769F
Modifying Service Tier Config File with Instance Specific Settings
Starting Service Tier
Registering event sources
Creating DotNetCore Web Server Instance
Enabling Financials User Experience
Using license file 'c:\run\my\license.flf'
Import License
Creating http download site
Setting SA Password and enabling SA
Creating admin as SQL User and add to sysadmin
Creating SUPER user
Container IP Address: <IP_ADDRESS>
Container Hostname : bc165
Container Dns Name : bc165
Web Client : http://bc165/BC/
Dev. Server : http://bc165
Dev. ServerInstance : BC
Setting bc165 to <IP_ADDRESS> in host hosts file
Files:
http://bc165:8080/ALLanguage.vsix

WARNING: You are running a container which is 76 days old.
Microsoft recommends that you always run the latest version of our containers.

Container Total Physical Memory is 31.9Gb
Container Free Physical Memory is 13.6Gb

Initialization took 77 seconds
Ready for connections!
Reading CustomSettings.config from bc165
Set TimeZone in Container to W. Europe Standard Time
Creating Desktop Shortcuts for bc165
Stopping ServiceTier in order to replace database
Copying Database on localhost\SQLEXPRESS from CRONUS to mytempdb
Taking database CRONUS offline
Copying database files
Attaching files as new Database mytempdb
Putting database CRONUS back online
Removing Database CRONUS from localhost\SQLEXPRESS
Creating new database CRONUS on localhost\SQLEXPRESS with Collation Latin1_General_100_CI_AS
Copying table [Add-in] from original database
Copying table [Report Layout] from original database
Copying table [Style Sheet] from original database
Copying table [Entitlement] from original database
Copying table [Entitlement Set] from original database
Copying table [Membership Entitlement] from original database
Removing Database mytempdb from localhost\SQLEXPRESS
Starting Service Tier
Synchronizing
Importing license file
Importing License C:\ProgramData\NavContainerHelper\Extensions\bc165\my\license.flf
Creating user admin
Creating User admin
Assigning Permission Set SUPER to admin
Publishing System Symbols
Copy from container bc165 (C:\Program Files\Microsoft Dynamics NAV\160\AL Development Environment\System.app) to C:\ProgramData\NavContainerHelper\Extensions\bc165_System.app
Publishing C:\ProgramData\NavContainerHelper\Extensions\bc165_System.app
App successfully published
Creating Company
Creating company My Company in default
Company successfully created
Publishing System Application
Copy from container bc165 (C:\Applications\System Application\Source\Microsoft_System Application.app) to C:\ProgramData\NavContainerHelper\Extensions\bc165_Microsoft_System Application.app
Publishing C:\ProgramData\NavContainerHelper\Extensions\bc165_Microsoft_System Application.app
Synchronizing System Application on tenant default
Installing System Application on tenant default
App successfully published
Switching to multitenant
Copying Database on localhost\SQLEXPRESS from CRONUS to tenant
Taking database CRONUS offline
Copying database files
Attaching files as new Database tenant
Putting database CRONUS back online
Removing Database CRONUS from localhost\SQLEXPRESS
Exporting Application to CRONUS
Removing Application from tenant
WARNING: The new settings value will not take effect until you stop and restart the service.
Creating Tenant default on bc165
Copying Database on localhost\SQLEXPRESS from tenant to default
Taking database tenant offline
Copying database files
Attaching files as new Database default
Putting database tenant back online
Mounting Database for default on server localhost\SQLEXPRESS with AllowAppDatabaseWrite = False
Sync'ing Tenant
Tenant successfully created
Container bc165 successfully created

True. As the default tenant in this case is created inside new-bccontainer that doesn't get this.
I will fix this in the next version of BcContainerHelper

Shipped in BcContainerHelper 1.0.13-preview256


Cannot set Flood*, JoinTries, and JoinDelay settings via *controlpanel or *status.

http://wiki.znc.in/Configuration#Network
Allows one to try out finetuning their settings in realtime while getting Excess Flood errors, and znc administrators to fix users settings on the fly.

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/26814260-cannot-set-flood-jointries-and-joindelay-settings-via-controlpanel-or-status?utm_campaign=plugin&utm_content=tracker%2F1759&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F1759&utm_medium=issues&utm_source=github).

/msg *controlpanel help setnetwork
<*controlpanel> +============+=================================+===================================================+
<*controlpanel> | Command    | Arguments                       | Description                                       |
<*controlpanel> +============+=================================+===================================================+
<*controlpanel> | GetNetwork | <variable> [username] [network] | Prints the variable's value for the given network |
<*controlpanel> +============+=================================+===================================================+
<*controlpanel> The following variables are available when using the SetNetwork/GetNetwork commands:
<*controlpanel> +=========+=============================================================+
<*controlpanel> | Type    | Variables                                                   |
<*controlpanel> +=========+=============================================================+
<*controlpanel> | String  | Nick, Altnick, Ident, RealName, BindHost, Encoding, QuitMsg |
<*controlpanel> +---------+-------------------------------------------------------------+
<*controlpanel> | Integer | FloodBurst, JoinDelay                                       |
<*controlpanel> +---------+-------------------------------------------------------------+
<*controlpanel> | Double  | FloodRate                                                   |
<*controlpanel> +=========+=============================================================+

JoinTries does seem to be missing.

The division between user vs. network level variables is confusing, I give you that, but JoinTries is there... :)
#461

I see, yes, I am somewhat mistaken.
Here is CP's help set:
(13:27:07) <*controlpanel> ------
(13:27:07) <*controlpanel> Command: Set <variable> <username> <value>
(13:27:07) <*controlpanel> Description: Sets the variable's value for the given user
(13:27:07) <*controlpanel> ------
(13:27:07) <*controlpanel> Command: SetChan <variable> <username> <network> <chan> <value>
(13:27:07) <*controlpanel> Description: Sets the variable's value for the given channel
(13:27:07) <*controlpanel> ------
(13:27:07) <*controlpanel> Command: SetNetwork <variable> <username> <network> <value>
(13:27:07) <*controlpanel> Description: Sets the variable's value for the given network
(13:27:07) <*controlpanel> ------
(13:27:07) <*controlpanel> The following variables are available when using the Set/Get commands:
(13:27:07) <*controlpanel> ------
(13:27:07) <*controlpanel> Type: Integer
(13:27:07) <*controlpanel> Variables: ChanBufferSize, QueryBufferSize, JoinTries, MaxJoins, MaxNetworks, MaxQueryBuffers
(13:27:07) <*controlpanel> ------
(13:27:07) <*controlpanel> Type: Boolean (true/false)
(13:27:07) <*controlpanel> Variables: MultiClients, DenyLoadMod, DenySetBindHost, AutoClearChanBuffer, AutoClearQueryBuffer, Admin, AppendTimestamp, PrependTimestamp
(13:27:07) <*controlpanel> ------
(13:27:07) <*controlpanel> Type: String
(13:27:08) <*controlpanel> Variables: Nick, Altnick, Ident, RealName, BindHost, DefaultChanModes, QuitMsg, Password, Timezone, TimestampFormat, DCCBindHost, StatusPrefix, ClientEncoding
(13:27:08) <*controlpanel> ------

What I did was search for the keyword in variables.  A result like help *nick*
(13:28:33) <Zarthus> help nick
(13:28:34) <*controlpanel> No matches for 'nick'
(13:28:55) <Zarthus> help *nick*
(13:28:55) <*controlpanel> No matches for '*nick*'

does not match the variables for SetNetwork , hence it did not turn up.
That said, I do not see Flood* in here.


retirement initiator

Since we're trying to take out the system initiator as part of the changes to not use User.current_user in retirement can the initiator that is currently set to user get set to the actual userid of the person making the request from the UI? I'm thinking this could happen in process_tasks, since that's the code path from the UI.
Any thoughts, @tinaafitz ?

Closed in favor of https://github.com/ManageIQ/manageiq/pull/18113.


Fix HeavySelect2TagWidget to respect custom attrs and default overrides

@rizumu good catch. Please check the error.
Plus you might want to use:
attrs = super()
defaults = {
    'data-my-attr': True,
    'data-my-other-attr': "foo",
}
defaults.update(attrs)
return defaults

@codingjoe I fixed the broken test by setting the default value on self.attrs before calling super. I also added a test to ensure custom attrs take precedence and squashed my commits.

hey @rizumu, do you set self.attrs why not just update the super response?
Sorry it took so long I was on vacation.

self.attrs.setdefault('foo', 'bar')
return super()

vs.
attrs = super()
attrs.setdefault('foo', 'bar')
return attrs

@codingjoe In there lies the bug that is being fixed here. The default needs to be set before calling super, otherwise it isn't a default that overrides defaults further down the chain. Since this is the highest level class that would be imported, we want to use its default before checking if a parent class has a default set for the same attribute.

In other words, if setdefault is called after getting attrs from super, and super defines its own default, then the default in the current method would be ignored, cause it is already set by super.
See: https://github.com/applegrew/django-select2/blob/master/django_select2/forms.py#L83

Released in 5.2.1


Major Refactor

This PR majorly reorganizes the codebase.
It includes all the dev tools for working with code base in package.json. Now the project can be built using npm run build and npm should take care of installing all the required tools. rollup is used as a bundler, so now the project is separated into different files for nicer organization.
The project is rewritten in a more reactive/functional style. Basically regular functions are preferred over methods. One benefit of this no longer having to remember to do .bind(this) when creating callbacks. A wrapper is used for settings and profileMap that automatically saves them to disk when updated.
In general the long and scary looking functions have been decomposed into simpler parts that should hopefully be easier to work with. Some code duplication has been refactored into function calls.

As a side note, the use a bundler also means that external dependencies can be used with less hassle. There's 2 features that I thought might want this:

Storing PK tokens e.g. for proper servername support. (This might want to bring in a real secret handling library).
The editing feature I submitted a PR for. (It may require a Mutex library to solve the race condition, I'm not totally sure).

Thanks very much! And apologies again for the delay on recent PR reviews - life's been getting in the way, to say the least. If nothing else, this should make it significantly less of a pain to work on the plugin for those interested.
Considering the extent to which this PR upgrades and reorganizes the codebase, I feel like a considerable version bump may be appropriate here (plus, it presents a good opportunity to actually start upholding SemVer somewhat - no idea what I was thinking with the current versioning scheme, honestly).
Before doing so, I'm open to possibility of merging the other PRs, assuming they can be rebased without too many problems.
Anyway, this mostly looks good to me. I did find a bug which seems pretty trivial - let me try and figure out how GitHub's PR review process works for a change lol


Use nix for caching

This isn't so much an issue as a suggestion for a potential refactor. Basically I'd been thinking of writing my own variant on stack2nix until I saw this one, which actually looks good! The main issue I would see at the moment is that running stack2nix is basically a one-shot that then duplicates the package control in two places - in stack.yaml and in the nix files. It's not clear when these have diverged too much and need syncing, and if the .nix files have been changed, running stack2nix again will simply overwrite them.
An alternative would be to have a multi-stage approach, where we use nix itself to ensure that things are rebuilt at the appropriate times. I envision the workflow as something like this:
stack2nix init

This would do the following:

Check the latest revision of https://github.com/commercialhaskell/all-cabal-hashes/tree/hackage and create a derivation as such:

all-cabal-hashes.json
{
  "owner": "commercialhaskell",
  "repo": "all-cabal-hashes",
  "rev": "xxxx"
}

fetch-repo.nix
{ repoFile }:
let
  repo = builtins.fromJSON (builtins.readFile repoFile);
in builtins.fetchTarball {
     url = "https://github.com/${repo.owner}/${repo.repo}/tarball/${repo.rev}";
   }

Check the latest lts-haskell and do the same.
Create a derivation for stackage:

let
  extract-resolver = { stackYaml } :
    runCommand "extract-resolver" { nativeBuildInputs = [ stack2nix ]; }
      '' stack2nix extract-resolver ${stackYaml} > $out'';
  stackage = { resolver, allCabalHashes, ltsHaskell } :
    runCommand "derive-stackage" { nativeBuildInputs = [ stack2nix ]; }
      '' mkdir -p $out
        cd $out
        stack2nix derive-stackage --resolver ${resolver} --all-cabal-hashes ${allCabalHashes} --lts-haskell ${ltsHaskell}
      ''

Create a derivation for local packages (taking stack.yaml as an input)
Create empty override.nix files to allow the user to make modifications atop these packages.
Create a simple default.nix which would import the result of the stackage and local builds.

When a user then does something like nix-build -A <pkgname>, the relevant expressions get re-derived and stored in the nix store, or simply retrieved if the inputs haven't changed.
This has the following benefits:

stackage only gets re-derived when the resolver changes.
https://github.com/4e6/stack2nix/issues/4 and https://github.com/4e6/stack2nix/issues/3 get solved automatically, since these become artifacts in the nix store. Also https://github.com/4e6/stack2nix/issues/13 gets solved.
Local packages get re-derived whenever the stack.yaml changes.

I think also that all of the difficult components of this are already done in stack2nix, so it should be relatively easy to do. I'm very happy to work on it if you think it's a reasonable direction to take!

This could be useful, but I don't think this should be implemented as a part of this project. Mixing in a state management would complicate things a lot (you know, caching and naming things). Also, stackage2nix does not duplicate build definition, I like to think of it as a function that translates Stack build definition into Nix. And I want to keep the property of idempotence when with fixed inputs we get the same output.
Also, I believe the problem of managing (fixing) inputs can be done separately using pure Nix. The only thing is missing is the ability to generate stackage packages (packages.nix and configuration-packages.nix) and package overrides (default.nix) separately. This could be done by adding a couple of configuration flags, in a much less invasive way.
What you can do now is to create such proof of concept build definition manually in Nix, as an example of stackage2nix usage. And then it would be more clear if stackage2nix can adapt something from it.

Makes sense, and I had started thinking the same way about splitting this functionality out. I'll work on that and raise separate issues for allowing generation of stackage and project packages separately.


Bump pylint version to unify across elements

Summary
This commit bumps the pinned versions of pylint and astroid to the
latest versions of both. We are unifying the version of both used in CI
across all the elements to these versions to have a consistent
experience with the linters when working across the elements.
This adjusts the terra code to make the newer versions pass. This
involves disabling one rule globally because it doesn't apply to how
terra is structured, adding per file (and 1 per line) disable for usage
of numpy that pylint can't track because of the c extensions, and a
number of code changes to fix failing rules which are marked by the new
version.
Details and comments
Fixes #3629

I'm sort of trusting the additional disables, but everything LGTM! Will approve after the a, b / b, a kraus op thing gets updated


b volunteer event signup

What changes are included in this PR?

Instructions to test changes:

Images (if applicable)
closes #99

ALSO PLZ CHANGE THE PR TITLE AND DESCRIPTION