Add function to inspect the available data

Would be nice to have a function that inspects the product directory, in order to expose to the user only the groups that are effectively available.

Is this still valid? We now check whether the annotation file is present and, if not, we remove the corresponding ssubswath.

@corrado9999 yes this is in main since some time. @aurghs I close this one as well.


Add Webassembly backend

Feature
Add a Cranelift backend that compiles to Webassembly.
Benefit
This would allow a compiler to run in the browser and compile code to run in the browser.
Implementation
No plan yet
Alternatives
Not adding a Webassembly backend.

One of the possible usecases would be to compile rustc to webassembly and then let it produce webassembly modules using cg_clif.

One of the possible usecases would be to compile rustc to webassembly and then let it produce webassembly modules using cg_clif.

This would be awesome, another use case might be implementing custom compiler frontends for custom languages that could then compile to wasm!

I'm working a Java Virtual Machine implementation in Rust and one of my plans is to write a WASM backend along with a general JIT implementation using Cranelift, and if everything were unified to just be Cranelift that would be great. I might give creating a WASM backend a shot, would benefit my project as well as Cranelift

I would be interested in implementing this!
I had a look, and I'm not sure where the correct place to implement this would be. My thought was in cranelift_codegen::isa, however the MachBackend trait seems to reply upon the existence of registers in the target architecture (which makes sense, but WebAssembly is sort-of a stack machine). Would it make sense to emulate registers by using WebAssembly locals, or is that a bad idea?

Wasm is a fundamentally different architecture from all other supported architectures in that it is a stack machine rather than a register machine, it uses structured control flow rather than arbitrary jumps, allows more than one memory, ... For this reason I think you should avoid using the existing backend infrastructure. One possible implementation method would be to have an implementation of the Module trait from cranelift_module in a separate crate and then write the lowering from clif ir to wasm bytecode in this crate.

Indeed, this would best be structured as a separate framework that consumes Cranelift's IR, I think.
There are lots of resources you could look at for the various parts; the Stackifier algorithm to start with, to recover structured control flow, and then some scheme to map operators back to stack code using locals where necessary (a sort of combined regalloc and instruction-scheduling problem: reordering operators can let you use the stack directly).
We'll need to decide what we do about runtime-specific implementations of Wasm memories, tables, globals, and imports as well. Traditionally Cranelift has these bits filled in by the "environment", and our embedding (Wasmtime, Lucet, SpiderMonkey, something else) fills in some IR that uses e.g. machine-native pointers to implement Wasm memory/table accesses. If we compile back to Wasm, should a table just become a table, and a memory become a memory? Probably, but this will require some careful thought in the frontend/environment too. Possibly we add new IR operators (primitives) and just lower table.get 1-to-1 to this primitive, then back to table.get in the backend.
FWIW, I have a little side-project (waffle) that is attempting to be a Wasm-to-CFG-of-SSA-to-Wasm framework, which might be useful to look at to see what it takes to compile SSA IR with blockparams back to Wasm. (It kind of works: it roundtrips a hello-world, but has some bugs beyond that. Side-project, no guarantees, etc!)

There are lots of resources you could look at for the various parts; the Stackifier algorithm to start with,

https://docs.rs/relooper/latest/relooper/ might be a good way to easily implement this (I believe it actually implements the stackifier algorithm even though it's called relooper)

There are lots of resources you could look at for the various parts; the Stackifier algorithm to start with, to recover structured control flow, and then some scheme to map operators back to stack code using locals where necessary (a sort of combined regalloc and instruction-scheduling problem: reordering operators can let you use the stack directly).

I'm not sure how regalloc could be used to translate operators to stack code. Would you mind elaborating (a link to something explaining the idea would be great if you have one).
My thoughts were that this should be done by recursively inserting WebAssembly instructions to compute Values.
So something like:
function instruction_code()
  for each operand
    instruction_code(operand)
  code to push result onto stack (apply operator and then push)

There are lots of resources you could look at for the various parts; the Stackifier algorithm to start with, to recover structured control flow, and then some scheme to map operators back to stack code using locals where necessary (a sort of combined regalloc and instruction-scheduling problem: reordering operators can let you use the stack directly).

I'm not sure how regalloc could be used to translate operators to stack code. Would you mind elaborating (a link to something explaining the idea would be great if you have one).
My thoughts were that this should be done by recursively inserting WebAssembly instructions to compute Values.
So something like:
function instruction_code()
  for each operand
    instruction_code(operand)
  code to push result onto stack (apply operator and then push)

That scheme is a good start, and works for tree-shaped code, but not DAG-shaped code: as soon as an operator (SSA value) is used more than once, you either need to recompute it or store it in a local and then reload it at each use-site.
The use of locals to store SSA values is the register allocation problem -- with a range of solutions, from a "one local (register) per SSA value" approach up to more sophisticated approaches that reuse locals. Given Wasm engines' limits on locals, and given the way that baseline Wasm compilers allocate separate stack slots for each local (leading to huge stackframes if we are not frugal with locals), we probably want to do something better than one-local-per-value.
The reason I described this as a "combined regalloc / instruction scheduling problem" is that the two are intertwined. Once we've decided to use locals to carry values, we could do the simplest thing and emit local.get for every operand, then the operator, then local.set. But that's also inefficient; we want to use the stack when we can. So the order of operators matters. Your scheme (recursive value generation) is actually doing implicit code-motion in order to take advantage of stack dataflow (by sinking operators to use-sites), which is great, and what we want. But we have to be careful about it for two reasons:

Some operators have side-effects, so we have to be careful about moving them. We can slide them over pure operators but not other side-effecting operators. (Trapping is a side-effect too, so this is not just for loads/stores/calls.)
When a value is used more than once, we need to choose a location to compute it that dominates all of its use-sites. We can't, for example, just generate it onto the stack on demand the first time it's used then save it in a local for later times -- consider when two branches of an if-else use a value computed before the control-flow split.

In the most general form of the problem, we could also consider rematerialization: some operations (such as, e.g., i32.iconst 0) are trivial to compute and so it would probably not be a good idea to compute this once at the top of the function (GVN will often dedup constants like tihs) and store it in a local thereafter. Rematerialization can be considered part of the regalloc problem (because a regalloc might not want to spill and remat is then an option) and some regalloc implementations can do this; one can also do it in a more ad-hoc way in the code one generates prior to allocating registers.
A scheme that  might work is to "treeify" the operands before generating code. Basically each operand of an operator could then be:

SingleUse(Value): We are the only use of the value, and the operator that produces it is pure, so it will be generated in-place on the stack (your scheme);
NormalUse(Value): We are one of several uses of the value; it should be generated into a local at its original location in the program, then loaded here; or
Rematerialize(Value): We replicate the operator here. Used for pure ops like iconst only.

So one would generate ops in original program location if used by a NormalUse elsewhere, and otherwise only at the use-site. This would result in code that then refers to values, which we can subsequently do register allocation over to assign to locals.
There's not really a good document on this that I know of; it's just applications of general concepts (regalloc, remat, instruction scheduling) to a specific and somewhat odd target. We're inventing as we go here. That said it'd probably be good to understand how e.g. LLVM's Wasm backend does this; I haven't really looked at the dataflow side (just the stackifier).
Anyway hopefully this helps!

That scheme is a good start, and works for tree-shaped code, but not DAG-shaped code: as soon as an operator (SSA value) is used more than once, you either need to recompute it or store it in a local and then reload it at each use-site.
The use of locals to store SSA values is the register allocation problem -- with a range of solutions, from a "one local (register) per SSA value" approach up to more sophisticated approaches that reuse locals. Given Wasm engines' limits on locals, and given the way that baseline Wasm compilers allocate separate stack slots for each local (leading to huge stackframes if we are not frugal with locals), we probably want to do something better than one-local-per-value.
The reason I described this as a "combined regalloc / instruction scheduling problem" is that the two are intertwined. Once we've decided to use locals to carry values, we could do the simplest thing and emit local.get for every operand, then the operator, then local.set. But that's also inefficient; we want to use the stack when we can. So the order of operators matters. Your scheme (recursive value generation) is actually doing implicit code-motion in order to take advantage of stack dataflow (by sinking operators to use-sites), which is great, and what we want. But we have to be careful about it for two reasons:

Some operators have side-effects, so we have to be careful about moving them. We can slide them over pure operators but not other side-effecting operators. (Trapping is a side-effect too, so this is not just for loads/stores/calls.)
When a value is used more than once, we need to choose a location to compute it that dominates all of its use-sites. We can't, for example, just generate it onto the stack on demand the first time it's used then save it in a local for later times -- consider when two branches of an if-else use a value computed before the control-flow split.

In the most general form of the problem, we could also consider rematerialization: some operations (such as, e.g., i32.iconst 0) are trivial to compute and so it would probably not be a good idea to compute this once at the top of the function (GVN will often dedup constants like tihs) and store it in a local thereafter. Rematerialization can be considered part of the regalloc problem (because a regalloc might not want to spill and remat is then an option) and some regalloc implementations can do this; one can also do it in a more ad-hoc way in the code one generates prior to allocating registers.
A scheme that  might work is to "treeify" the operands before generating code. Basically each operand of an operator could then be:

SingleUse(Value): We are the only use of the value, and the operator that produces it is pure, so it will be generated in-place on the stack (your scheme);
NormalUse(Value): We are one of several uses of the value; it should be generated into a local at its original location in the program, then loaded here; or
Rematerialize(Value): We replicate the operator here. Used for pure ops like iconst only.

So one would generate ops in original program location if used by a NormalUse elsewhere, and otherwise only at the use-site. This would result in code that then refers to values, which we can subsequently do register allocation over to assign to locals.
There's not really a good document on this that I know of; it's just applications of general concepts (regalloc, remat, instruction scheduling) to a specific and somewhat odd target. We're inventing as we go here. That said it'd probably be good to understand how e.g. LLVM's Wasm backend does this; I haven't really looked at the dataflow side (just the stackifier).
Anyway hopefully this helps!

Thanks so much!

I have started to implement something in: https://github.com/teymour-aldridge/cranelift_codegen_wasm
Unfortunately there are quite a few bugs and many things (e.g. data objects, instructions) are not yet supported.

Since I chanced upon this issue again, I'll leave a note that my waffle crate now has a working Wasm compilation pipeline from an SSA-based IR that is very similar to Cranelift's IR. It could serve either as the model for, or as a codegen library for, a WebAssembly backend for Cranelift. It currently requires reducible control flow (will panic when given an irreducible CFG) but this is "just" an implementation question, as the API is based on a standard CFG. The crate has been fuzzed with roundtrip + differential execution and is in a fairly robust state (can roundtrip complex Wasms like SpiderMonkey).
The main challenge that remains is in the semantic gap between Wasm and CLIF: lowering loses information about tables, heaps, globals and the like, and we would need to "lift" CLIF's raw memory accesses back to Wasm-level concepts. That's maybe not so bad though: one could use a "null" environment when lowering the Wasm, leaving heap accesses to memory zero as-is (address computation is the identity function), and then compile accesses to raw memory in CLIF back to accesses to a single Wasm memory. Function pointers (taking the address of symbols) will require some care. Also, CLIF is not exactly 1-to-1 with Wasm opcodes, especially the SIMD ones. But, doable. This is probably a 1-2 month project for someone at this point.

(I'll note too that some of my thoughts above are specific to a "Wasm roundtripping" context, which probably is actually the least interesting application; serving as a backend for something that starts with a native-code model, like cg_clif, is more interesting, and for that the mappings are a little simpler. One raw address space goes to one Wasm memory, and all function pointers are indices into one table, with entries populated as we observe function-address operators. I guess there is just the question of "relocations" for external symbol references.)

I just took a look at waffle, but it seems basically everything necessary to build a module is private. Would it make sense to move the wasm frontend to a separate crate. This way everything the wasm frontend and other frontends need is forced to be public.

I just took a look at waffle, but it seems basically everything necessary to build a module is private. Would it make sense to move the wasm frontend to a separate crate? This way everything the wasm frontend and other frontends need is forced to be public.

Yes, for sure; the crate's API polish hasn't gotten much attention, it was just codeveloped for a single initial purpose (roundtripping with modifications). Happy to discuss further there and/or take PRs from folks :-)

A WebAssembly backend would likely be very useful for projects like Ruffle as well

Hi, thanks for the amazing work! Any plans for this? Really excited for the feature, will allow me to drop wasm-opt as a dependency in lots of my projects 👀 (+ working with cranelift is generally very pleasant!).
@bjorn3

@skyne98 we don't have anyone looking at this right now, and as it's a large engineering project, it's unlikely to be prioritized by the folks who work on Cranelift full-time. That doesn't mean we wouldn't like to have it, just that there are other things that are more important, and time is limited.
As always with an open-source project, I'd be happy to review a PR from anyone who wants this and builds it!

Of course, thanks for the reply, much appreciated! It seems like a project that requires quite a bit of expertise, based on your comments, so I hope someone can pick it up one day! (Or I get confident enough with it to help out 😅).
One quick question, if you don't mind: does running WASM in embedded wasmtime (with optimizations turned on & cranelift) already fully utilizes cranelift's optimization capability? And, also, is there potentially a way I get yonk the optimized IR out of the pipeline to print it and check it?

Wasmtime does turn on Cranelift's optimizations by default, yes (this can be controlled with -O opt-level=N, 0 for off and 2 for all on. You can get unoptimized IR with wasmtime compile --emit-clif; optimized IR could be printed with a similar option, but you'd need to add similar code around here (and handle the cached case somehow?) using logic similar to [this}https://github.com/bytecodealliance/wasmtime/blob/c1741470798dfe3bb8e8273bb35cc11e5299ba64/crates/cranelift/src/compiler.rs#L216-L225). Or, as a hack, println!() it directly at that point.

Would have been nice to be able to pass optional callbacks to hook into different parts of the pipeline 👀


Make font size adjustable

It would be nice to adjust the font size of the letters. I'm using a higher resolution display and it's very hard to make out the letters, especially similar looking ones like 'c' and 'e'.
Thanks!

Looking at the code I think this can be changed here https://github.com/wmaurer/vscode-jumpy/blob/master/src/jumpy-vscode.ts#L49

I'll try my hand at doing this myself and creating a PR some time this week.

Actually, there seems to already be a PR for this:
https://github.com/wmaurer/vscode-jumpy/pull/16

As a temporary workaround, until #16 is merged, you can manipulate the implementation in your home directory. It's located in .vscode/extensions/wmaurer.vscode-jumpy-0.3.1/out/src/jumpy-vscode.js

The size should probably follow editor font size by default, now Jumpy's font size seems to be fixed, no matter what the editor font size is.

+1, the small font is the only reason i'm not using it. i'm jumping to often to the wrong place.. :)

@sagg https://github.com/wmaurer/vscode-jumpy/pull/16#discussion_r188930901

To everyone still using this plugin, I've switched over to Ace Jump, and found that it's much better (also has customization font sizes and colors)

You can use Jump instead, it can adjust font size automatically.

You can use Jump instead, it automatically adjusts the font size.


Trainer argument devices will always raise an Exception with arguments accelerator=cpu and devices: list[int]

Bug description
https://github.com/Lightning-AI/pytorch-lightning/blob/3740546899aedad77c80db6b57f194e68c455e28/src/lightning/fabric/accelerators/cpu.py#L75
cpu_cores being a list of integers will always raise an exception, which shouldn't according to the Trainer documentation/this function signature
What version are you seeing the problem on?
master
How to reproduce the bug
No response
Error messages and logs
# Error messages and logs here please

Environment

Current environment
#- Lightning Component (e.g. Trainer, LightningModule, LightningApp, LightningWork, LightningFlow):
#- PyTorch Lightning Version (e.g., 1.5.0):
#- Lightning App Version (e.g., 0.5.2):
#- PyTorch Version (e.g., 2.0):
#- Python version (e.g., 3.9):
#- OS (e.g., Linux):
#- CUDA/cuDNN version:
#- GPU models and configuration:
#- How you installed Lightning(`conda`, `pip`, source):
#- Running environment of LightningApp (e.g. local, cloud):

More info
No response

@MaximilienLC Do you mean this?
trainer = Trainer(
      accelerator="cpu",
      devices=[1, 3],
  )

TypeError: `devices` selected with `CPUAccelerator` should be an int > 0.

This is correct. It does not make sense to select device indices on a CPU. Device indices are meant for accelerators like CUDA GPUs or TPUs.
If you select devices=1 on CPU, PyTorch will already use all cores and threads when appropriate.

If there is documentation that contradicts this, please point me to it so we can update it. Thanks!

https://github.com/Lightning-AI/pytorch-lightning/blob/3740546899aedad77c80db6b57f194e68c455e28/src/lightning/pytorch/trainer/trainer.py#L146
I guess this section could add that info for CPU.
So you mean devices=1 on CPU equates to using all CPUs?

So you mean devices=1 on CPU equates to using all CPUs?

Yes PyTorch will use all CPUs if it can parallelize the operation accordingly.

I am confident this was the issue. Please let me know if it worked.

I agree that this should not throw an exception assuming the current documentation is correct. For example, the device could come from an environment variable
trainer = Trainer(
    accelerator=os.environ.get("DEVICE", "cpu"),
    devices=-1,  # use all devices
)

So when deploying the code to different machines, it would break for CPU. Maybe a warning would be more adequate to notify the user that something is not optimally configured.
Would devices="auto" also use all devices?

Hi! Would like to work on this one.
@awaelchli, wanted to clarify, what is more logical here: change the exception in the case accelerator="cpu", so that it is not thrown for devices equal to -1 (as pointed above), or the current behavior is correct and we only need to add more info to the devices section in the trainer.py docstring?

Humbly I think the solution should be to remove List[int] as an input type for cpu accelerator, @awaelchli please review this PR!


Update cloudwatch, dynamodb, kinesis, s3, sns, ... to 2.16.97

Updates

software.amazon.awssdk:cloudwatch
software.amazon.awssdk:dynamodb
software.amazon.awssdk:kinesis
software.amazon.awssdk:s3
software.amazon.awssdk:sns
software.amazon.awssdk:sqs
software.amazon.awssdk:sts

from 2.16.93 to 2.16.97.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "software.amazon.awssdk" } ]

labels: library-update, semver-patch

Superseded by #716.


Thread 'Supervisor' crashed: AttributeError("'IMapUnorderedIterator' object has no attribute '_write_to'")

Thread 'Supervisor' crashed: AttributeError("'IMapUnorderedIterator' object has no attribute '_write_to'")
Traceback (most recent call last):
File "C:\Users\Oluwaseyi\Anaconda3\lib\site-packages\billiard\pool.py", line 504, in run
return self.body()
File "C:\Users\Oluwaseyi\Anaconda3\lib\site-packages\billiard\pool.py", line 563, in body
pool._maintain_pool()
File "C:\Users\Oluwaseyi\Anaconda3\lib\site-packages\billiard\pool.py", line 1342, in _maintain_pool
joined = self._join_exited_workers()
File "C:\Users\Oluwaseyi\Anaconda3\lib\site-packages\billiard\pool.py", line 1234, in _join_exited_workers
write_to = job._write_to
AttributeError: 'IMapUnorderedIterator' object has no attribute '_write_to'

Please share your command so I can attempt to reproduce.

I do have same issue. I just tried basic "twitterscraper Trump --limit 1000 --output=tweets.json" and also different queries using python as well.

@bluebug565 was you able to resolve the issue?

I have this issue too. can anyone help?


Queries only return the first 10000 rows due to paging.

BigQuery splits pages of results into 10000 by default, regardless of MaxResults.
I have modified the code to allow result set pages to be combined when the result size is > 10000.
The commit is here: https://github.com/greigs/LINQ-to-BigQuery/commit/fced9060853e7b27bfdb8cba34d64a3d706afa81

More information about this: http://stackoverflow.com/a/14807770/1102234

Thank you!
I'll check soon.

Sorry for extreme lated.
I've added.

Today I released 0.6.1 and its included.


Use typedef instead of #define. Use int64_t to be unambiguous.

Fixes blas_int(value) cast when blas_int is long long. Originally:
src/blas_internal.hh: In function 'long long int blas::to_blas_int_(int64_t, const char*)':
./include/blas/config.h:13:39: error: expected primary-expression before 'long'
   13 |         #define blas_int              long long  /* or int64_t */

The cblas wrappers also had an error respecting int64:
test/cblas_wrappers.cc: In function 'void cblas_rot(int, std::complex<float>*, int, std::complex<float>*, int, float, std::complex<float>)':
test/cblas_wrappers.cc:52:9: error: cannot convert 'int*' to 'const blas_int*' {aka 'const long int*'}
   52 |         &n,

Regarding #define use, see https://stackoverflow.com/a/638759/1655607

CUDA failures are from mis-configured CI setup. These previously passed.


test.html the white class not applied

Somebody probably copy pasted blue declaration and forgot to change the css to white I'm seeing two blue buttons but one has a Tiny White Button caption :) Would have sent the PR but GH's fork & edit is somewhat broken for me.

Yup, copypasta fail. Fixed. Thanks!


[Feature]Add coco, lvis and voc dataset download script based on pr #6715

Motivation
Add a script to download coco2017, lvis, voc2007 dataset based on https://github.com/open-mmlab/mmdetection/pull/6715
Modification
Add a python file in tools/misc
BC-breaking (Optional)
This script do not link any other files
Use cases (Optional)
You can use command "python tools/download.py " to download coco2017 dataset.
Linux for using command "python tools/misc/download.py
You can alse use flag --unzip to unzip the zipfiles
such as python tools/misc/download.py  --unzip
Checklist

Pre-commit or other linting tools are used to fix the potential lint issues.
The modification is covered by complete unit tests. If not, please add more unit test to ensure the correctness.
If the modification has potential influence on downstream projects, this PR should be tested with downstream projects, like MMDet or MMCls.
The documentation has been modified accordingly, like docstring or example tutorials.

Add documentation of this tool in docs/en/1_exist_data_model.md and docs/en/useful_tools.md.


$exists should work with index

I was surprised to find that $exists does not work with indices.
For a field that is available only on a small set of documents, using an index to finding these documents quickly makes perfect sense.
Technically, this should not be a problem, since e.g. {$gte: ""} would do the same job for string fields.

There is an open ticket in Mango for this https://issues.apache.org/jira/browse/COUCHDB-2926

Just realized now: Though $exists:true could be handled by index, a $exists:false does not work like this. Not sure whether this would be argument against this.

This issue was moved to pouchdb/pouchdb#6256


Fixed argument names having wrong order for atan2

The arguments of atan2() should be y,x instead of x,y This was just wrong since the internal atan2 already had y,x as parameters, so if you followed the autocomplete your result would just be wrong.

Oh no, not this one again :D
@StraToN Can I let you dig up the relevant discussion issues/PRs? :)

Well if it's just about auto-complete / documentation this change might be correct though.

Yeah this PR doesn't change functionality. Just fixes the visible parameter names

Thanks, looks fine then.


ISTIO- Case sensitive Virtual Service

Hi All , We are using istio in EKS, to access a micro service through istio ingress gateway load balacner, we create gateway and virtual service. But the path we mention in the virtual service in prefix is case sensitive. I have seen some tech notes to use ignoreUriCase: true, but it doesn't worked,
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: otp-service
spec:
hosts:

"*"
gateways:
tls-gateway
http:
match:

uri:
prefix: /otp/verify
uri:
prefix: /otp/generateandsend
route:
destination:
host: webbook
port:
number: 80

ignoreuricase updated yaml.

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: otp-service
spec:
hosts:

"*"
gateways:
tls-gateway
http:
match:

uri:
prefix: /otp/verify
ignoreUriCase: true
uri:
prefix: /otp/generateandsend
route:
destination:
host: webbook
port:
number: 80

This was merged in https://github.com/istio/istio/pull/14304, after 1.2. It will be included in Istio 1.3, relasing in early sept


fix(tap-agent): make RAV table sequelize-friendly

By adding the createdAt and updatedAt columns.
Sequelize is used in indexer-agent, and it needs to access the RAV table to redeem RAVs.
See https://sequelize.org/docs/v6/core-concepts/model-basics/#timestamps

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 7 (100.0%)  changed or added relevant lines in 2 files are covered.
9 unchanged lines in 1 file lost coverage.
Overall coverage increased (+0.02%) to 64.981%

Files with Coverage Reduction
New Missed Lines
%

tap-agent/src/tap/rav_storage_adapter.rs
9
79.75%

Totals

Change from base Build<PHONE_NUMBER>:
0.02%

Covered Lines:
2852

Relevant Lines:
4389

💛  - Coveralls


[fastlane] Add option to generate random password for setup_travis add setup_circle_ci

Checklist

[x] I've run bundle exec rspec from the root directory to see all new and existing tests pass
[x] I've followed the fastlane code style and run bundle exec rubocop -a to ensure the code style is valid
[x] I've read the Contribution Guidelines
[x] I've updated the documentation if necessary.

Motivation and Context

Cloud CI systems should never leak keychain data but it is possible that they could be attacked and keychains without passwords could leak distribution keys. This is a silm chance but genrating one time passwords for each build using these actions would mitigate this risk.
Description

The current default of a empty string has been respected but an option to enable a random password to be created has been added to both setup_travis and setup_circle_ci.

          1 Error

:no_entry_sign:
Tests have failed, see below for more information.

Tests:

Name
File

Fastlane Fastlane::Actions::SetupCircleCiAction#setup_keychain when MATCH_KEYCHAIN_NAME is set skips the setup process
setup_circle_ci_spec.rb

Fastlane Fastlane::Actions::SetupCircleCiAction#setup_keychain Setting up the environment sets the MATCH_KEYCHAIN_NAME env var
setup_circle_ci_spec.rb

Fastlane Fastlane::Actions::SetupCircleCiAction#setup_keychain Setting up the environment sets the MATCH_KEYCHAIN_PASSWORD env var
setup_circle_ci_spec.rb

Fastlane Fastlane::Actions::SetupCircleCiAction#setup_keychain Setting up the environment sets the MATCH_READONLY env var
setup_circle_ci_spec.rb

  Generated by :no_entry_sign: Danger

@milch Hey i have updated the PR following your feedback 👍

Closing due to this not providing much if any additional security


Revoke the first badge of the projects

@MoeNick commented on Mon Sep 12 2022

@CarlosQ96 commented on Mon Sep 26 2022
While I moved all to unit testing, and events arrive from my tests. Sometimes they don't
I talked to Mohammad about rewriting segment library to avoid using their inmemory queue and instead we do it with Bull.
I started on this.

Does this issue need to be tested? I did not understand @CarlosQ96

I'll post the test cases on another issue. This one is more technical.

@CarlosQ96 I commented on the other issue, let's test it. we need configurable cronjob timing and some test cases.


'await' cannot be used in an expression containing the type 'System.ReadOnlySpan'

Describe the bug
When utilizing System.IO.Abstractions for Path.Join, the following code snippet does not compile on .NET 6, however it does when using System.IO Path.Join.
    var path = System.IO.Abstractions.FileSystem.Path.Join("/config/covers", await GetChapterCoverImageAsync(chapterId));
    public async Task<string> GetChapterCoverImageAsync(int chapterId)
        {

            return await _context.Chapter
                .Where(c => c.Id == chapterId)
                .Select(c => c.CoverImage)
                .AsNoTracking()
                .SingleOrDefaultAsync();
        }

public class Chapter {
   public string CoverImage { get; set; }
}

Expected behavior
I expect that the Abstraction works identically to System.IO and it builds and functions correctly.
Additional context
I am using .NET 6 and System.IO.Abstractions 14.0.3

Thanks for reporting @majora2007! Can you share a self-contained reproduction? A tiny snippet like https://github.com/TestableIO/System.IO.Abstractions/issues/713#issue-825136188 is totally fine.

@fgreinacher
I just wrote a small .NET 6 program:
Program.cs:
using AbstractionsReproductionTest;

Console.WriteLine("Hello, World!");

var p = await new GetTest().Path();
Console.Write(p);

GetTest
using System.IO.Abstractions.TestingHelpers;

namespace AbstractionsReproductionTest;

public class GetTest
{
    public async Task<string> Path()
    {
        return new MockFileSystem().Path.Join("/config/covers", await GetPath());
    }

    private async Task<string> GetPath()
    {
        return await Task.Run(() => "Hello");
    }
}```
![image](https://user-images.githubusercontent.com/735851/145247525-fd98170e-1c47-4201-994e-550e84f02b3a.png)

Thanks a ton for sharing the repro!
I could reproduce and it seems the root cause is that we're missing the string overloads for Path.Join(), causing overload resolution to pick the ReadOnlySpan<char> overloads as next best candidates.
To fix this we need to add the missing overloads. Happy to accept a PR, otherwise I'll take care in the next couple of days.

Hi, love the project, it just gave me a headache this afternoon!
The fix doesnt work for .net Core 3.1,
This is no longer a significant issue for me as I have just updated to .net5.0 to workaround the problem but it might occur for others so I thought I should raise an issue:
The fix appears to only apply to FEATURE_PATH_JOIN_WITH_PARAMS which supports the following targets:

I'm having this issue with .net Core 3.1 but you can see from the link below that it should support Join(string path1, string path2)
https://docs.microsoft.com/en-us/dotnet/api/system.io.path.join?view=netcore-3.1#system-io-path-join(system-string-system-string)


fix(tier4_perception_launch): fix input twist topic name

Description
Add twist input topic name for concatenate node in obstacle segmentation.

Tests performed

Confirmed that it works with tier4/pilot-auto.x2 (not for AWF, but will do if necessary)
Effects on system behavior

Obstacle segmentation performance should improve.
Pre-review checklist for the PR author
The PR author must check the checkboxes below when creating the PR.

[x] I've confirmed the contribution guidelines.
[x] The PR follows the pull request guidelines.

In-review checklist for the PR reviewers
The PR reviewers must check the checkboxes below before approval.

[x] The PR follows the pull request guidelines.

Post-review checklist for the PR author
The PR author must check the checkboxes below before merging.

[ ] There are no open discussions or they are tracked via tickets.

After all checkboxes are checked, anyone who has write access can merge the PR.

@kminoda Currently, each component of Autoware uses the output of localization for speed.
However, the senisng module is an exception because it is the first stage process of localization, so it uses IMU and vehicle speed as they are.

@yukkysaito Make sense. Then I will change this PR to use the localization output.
(The fix itself is urgent for the project, but could be temporarily handled with manual modification instead of cherry-pick, so no worries)


perf: clean up proto and improve mesgdef

clean up proto.Field's Size since no longer used
improve mesgdef, now use fields pool, a backed array for slicing, instead of counting size before creating the slice.

benchstat:
goos: darwin
goarch: amd64
pkg: github.com/muktihari/fit/profile/mesgdef
cpu: Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz
         │ record_gen_old.txt │       record_gen_new.txt       │
         │       sec/op       │    sec/op     vs base          │
ToMesg-4         968.3n ± 24%   959.3n ± 20%  ~ (p=0.912 n=10)

         │ record_gen_old.txt │        record_gen_new.txt         │
         │        B/op        │    B/op     vs base               │
ToMesg-4           360.0 ± 0%   352.0 ± 0%  -2.22% (p=0.000 n=10)

         │ record_gen_old.txt │         record_gen_new.txt         │
         │     allocs/op      │ allocs/op   vs base                │
ToMesg-4          11.000 ± 0%   9.000 ± 0%  -18.18% (p=0.000 n=10)

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (fda586c) 100.00% compared to head (73001f5) 100.00%.

Additional details and impacted files
@@            Coverage Diff            @@
##            master       #64   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           25        25
  Lines         3007      3007
=========================================
  Hits          3007      3007

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


Add lint rules for imports

Change List

Upgrade ocular-dev-tools
Forbid modules from importing extraneous dependencies except: @luma.gl/core, @luma.gl/constants, math.gl, viewport-mercator-project
Fix missing dependencies

Coverage remained the same at 58.982% when pulling aec02fc1002a240541cb777c036a7eefe5994776 on import-lint into 7c693e7b1bd7bdc3d0d77cd031b3e33ccd6729dc on master.

Coverage remained the same at 58.982% when pulling aec02fc1002a240541cb777c036a7eefe5994776 on import-lint into 7c693e7b1bd7bdc3d0d77cd031b3e33ccd6729dc on master.


Removed large margin on right side of API frame

Maybe a scroll bar at the bottom should also be enabled when resizing?


Revision

May be a duplicate of #683
Would like brainstorming around revision and how this could be solved today or with a new enhancement.
I have several users that are human, and they as I will make mistakes. I need a way to revert changes done to "anything" so that when another user or me finds an faulty registration, we could change back and do the proper update.
Is this something I could implement in the existing version? (in postgres, django, a routine or php?)

This feature could be implemented using
https://github.com/etianen/django-reversion
I used it in the past and it is flexible enough to achieve very powerful
results.
On Fri, Dec 30, 2016, 14:47 john-arvid<EMAIL_ADDRESS>wrote:

May be a duplicate of #683
https://github.com/digitalocean/netbox/issues/683
Would like brainstorming around revision and how this could be solved
today or with a new enhancement.
I have several users that are human, and they as I will make mistakes. I
need a way to revert changes done to "anything" so that when another user
or me finds an faulty registration, we could change back and do the proper
update.
Is this something I could implement in the existing version? (in postgres,
django, a routine or php?)
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/digitalocean/netbox/issues/758, or mute the thread
https://github.com/notifications/unsubscribe-auth/ABfg5ioV7PXMM_4iM1c047D8LHq5NHmSks5rNV_DgaJpZM4LYW9r
.

I looked into the possibility of using django-reversion early on in the development of NetBox. Unfortunately, it's not well-suited for a data model so complex as what we have.
For example, suppose a user deletes a device, and then some time later wants to restore it. We'd need to validate not on the device object, but all of its related connections, addresses, rack space, etc. and have a plan to elegantly handle every potential conflict. It'd be an amazing feature, for sure, but it's not something that we can dedicate effort to in the near future.


chore(deps): updates deps

and dev deps

Codecov Report

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

@@          Coverage Diff          @@
##           master    #95   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files           1      1
  Lines          20     20
  Branches        2      2
=====================================
  Hits           20     20

Continue to review full report at Codecov.

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


menu editor

Command field doesn't appear when adding a new CMNU/cmnu item (can only see it after closing and reopening the editor).

Hmm… not seeing that one here. Maybe that was just a side effect of the exception thrown when the mdefID exception ocuured?

OK, should all be fixed now.
BTW, I spotted some weird occurrences of the string "KestrelTools" in the pbxproj entries for two of the Nova editors that seem like at least one of them should have a different one, but they seem to be unused. For safety's sake (in case they make them share a cache based on this name, or so) I've changed them for the menu and dialog editor to be unique.

OK, this time stuff should be done.


Run tests on save

Current dependencies on/for this PR:

main

PR #11   👈

PR #30

This comment was auto-generated by Graphite.


Zip doc

This PR fixes a bug introduced by gh-1601
In this PR, a new ant target is introduced:
From the top directory:

ant zip  -Domero.release="5.3.0-m8" will generate the html doc for omero and contributing
and create a OMERO.doc-5.3.0-m8.zip under omero/_build
ant  -Domero.release="5.3.0-m8" will generate the same output as ant zip  -Domero.release="5.3.0-m8".  zip is now the default instead of html
ant html will now only create the html doc i.e. behaviour before gh-1601

From the omero directory:

ant zip  -Domero.release="5.3.0-m8" will generate the html doc for omero and create a OMERO.doc-5.3.0-m8.zip under omero/_build
ant  -Domero.release="5.3.0-m8" will generate the same output as ant zip  -Domero.release="5.3.0-m8".  zip is now the default instead of html
ant html will now only create the html doc i.e. behaviour before gh-1601

From the contributing directory:

ant zip  -Domero.release="5.3.0-m8" will generate the html doc for contributing and create a CONTRIBUTING.doc-5.3.0-m8.zip under contributing/_build
html is kept as the default i.e. ant and ant html produce the same output

cc @hflynn

Works as expected locally - zips not build by default and when built are within correct directory and named correctly.

Not sure how I check the jenkins builds?

@hflynn I have now adjusted  the OMERO-DEV-merge-docs job to generate the zip
see https://ci.openmicroscopy.org/job/OMERO-DEV-merge-docs/601/
I will update the other job
We may want to make a "downloadable" artifacts.

https://ci.openmicroscopy.org/view/Docs/job/OMERO-DEV-merge-docs/602/ you can now download the zip

👍 Zip artifact in the job looks good, merging for the milestone release so we can check the downloads page.


Show "waiting" symbol / disable controls during certain operations

During layout
During expected-to-be-intensive coloring / drawing operations? (#132)
During animations (https://github.com/biocore/empress/issues/195)

Brought up by @antgonza in #375:

When changing layouts it would be good to change the cursor to a waiting/processing pointer and ignore all interactions as a user (me) can continue clicking and changing layouts until the browser brakes

I think it would make sense to have a minimum tree size where this starts being triggered -- for small trees these precautions (or at least the waiting symbol) won't be necessary, but once we get up to say > 100k tips it may be worth adding this stuff in.
It would probably be best to set up reusable functions to enable / disable stuff, similarly to how parts of #319 work. This problem also came up during MetagenomeScope's development; I wound up using smooth transitions between the enabling/disabling operations there, since they were happening so quickly for small datasets I was worried it was gonna be a photosensitivity problem.

 As part of this issue, it'd be good to (while searching is happening) disable the canvas events, or at least the clicking ones.


[v6] InitialValues being reset on mount

Hey @erikras.
I'm working on a  form where I need partially-filled values to remain in state when the user navigates away and comes back later. The page is decorated with reduxForm(), with destroyOnUnmount set to false. I have the page hooked up to my redux store, which is supplying data for defaultValues()
The strange behavior I'm noticing is reproduced as follows:

navigate to the form page. Initialize fires and initial values are displayed
Fill in some values, dirtying the form
navigate away
navigate back to the edited page
initialize fires again, destroying all modifications and reverting the form to its initial state

This wiping/reInitialization behavior happens even though enableReinitialize and destroyOnUnmount are false, so imo it's unexpected behavior. I can't really think of a situation where it would be desired, where one or both of those two flags wouldn't also be set.
My desired behavior is that initialize should only fire once, when a particular form is loaded for the first time. I'm not well versed in the source, but looking at these lines https://github.com/erikras/redux-form/blob/v6/src/reduxForm.js#L117-L127 I think the intent is the same as mine, so maybe this is just a bug?
I see that the authors of similar issues have closed theirs without really generating discussion, so hopefully we can have one here.
https://github.com/erikras/redux-form/issues/1293
https://github.com/erikras/redux-form/issues/1474
thanks!

ah crap! closing as a dupe, i didn't realize i was a version behind :p


Search / Replace: editors do not open when auto save is enabled

This makes it impossible to undo a replace operation. Need to investigate why editors do not open when auto save is enabled.

@sandy081 actually I think you should explicitly call openEditors() with the files to be replaced from the search land.

@bpasero This issue is not specific to Search/Replace. It is also true for all bulk edit functionalities. Eg: Rename also does the same thing if auto save is enabled. I admit that behavior is not correct and not helpful especially if you want to undo. This again exposes the problem of global undo.
IMO, we should fix this in bulk edit infrastructure - to open edited files always. We can either leave this as is or change after we have global undo functionality.
@jrieken What do you say?

+1 for opening editor before doing the bulk edit, independent from how auto save is configured. this also allows the user to undo the change in each editor if needed.

I actually found a bug in my implementation of opening editors (https://github.com/Microsoft/vscode/issues/8354) that causes this to fail when auto save is enabled.
I am also easy to fix this on my end if we decide against doing this on the bulk edit level.

Fix pushed, should work now also when auto save is enabled, but please verify for both cases.


Inconsistency in stake/transfer page

on the staking page if the wallet is locked we directly show the prompt where we ask for  the password to unlock... Here instead we just show the alert.   I don't have any preference for any method but I think we should use the same both here and on the staking tab
Originally posted by @panleone in https://github.com/PIVX-Labs/MyPIVXWallet/pull/271#discussion_r1401750944

Fixed by #308


chore: submit random email on drops

Thank you for your contribution to the KodaDot - One Stop Shop for Polkadot NFTs.
👇 __ Let's make a quick check before the contribution.
PR Type

[x] Bugfix

Context

[x] Related #9310. currently, fxart, which is a new endpoint for drops, is required to submit the email. Should we skip the modal and submit random emails instead until we have a proper design?

Did your issue had any of the "$" label on it?

[x] My DOT address: Payout

can't we fix it on worker side?

At the moment, the modal exists on the UI; we need to adjust the UI first. Later on, we can adjust on the worker side if we want

wdyt? cc @prury @exezbcz @yangwao

wdyt? cc @prury @exezbcz @yangwao

I'm good with hiding it

@prury yup, hiding it seems like a good quick fix

@prury @exezbcz please approve as reviewers, so I can merge it

It's needed for production for now?

yes

Okay will look on it, gib 10minut


operator and operator lexeme declarations should be highlighted as identifiers

note: this issue was split off from https://github.com/swift-server/vscode-swift/issues/366

Describe the bug
operator lexeme declarations should be highlighted as identifiers.
infix operator ?= :ComparisonPrecedence

there are three bugs here. two are vscode-swift bugs, and the other one is a sourcekit-lsp bug:

lexeme
?=
:
ComparisonPrecedence

current semantic highlight
none
none
identifier

expected semantic highlight
identifier
none
identifier

sourcekit-lsp bug?
yes
no
no

current fallback label
operator
invalid
invalid

expected fallback label
operator
none
none

vscode bug?
no
yes
yes[1]

[1]: has no effect, because the correct sourcekit-lsp highlight overrides the wrong fallback label)

the wrong highlight for the colon is a vscode problem, and probably not in our power to fix. the only way to correct this behavior would be to make sourcekit-lsp provide more comprehensive highlights (classifying punctuation and identifiers in a way it does not do currently) and migrate the community to swift-specific syntax coloring themes that do not suffer from this defect. however, the operator lexeme highlight is within our power to fix.
this also seems to affect operator declarations, but the impact is mitigated because the fallback grammar is able to fill in for the semantic highlighter in this case.

Environment

OS: Ubuntu 20.04
vscode-swift version: 0.6.0

$ swift --version
Swift version 5.8-dev (LLVM 396c6969ee90ef4, Swift 02efc3a2d28e348)
Target: x86_64-unknown-linux-gnu
$ swiftenv version
DEVELOPMENT-SNAPSHOT-2022-07-06-a
$ code --version
1.69.2
3b889b090b5ad5793f524b5d1d39fda662b96a2a
x64

I don’t think I agree ?= should be highlighted as an identifier, because it is not an identifier – it’s an operator. https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID412
Why do you think it should be highlighted as an identifier?

as far as i’m aware, there is no such thing as an “operator” in the semantic highlights sourcekit-lsp emits. currently operator-functions like += or ... are labeled as method.static, which they are.
it’s not really important to me whether they are called operators or identifiers, the problem is right now they are not getting any semantic highlights at all.

Implementing the SourceKit-side here: https://github.com/apple/swift/pull/60210 This will need to be adopted in SourceKit-LSP in a follow-up PR.

rdar://97961816


[2.9] Update Azure Availability Zone Region List

The list of available AKS regions is not hardcoded, but whether or not they support availability zones (enforced in the UI through form validation) is hardcoded here: https://github.com/rancher/dashboard/blob/master/pkg/aks/util/aks.ts#L7. We need to update this list to include southcentralus and any other regions missing from https://learn.microsoft.com/en-us/azure/reliability/availability-zones-service-support#azure-regions-with-availability-zone-support
Ensure we check and add all missing regions.

For QA's attention, this may have to be tested before what should be 2.9.2/2.9.next1. cc @rancher-max

According to https://learn.microsoft.com/en-us/azure/reliability/availability-zones-service-support#azure-regions-with-availability-zone-support, I could observe that the UI lists more regions than the ones mentioned in the list of availability zone support, and some do not even make geographical sense. e.g. the region Brazil US
https://github.com/user-attachments/assets/a223a7c2-1e5a-42dc-aba7-145d95a4a496

Same is observed in RKE2.

we're listing this region as without availability zones e.g. South Central US, but according to https://learn.microsoft.com/en-us/azure/reliability/availability-zones-service-support#azure-regions-with-availability-zone-support it does.

From the regions with availability zones support mentioned in https://learn.microsoft.com/en-us/azure/reliability/availability-zones-service-support#azure-regions-with-availability-zone-support, these are not being listed in the UI:
US Gov Virginia - I believe it is because the credentials used for testing belong to the public cloud environment, not the Azure US Government Cloud
Japan West - which is marked with a star in the Microsoft docs and listed in our UI as a region with no support for Availability Zones
China North 3 - I believe it is because the credentials used for testing belong to the public cloud environment, not the Azure China Cloud
New Zealand North - Is not listed at all as a region in our region

provisioned AKS cluster in region South Central US in 3 availability zones. Found non-blocker related-issue https://github.com/rancher/dashboard/issues/11841.  The scope of this issue is working as expected.


docs(command): updated documentation for  COMMAND (#836)

Thank you for the changes, I will be reviewing them.

Hi, I think I meant different files but in the commands folder themselves. We can move away from subdirectory.


Identify patients with arterial catheters, with time of insertion and removal, what is the best way?

Hi everyone!
We are working on a project on the use of arterial biology in intensive care patients.
As part of the eICU, we would like to identify patients with arterial catheters, with the date and time of insertion and removal.
We are thinking of using the "Bedside monitor data table" "vital periodic", patients with invasive blood pressure measurement.
Hopefully this is an indirect way, does anyone have a better idea?
Thanks a lot!

Hello,
This may be one way of obtaining this data.  You may want to also look at the other tables.  Sometimes tables such as nursecare will have data regarding routine care done to document equipment cleaning, etc.
Documentation practices vary across hospitals, so not finding this information (e.g., in nursecare) may not indicate you're wrong, but if you did find it would provide greater face validity of your assumptions for that set of patients.
Jesse


Tweak [maintenance] badge in UI; remove caching

As I mentioned at https://github.com/badges/shields/pull/3005/files#r257553498 this should use NonMemoryCachingBaseService as it doesn't fetch anything. It's a waste of the cache to store these values when they can be computed on the fly without taking up any space.
Added (yes|no) for the dropdown.

Warnings

:warning:
This PR modified service code for maintenance but not its test code. That's okay so long as it's refactoring existing code.

Messages

:book:
:sparkles: Thanks for your contribution to Shields, @paulmelnikow!

  Generated by :no_entry_sign: dangerJS against 1a2e7ca07ec1e156e2a70f1117380aedae6c44fb


[TC-467] Delivery-service tenancy based access control - DNSSEC and SSL Keys

We have recently added "tenancy" to the project.
With tenancy, every resource have a tenant, where resource can be a delivery-service, a server (future) and even a user.
We are now starting to enforce access-control based on the resource tenancy. A user can manage a resource only if the resource is under the user tenancy.
This JIRA deals with another step of "delivery-service as a resource" - enforcing access control on the management of ssl keys and DNSSEC, according to their Delivery service.
We still need to finalize the specification of this access control, and it would not be included in the first phase of tenancy introduction, assuming that the application hide from the user the ability to deal with entries relating to DSes which are not under his tenancy.
Author: Nir Sopher
JIRA Link: https://issues.apache.org/jira/browse/TC-467

@nir-sopher - do you think this issue is still relevant? i believe you cannot manipulate ssl keys for a ds outside your tenancy nor do i think you can affect dnssec keys at the ds-level.

I believe the per-DS APIs for manipulating sslkeys, URI signing keys, and URL sig keys are all covered by tenancy checks, but the CDN-specific APIs that get all sslkeys or dnsseckeys are not covered by tenancy checks (since in essence those APIs are meant to provide all of those things within a CDN). They do require admin privileges, however, so I'm not sure tenancy checks should be required for those anyways.
Feel free to re-open this issue if anyone disagrees.


[Custom Layouts] Speaker gallery component

What

Introduces new Speaker mode layout to the videoGallery
Why

Allows the user to focus on the most recent speaker

https://skype.visualstudio.com/SPOOL/_workitems/edit/3362646
https://skype.visualstudio.com/SPOOL/_workitems/edit/3362644
How Tested

Locally, E2E tests to come

Can you add screenshots of these new layouts?

Can you add screenshots of these new layouts?

yup working on a little demo video since it will show this one better!


Unit test improvements

Following up from #2 and #5. Here are some changes I would like to make to the unit tests:

Improve test coverage:

Test both rst and markdown input
Test both RSS and Atom output

Get tests fully working in CI:

Currently, tests compare the full build output, which changes slightly when dependency versions change (Sphinx, docutils, etc.). This could be improved by checking only the main feed contents and ignoring minor variations like formatting, whitespace, lastBuildDate, etc.
It looks like the tests are also checking HTML output. Do you think we could skip that and only check the feed XML output?

Yes, we should optimize the tests for better maintainability. The current implementation was quickly made and it it did work for me until now, but it definitively can be improved. For example get rid of the versions dependency by skipping the details of the html output, and increase coverage.


Reiterate wireframe milestone report UI

Describe the task
From feedback received during user review of initial milestone report UI (complete Sprint Mar 21 - April 1), incorporate feedback into the design.
Acceptance Criteria

[ ] re-iterate wireframe design
[ ] review design with dev team for input
[ ] incorporate dev team feedback into wireframe
[ ] other?

Additional context

Hi @suhafa - feel free to edit and update this ticket. This one captures the iteration of the milestone report UI design.

As far as feedback from dev team goes, this remains an ongoing process we can iron out in the next sprint as we condense feedback from our usability sessions. We've received some feedback here and there, which we can explore in depth. Closing this :D


babel prevents ESM import

I'm trying to port the CommonJS (CJS) import to a  ECMAScript Modules (ESM) import. cf. https://gist.github.com/noraj/007a943dc781dc8dd3198a29205bae04
From:
var jest = require('gulp-jest').default;

to
import gulpJest from 'gulp-jest';

But it fails with the following error when running gulp:
[18:00:50] TypeError: gulpJest is not a function
    at test_data (file:///home/noraj/Dev/rawsec-cybersecurity-inventory/gulpfile.mjs:178:15)
    at bound (node:domain:433:15)
    at runBound (node:domain:444:12)
    at asyncRunner (/home/noraj/Dev/rawsec-cybersecurity-inventory/node_modules/async-done/index.js:55:18)
    at process.processTicksAndRejections (node:internal/process/task_queues:77:11

However node_modules/gulp-jest/lib/index.js seems to have an uncommon way to export.
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports["default"] = void 0;

...

var _default = function _default() {...};

exports["default"] = _default;

Could you provide me an example to how to import gulp-jest in a .mjs file or maybe patch the export if it's the cause.

I just tested and adding module.exports = _default; at the end of the script made it work, like it's done in https://github.com/colynb/gulp-data/blob/master/index.js or https://github.com/gulp-community/gulp-pug/blob/master/index.js.
ESM export example: https://github.com/sindresorhus/del/blob/main/index.js.

Seems to be fixed in https://github.com/Nerajno/gulp-jest/blob/master/src/index.js, it just lacks a new release.

yarn add gulp-jest
node_modules/gulp-jest/lib/index.js
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports["default"] = void 0;

var _pluginError = _interopRequireDefault(require("plugin-error"));

var _through = _interopRequireDefault(require("through2"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

var _require = require('@jest/core'),
    runCLI = _require.runCLI;

var _default = function _default() {
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  return _through["default"].obj(function (file, enc, cb) {
    options = Object.assign({
      rootDir: file ? process.cwd() : undefined
    }, options);
    runCLI(options, [options.rootDir]).then(function (_ref) {
      var results = _ref.results;

      if (results.numFailedTests || results.numFailedTestSuites) {
        cb(new _pluginError["default"]('gulp-jest', {
          message: 'Tests Failed'
        }));
      } else if (typeof results.success !== 'undefined' && !results.success) {
        if (results.snapshot && results.snapshot.failure) {
          cb(new _pluginError["default"]('gulp-jest', {
            message: 'Tests Failed due to coverage snapshot failure'
          }));
        } else {
          cb(new _pluginError["default"]('gulp-jest', {
            message: 'Tests Failed due to coverage threshold breaches'
          }));
        }
      } else {
        cb();
      }
    });
  });
};

exports["default"] = _default;

gulp-js 4.0.4 package is up to date from this repository. It's babel that is generating this horrible code.
$ git clone https://github.com/Nerajno/gulp-jest
$ cd gulp-jest
$ yarn install
$ yarn run build
$ cat lib/index.js

In https://www.bigbinary.com/blog/helping-babel-move-to-esm, they give an example where
const rollupBabel = require("@rollup/plugin-babel").default;

is replaced with
import { babel as rollupBabel } from "@rollup/plugin-babel";

But replacing
var jest = require('gulp-jest').default;

with
import { jest as gulpJest } from 'gulp-jest';

But it always end in:
SyntaxError: Named export 'jest' not found. The requested module 'gulp-jest' is a CommonJS module, which may not support all module.exports as named exports.

I can't figure what is the export name.
This doesn't work either.
import * as gulpJest from 'gulp-jest';

This seems to be related to the usage of @babel/plugin-transform-modules-commonjs that is included in @babel/preset-env.

Some projects like https://github.com/babel/babel/issues/11701 has made some work to publish both as ESM or CJS cf. https://github.com/babel/babel/pull/13414/files

Has there been any update on this as I'm not stuck at this point and may have to look at using different tools.

No, the project seems abandoned. The author seems to only merge dependabot PR from times to times but as no been committing since April and has never given any answer for this issue for one year. The last npmjs release is 3 years old. I think I'll drop this dependency and replace the script:
  "scripts": {
-    "test": "gulp test"
+    "test": "jest"
  },


For files with long rows the word wrap features only works on newly created empty tabs.

VSCode Version: 1.10.1
OS Version: Linux 4.4.0-64-generic #85~14.04.1-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux
Commit 653f8733dd5a5c43d66d7168b4701f94d72b62e5
Date 2017-03-02T00:47:58.633Z
Shell 1.4.6
Renderer 53.0.2785.143
Node 6.5.0

description:
the word wrap works perfectly with files containing short lines. But once the lines become too long (2375 characters in my example) the word wrap feature works only on newly opened empty tabs, once i save the tab's content into a new file or i change the tab, the word wrap features does not work anymore.
just to make sure it is not a settings problem, below are my settings for for version 1.9.* and 1.10.1:

1.9.1
"editor.wordWrap": false
"editor.wordWrapColumn": 300000
1.10.1
"editor.wordWrap": "off"

prerequisites :

a file saved on the hard drive with rows containing 2375 characters.
word wrap feature toggled off.

Steps to Reproduce:

open the file save, the the content is wrapped.
open a new tab by pressing Ctrl+N, and copy the content of the file into the new tab, the content is not wrapped and i can side scroll until the end.
save the file into the hard drive, the content is wrapped.
open another new tab by pressing Ctrl+N, and copy the content of the file into the new tab, the content is not wrapped.
go to another tab, and go back to the previous tab, the content is wrapped.

fwiw, this problem did not occur when editor.wrappingColumn was set to -1.  Unfortunately, that setting was removed.
The longest single line I've seen in a normal file not wrapping is 1536 characters.  So somewhere between 1536 and 2375 characters, there's some limit that only respects editor.wrappingColumn.
At a minimum, I think the documentation and pop-up message displayed to the user should be changed.  editor.wordWrap is not a replacement setting for editor.wrappingColumn and I've spent hours trying to resolve this unsuccessfully because of the misleading wording, believing that I was doing something wrong or had something misconfigured.  It's rather frustrating.
Searching past issues, editor.wrappingColumn appears to have been removed because someone thought it might have been potentially confusing to a hypothetical user.  Why is creating more confusion and fixing the then-broken functionality a "backlogged" priority, when the original removal of the feature was given much higher priority?
This has been broken for about two months in the production release.  And given the "backlog" priority it'll be what, six months to a year before it's fixed?  If there isn't adequate time to test or fix this, then it simply needs to be rolled back.
A hypothetical potentially confused user that never existed shouldn't be prioritized over actual, real confused users and broken functionality.

Let's track in #21801
@Frangible I'm sorry for the frustration this has caused. There is a workaround on the Insiders Channel since 3 weeks. We identified the issue 2 days before the ship date of 1.10 and it was a team decision to not include a fix in 1.10.

As a guard against freezes (caused by our non being able to virtualize rendering horizontally), we try to identify "minified" files. (i.e. think minified CSS, minified JS, etc.). We forcefully word wrap minified files.
On the insiders channel, the Toggle Word Wrap Action is able to unwrap these files. There is also an undocumented "editor.wordWrapMinified": false setting that works for now on the insiders channel.
We need to think how to better align the two desires:

first, our desire to not "freeze" while rendering huge lines (i.e. rendering a frame in < 16ms)
secondly, the end-user desire to never wrap


Device Fingerprinting

I like this
canvas,audio,font,webgl fingerprint defender and IP leak prevent by webrtc control
Did you code it or is it from a different project, if so please tell me which and whether documentation is available?

no, it's made for this project..these things are done by extensions..which are available on the internet but modified those extensions to work better with this project like managing sessions, auto select some settings which are required, removing notifications etc.

Can they be used for any website like Facebook, Twitter etc? Can you tell me the original sources of the files?

https://chrome.google.com/webstore/detail/canvas-fingerprint-defend/lanfdkkpgfjfdikkncbnojekcppdebfp?hl=en
https://chrome.google.com/webstore/detail/audiocontext-fingerprint/pcbjiidheaempljdefbdplebgdgpjcbe?hl=en
https://chrome.google.com/webstore/detail/font-fingerprint-defender/fhkphphbadjkepgfljndicmgdlndmoke?hl=en
https://chrome.google.com/webstore/detail/webgl-fingerprint-defende/olnbjpaejebpnokblkepbphhembdicik?hl=en
https://chrome.google.com/webstore/detail/webrtc-control/fjkmabmdepjfammlpliljpnbhleegehm?hl=en


How can i prevent multiple queries to the database when fetching foreign keys?

Hi! I am trying to use this library with graphql-go but i am struggling to get the batching to work when doing list queries that reference foreign key objects. Here's an example schema of what i mean:
type Query {
    meetups: [Meetup]!
}
type User {
    ID: Int!
    Name: String!
}

type Meetup {
    ID: Int!
    Title: String!
    Owner: User!
}

In the MeetupResolver i have this:
func (r *MeetupResolver) Owner() *UserResolver {
	thunk := r.loader.Load(r.meetup.OwnerID)
	data, _ := thunk()
	user, _ := data.(model.User)
	return NewUserResolver(&user)

When doing a query to meetups and asking for the Owner of the objects it is still doing a single query to the database for each of the different owners, like this:
[2017-05-16 16:41:13]  [0.85ms]  SELECT * FROM "users"  WHERE ("id" IN ('6'))
[2017-05-16 16:41:13]  [1.34ms]  SELECT * FROM "users"  WHERE ("id" IN ('7'))

Is there a way to batch all the owner ids and then send the query to the database?

Are you sharing the loaders between resolvers? Or does each FooResolver have it's own dataloader.Loader instance?

I send the loader with the request context like this:
func dataLoaderMiddleware(next http.Handler) http.Handler {
	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		ctx := r.Context()
		userLoader := &loaders.UserLoader{Db: db}
		batchFunc := userLoader.Attach(ctx)
		uloader := dataloader.NewBatchedLoader(batchFunc, dataloader.WithCache(data.NewCache()))
		ctx = context.WithValue(ctx, "userLoader", uloader)
		newRequest := r.WithContext(ctx)
		*r = *newRequest
		next.ServeHTTP(w, r)
	})
}

And in the query resolver  i use it like this:

func (r *Resolver) Foos(ctx context.Context) ([]*resolvers.FooResolver, error) {
	loader, found := ctx.Value("userLoader").(*dataloader.Loader)
	if !found {
		return nil, errors.New("unable to find the user loader")
	}
        ....
	for _, foo := range foos {
		fooResolvers = append(fooResolvers, resolvers.NewFooResolver(foo, loader))
	}
	return fooResolvers, nil
}

So this is basically the same as this issue: https://github.com/neelance/graphql-go/issues/17. Dataloader is recommended there, so surely it is just something wrong with my implementation?

Can you share your code for the batchFn? It sounds like the issue is there. It's probably a result of bad documentation on my end.

I tried to implement it like @tonyghita proposed in  https://github.com/nicksrandall/dataloader/issues/19
type UserLoader struct {
	Db *gorm.DB
}

func (l *UserLoader) Attach(ctx context.Context) dataloader.BatchFunc {
	return func(ids []string) []*dataloader.Result {
		var users []model.User
		if err := l.Db.Where(ids).Find(&users).Error; err != nil {
			log.Printf("Error in userloader: %v", err)
		}

		results := []*dataloader.Result{}
		for _, user := range users {
			results = append(results, &dataloader.Result{user, nil})
		}
		return results
	}
}

That batchFunc code looks correct to me. The default batch window is 6ms. Is it possible that your resolvers are taking longer than that to resolve? You could configure the batch window to be something longer to see if that solves your issue?

I can't really see why the resolver would take so long, there is really not much going on there as you can see in Foos and UserResolver above. I tried setting the batch window to a 1 sec like this:
		uloader := dataloader.NewBatchedLoader(batchFunc, dataloader.WithCache(data.NewCache()), dataloader.WithWait(1000*time.Millisecond))
The query is clearly loading slower, however the results are the same.
[2017-05-16 21:32:29]  [2.81ms]  SELECT * FROM "foos"
[2017-05-16 21:32:29]  [3.24ms]  SELECT * FROM "users"  WHERE ("id" IN ('2'))
[2017-05-16 21:32:30]  [1.64ms]  SELECT * FROM "users"  WHERE ("id" IN ('3'))

The returned response from the server is a list with 20 foos and their owner. There are only two users that are owners to all the foos, hence only the two select statements from users. So the caching works in the way that it prevents the resolver function from querying the database for the same user again. But in my application there could easily be 20 foos with 20 different owners and the application would then query the database one time for each distinct user.

Update: i found that calling thunk() from the Owner() field in the resolver directly after Load() causes the load to send the query as stated above. But when i changing the the Owner method to:
type MeetupResolver struct {
   meetup *model.Meetup
   thunk  dataloader.Thunk   <--- Not the loader, but the thunk
}

func (r *MeetupResolver) Owner() *UserResolver {
   data, _ := r.thunk()
   user, _ := data.(model.User)
   return NewUserResolver(&user)

And changing the Meetups() query resolver method to:
func (r *Resolver) Meetups(ctx context.Context) ([]*resolvers.MeetupResolver, error) {
	loader, found := ctx.Value("userLoader").(*dataloader.Loader)
	if !found {
		return nil, errors.New("unable to find the thing loader")
	}
	meetups, err := model.GetAllMeetups(r.db)
	if err != nil {
		return nil, err
	}
	var meetupResolvers []*resolvers.MeetupResolver
	for _, meetup := range meetups {
		thunk := loader.Load(strconv.Itoa(meetup.OwnerID))  <-- load here now
		meetupResolvers = append(meetupResolvers, resolvers.NewMeetupResolver(meetup, thunk))
	}
	return meetupResolvers, nil
}

The result is then:
[2017-05-16 22:19:33]  [0.74ms]  SELECT * FROM "meetups"
[2017-05-16 22:19:33]  [0.56ms]  SELECT * FROM "users"  WHERE ("id" IN ('2','3'))

However this is not exactly the result i want, because then the SELECT * FROM "users" statement would be run even though Owner in the Meetup is not requested.

@nicksrandall any updates on this?
This is easy replicated using the examples:
func main() {
	// go-cache will automaticlly cleanup expired items on given diration
	c := cache.New(time.Duration(15*time.Minute), time.Duration(15*time.Minute))
	cache := &Cache{c}
	loader := dataloader.NewBatchedLoader(batchFunc, dataloader.WithCache(cache))

	// immediately call the future function from loader
	loader.Load("key1")()
        loader.Load("key2")()
        loader.Load("key3")()
}

func batchFunc(keys []string) []*dataloader.Result {
	var results []*dataloader.Result
	fmt.Printf("got keys: %v \n", keys)
	for _, key := range keys {
		results = append(results, &dataloader.Result{key, nil})
	}
	return results
}

Prints:
got keys: [key1]
got keys: [key2]
got keys: [key3]
When calling the thunk the wait for the batching is not taken in to account.

I'm not sure that nil results are cached

@RubenSchmidt the "thunk" (or future) calls will block until they are resolved. The load method returns a thunk and not the values so that we can defer work. To help explain, the following code will work as you expected it to.
func main() {
	// go-cache will automaticlly cleanup expired items on given diration
	c := cache.New(time.Duration(15*time.Minute), time.Duration(15*time.Minute))
	cache := &Cache{c}
	loader := dataloader.NewBatchedLoader(batchFunc, dataloader.WithCache(cache))
        // queue up
	thunk1 := loader.Load("key1")
        thunk2 := loader.Load("key2")
        thunk3 := loader.Load("key3")

       // wait for resolution
        thunk1()
        thunk2()
        thunk3()
}

func batchFunc(keys []string) []*dataloader.Result {
	var results []*dataloader.Result
	fmt.Printf("got keys: %v \n", keys)
	for _, key := range keys {
		results = append(results, &dataloader.Result{key, nil})
	}
	return results
}

P.S. @tonyghita thanks for always jumping in and lending a hand in the issues. I sincerely appreciate it!

Alright thanks for clarifying! After looking some more into it, I found that by getting the value from the context in the Owner field and not when creating the resolver from the Meetups query it works as expected:
func (r *MeetupResolver) Owner(ctx context.Context) (*UserResolver, error) {
	loader, found := ctx.Value("userLoader").(*dataloader.Loader)
	if !found {
		return nil, errors.New("unable to find the userloader")
	}
	thunk := loader.Load(strconv.Itoa(r.meetup.OwnerID))
	data, _ := thunk()
	user, _ := data.(model.User)
	return NewUserResolver(&user), nil

Passing the resolvers in the context feels a little bit clunky tho and an example of a better way would be much appreciated :)
Thanks for all the help and a great project!

@RubenSchmidt I agree it's pretty clunky.
Off-topic, but I've started organizing the resolvers to have constructors where their dependencies are checked.
I also pull out a load function that does all loader-dependency checking and data manipulation.
These allow for really minimal and clean resolver functions.
type MeetupResolver struct {
  id     string
  loader *dataloader.Loader
}

// NewMeetupResolver validates dependencies and returns a new instance of MeetupResolver.
func NewMeetupResolver(ctx context.Context, id string) (*MeetResolver, error) {
  loader, found := ctx.Value("meetupLoader").(*dataloader.Loader)
  if !found {
    return nil, errors.New("unable to find meetup loader")
  }

  if id == "" {
    return nil, errors.New("no meetup ID specified")
  }

  return &MeetupResolver{id, loader}, nil
}

func (r *MeetupResolver) load() (*model.Meetup, error) {
  // we can have any kinds of necessary checks here
  if r.loader == nil {
     return nil, errors.New("missing meetup loader")
  }

  if r.id == "" {
    return nil, errors.New("missing meetup key")
  }

  // use the loader we attached in the constructor
  thunk := r.loader.Load(r.id)
  data, err := thunk()
  if err != nil {
    return nil, err
  }

  meetup, ok := data.(model.Meetup)
  if !ok {
    return nil, errors.New("unable to convert response to Meetup")
  }
  return meetup, nil
}

func (r *MeetupResolver) Owner(ctx context.Context) (*UserResolver, error) {
  meetup, err := r.load()
  if err != nil {
    return nil, err
  }

  return NewUserResolver(ctx, meetup.OwnerID) // analogous to NewMeetupResolver()
}

@tonyghita That looks cleaner! I'm going to do it that way for now! Again, thanks for all the help! I'm closing this now.


Router volume is incorrect in Explorer

Individual transactions add up to a higher net volume than is shown in Explorer here
https://amarok.connextscan.io/router/0xf26c772c0ff3a6036bddabdaba22cf65eca9f97c

First confirm if this a cartographer db issue or an end UI issue?  So that we assign it out correctly

Fixed. It's a UI issue regarding decimal things. Please recheck it.

Confirmed fixed!


[Bug]: If a URL stops working for a MUX, then it should be removed/disabled

Describe the Bug
If the URL in a MUX becomes unreachable, it should be disabled.
If a channel has a backup source, TVH should switch to using that instead.
Perhaps we need to scan MUXes regularly and disable services on any services with a MUX scan status of "FAIL".
Steps to Reproduce
Update a MUX URL to be incorrect, try to play that channel
Expected Behavior
No response
Screenshots
No response
Relevant Settings
No response
Version
latest
Platform
Docker
Relevant log output
No response

Need to reduce the "Maximum timeout (seconds):" value on the networks to 10 seconds. 30 is too high and prevents this feature from kicking in

Should probably also ensure "Restart on error:" is configured on the default stream profile


[CI] Build deterministic runtime on new release

Build a deterministic build of the chain’s runtime (in anticipation of a runtime upgrade for a new release) and attach it with detailed information to the release artifacts (see an example on Trappist).

Closed by #86


An unsupported status was provided

Hi,
While testing some mqtt switches tried to start charging without cable connected. Got this error, posting as requested.
New topic: weconnect/vehicles/MYCARVIN/domains/charging/chargingStatus/request/080c768b-835a-48ee-885f-112c8caad9a2/status
New topic: weconnect/vehicles/MYCARVIN/domains/charging/chargingStatus/request/080c768b-835a-48ee-885f-112c8caad9a2/operation
New topic: weconnect/vehicles/MYCARVIN/domains/charging/chargingStatus/request/080c768b-835a-48ee-885f-112c8caad9a2/requestId
New topic: weconnect/vehicles/MYCARVIN/domains/charging/chargingStatus/request/080c768b-835a-48ee-885f-112c8caad9a2/vcfRequestId
2023-11-20T21:35:02+0100:WARNING:addressable:/vehicles/MYCARVIN/domains/charging/chargingStatus/request/080c768b-835a-48ee-885f-112c8caad9a2/status: An unsupported status: fail_external_power_supply was provided, known values are [successful, fail, polling_timeout, in_progress, queued, delayed, timeout, fail_vehicle_is_offline, fail_ignition_on, fail_battery_low, fail_plug_error, fail_charge_plug_not_connected, fail_plug_disconnected, fail_no_external_power, unknown status] please report this as a bug

will get added with the next version

was added in the upcoming version


CBOR/ByteString squash

Was attempting to keep the contributors intact during the squash.
When doing an interactive rebase, the merges caused a number of conflicts that needed to be resolved. Rather than having to deal with resolving conflicts, I attempted to squash locally using the technique described in https://stackoverflow.com/a/44789323/196486. Unfortunately this technique does not preserve the other contributors whom helped with this effort.
I was hopefully that GitHub had some magical way of squashing while preserving contributors; unfortunately it appears that it may use a similar technique as is linked above (and did not preserve other contributors in the squashed commit).


pinned pydata-sphinx-theme until the docs are dark mode friendly.

🚀 Pull Request
Description

Pin pydata-sphinx-theme until the Iris docs are dark mode friendly (https://github.com/SciTools/iris/issues/4795)

Consult Iris pull request check list

I would be happy to get it merged.


[Agreements] Add back VMware.WorkstationPlayer

cc @denelon @stephengillie
Installer prompt:

Microsoft Reviewers: Open in CodeFlow

Automatic Validation ended with:

Installer Verification Analysis Context Information:
Installer https://download3.vmware.com/software/WKST-PLAYER-1702/VMware-player-full-17.0.2-21581411.exe
Scan request id: '396616f2-cbde-4b2b-b5db-38a530c8aa02'
Error information: BlockingDetectionFound

2/16/2024 3:54:37 PM

Installer Validation

(Automated response - build 762.)

This might be due to a network block of data centers, to prevent automated downloads.
(Automated response - build 762.)

Automatic Validation ended with:

Installer Verification Analysis Context Information:
Installer https://download3.vmware.com/software/WKST-PLAYER-1702/VMware-player-full-17.0.2-21581411.exe
Scan request id: '92cb2b90-ac2f-4756-ac3b-fad6fcda2b66'
Error information: BlockingDetectionFound

2/18/2024 2:28:02 PM

Installer Validation

(Automated response - build 781.)

Any chance this can be manually validated? Package used to exist, I'm just re-adding it with agreements

Unfortunately, it hasn't progressed through the pipelines far enough to manually validate. And the network block would prevent future versions. I agree that - in theory - this should be easy to readd, and if an exception were made I'd merge it.

Since https://github.com/microsoft/winget-pkgs/pull/143919, I'll try a re-run of this PR

@wingetbot run

Closing in favor of newer version merged in https://github.com/microsoft/winget-pkgs/pull/143919


Yobit integration

Hello
THIS IS NOT AN ISSUE!
Instead is the only way to reach you.
I find your pump-and-dump bot simple and user friendly as it should.
I'm asking you if you can somehow "upgrade it" for yobit exchange integration?
Yobit uses a very similar trade interface as Bittrex. To me it is simply impossible once I'm not a programmer, but to whom (like you) who have the skills; I maybe completely wrong but it shouldn't be hard to integrate Yobit. Yobit is popular in Pump n'dump actions and integrated bots are scarce.
Other two exchanges with remarkable resemblance with Bittrex and Yobit trade interface are Coinexchange and Cryptopia.
Best Regards
Nuno
<EMAIL_ADDRESS>

Very interesting, Is this project still on? If not, are you aware of anyone working on something similar?


Hanning/handle old and new courseoutline

@aleffert  please review

create a service layer, and move some of the caching logic from API.java into service layer.
handle both old video_outline api and new course structure api

Is the by name thing for compatbility? How hard would it be to start using ids instead? Otherwise :+1:


lightbox: Zooming in should expand the viewing window.

To reproduce:

Send a tall, narrow image into zulip
Open lightbox
Zoom in

Ideal behavior is that the image starts filling out the screen as it gets bigger. Instead, the image gets cut-off at whatever the original width is.

Just to be clear, this is using the browser zoom behavior, not the "pan and zoom" button, right?

This is

Click the Pan and Zoom button to enable it
Scroll with mouse wheel or use Z

Would a behavior be:
-click Enable Pan and Zoom
-if not original size, clear screen of ui except Pan and Zoom indicator.
-zooming in now grows image container both x and y, expanding over screen.
If you want to expand the image container, it would be difficult to keep the UI, right @rishig? And then disabling Pan and Zoom would return the UI and default container of image

Zooming in should grow image container in whatever direction it is currently being cut off, and not the other one. I.e. it should grow within some reasonable bounding box that doesn't take over the header and footer.

working

Closing as this was fixed in #20788.


Always export static types?

The static types now look like this:
type Something = rt.Static<typeof something>

They are not exported by default. The static types are not used inside the generated code, so it might make sense that they are always exported? You'll probably want them exported even if the runtype isn't.

Yeah, we probably want them to be exported as default. Might be some weird cases where you'd like to turn that off though. 🤷♂


Auto orientation problem

Not strictly a bug with Glide, but more a limitation of Intervention that affects Glide functionality.  As mentioned in this issue Intervention can only read EXIF data if the image object is initialised with a file path (since it uses exif_read_data).  Since Glide always passes in the file contents (at it is loading the image via Flysystem) this means that auto-orientation will never work as there will be no EXIF information for Intervention to use.  Explicit orientation (i.e. rotate 90deg) is unaffected.
A quick and dirty fix that we have employed is to update the makeImage() method in League\Glide\Server\Server.php to write the source file to a temporary file in the system tmp/ folder and then pass that path to the API run method (with appropriate garbage collection to clear out the temporary file once it has been used):
$source = $this->source->read(
    $this->getSourcePath($request)
);

if ($source === false) {
    throw new FilesystemException(
        'Could not read the image `'.$this->getSourcePath($request).'`.'
    );
}

// Write the source to a temporary file
$tmp = tempnam(sys_get_temp_dir(), '');
$handle = fopen($tmp, "w");
fwrite($handle, $source);

try {
    $write = $this->cache->write(
        $this->getCachePath($request),
        // Pass the path to the temporary file instead of the source itself
        $this->api->run($request, $tmp)
    );
} catch (FileExistsException $exception) {
    // Cache file failed to write. Fail silently.
    // Remove the temporary file
    unlink($tmp);
    return $request;
}

// Remove the temporary file
unlink($tmp);

Happy to make a PR with this suggested change - even happier to see a more elegant solution!

Hmm, that is NOT good. Thank you very much for finding this—that makes total sense. Let me think about how best to solve this...your temp file solution may be the only good option we have, but let me do some digging first.

Update?

@renege Soon. Very sorry for the delay. See this and maybe this.

It's also simple enough to do something like this and this whilst @reinink works through his backlog.

+1 for some fix for this

This has been fixed (57a10a4b8049f9efb7debb5cfd9718f897e205d3) and tagged in 0.3.5.


DocumentClient with permission feed authentication does not work as it should.

The following snippet is of DocumentClient.js client. When client is initialized with permissions array, it builds the resourceTokens object for resourceId and token mappings.
if (auth.permissionFeed) {
	this.resourceTokens = {};
	for (var i = 0; i < auth.permissionFeed.length; i++) {
		var resourceParts = auth.permissionFeed[i].resource.split("/");
		var rid = resourceParts[resourceParts.length - 1];
		this.resourceTokens[rid] = auth.permissionFeed[i]._token;
	}
}

Since resource url in permission object ends with "/" (see example below). Because of it, var rid = resourceParts[resourceParts.length - 1]; returns empty string. In next line, this.resourceTokens object will have empty string property instead of having rid as property and ends up having only last permission's token in resourceTokens object.
_etag:""00008c01-0000-0000-0000-58e532230000""
_rid:"ooUSAGBSQwCKteUDHY4mAB=="
_self:"dbs/ooUSAW==/users/ooUSAGBSQwV=/permissions/ooUSAGBSQwCKteUDHY4mAB==/"
_token:"type=resource&ver=1&sig=nEX/ym6+McLXjnftlr2FBQ==;DaD+rh2vqDsctFO9NKJZxYZh1J9FaAc/L3sgqLo3LVcGT5xvUY7xzalWFbVTLWjY/wCAAGHA9HIIQJzweAbwWgKRpZT/2FfRW4JE8L7ShucEGQPlQ0MsUFnU1nZLyHE5FEFDiTFQXi3YpXbtmuZknbfzD8P62BBfYxE9899LevyujTTN03g0RohWAKHLImmfgfZHwVEpA4VnxrpxLgB0wBqB9rDHvMjm5iLoWMqVdTtGCoGdvsHauuAhDhP5q9xF;"
_ts:1491415583
id:"perm1"
permissionMode:"All"
resource:"dbs/ooUSAA==/colls/ooUSALK3-QE=/"

Could you please share your code with us so that we can reproduce the problem?

fixed in 1.12.2


Ingest census data directly, add unemployment to the score

For experimentation purposes, this PR adds direct access to 2019 ACS data (for variables not included on EJSCREEN). I also added the housing and transportation index.
This accomplishes #206 and integrates the data source from #177.
I've also gone ahead and joined this in the score_calc file, and added it into the socioeconomic benefits bucket for the score calculation.
I updated the scoring_comparison to point to these files appropriately. This doesn't change the resulting scores very significantly:

Overall looks good, fixed some issues regarding directory creation and a zip file name var issue.

Thanks for fixing that!

One small concern I have is the censusdata library. It's maintained by one user and has few stars and commits are sparsed, so monitoring that the etl processes don't break will be important.

Yeah, that's a good flag. It wouldn't be hard to replace with direct API access. I've created #229 to track this!


Exclude specific modules from maven repository

Dependabot selects wrong version from maven central when duplicates are found.
In my case, I have to add an extra repository packages.confluent.io/maven to get som io.confluent artifact.
To my misfortune, this repo also publishes other packages that I use, but with a different version syntax.
repositories {
    mavenCentral()
    maven("https://packages.confluent.io/maven/")
}

I can fix this with Gradle by excluding or including specific groups, but Dependabot will not account for this.
repositories {
    mavenCentral()
    maven("https://packages.confluent.io/maven/") {
        content {
            excludeGroup("org.apache.kafka")
        }
    }
}

This is what the pull-request looks like now, where 3.1.0 is the newest version in maven central.

Because dependabot is not supporting Gradle, there is now two alternatives:
Support this syntax above, or add support in `dependabot.yml´ to exclude dependencies by pattern matching.

👋🏻  @rtc11 Thanks for your feedback, this is a tricky one.
To make sure I understand as I don't work with maven day-to-day:
The issue is that https://packages.confluent.io/maven/ is essentially mirroring "org.apache.kafka" which Dependabot seems to be using by preference over the version in Maven Central, is that correct?
I've labelled this as Gradle just to highlight that supporting it is a potential addressable case, but I'd need to check how if and how we address precedence of dependency servers within Dependabot for Maven to see if we have any leverage for a configuration point.
At a very high level, my gut instinct is that we'd value adding Gradle support more than making this configuration option available.

@brrygrdn Yes that is correct! It would be awesome with Gradle support, this way you can customize "complex" behaviours.
Maybe another option is to add a dependabot PR command, like:
@dependabot ignore this package repository

Keep up the good work, I love dependabot!

Even a simple feature such ignoring a repository listed in the pom would be great.
something such could use only maven-central and ignoring repositories found in poms:
registries:
  maven-central:
    type: maven-repository
    url: https://repo.maven.apache.org/maven2
    username: ""
    password: ""

updates:
  - package-ecosystem: "maven"
    directory: "/"
    registries:
      - maven-central
    target-branch: "master"
    schedule:
      interval: "daily"

FYI, you can also filter by group and again, dependabot is not respecting this:
   repositories {
        mavenCentral()
        maven {
            url = uri("https://packages.confluent.io/maven/")
            group = "io.confluent"
        }
    }

The above limits which dependencies should be looked up in this maven repository to only those in the io.confluent group.

Our Maven and Gradle support is currently all ruby/regex and as a result is a bit brittle. We are happy to accept PRs from the community improving things.
Long term, we hope to migrate to using the native tooling as that would solve a lot of edge cases, but that's going to be a bigger lift, so might be a bit yet.