NgOnChanges doesn't trigger when I change the input value within the getFiles event handler

Describe the bug
A clear and concise description of what the bug is.
I have an Angular component, with Input [src]. Src accepts a path of a local file.
ngOnChanges should be triggered when I change the value of [src] but it doesn't trigger anything, just hangs so I can't show up the selected image.
    this.mediafilepicker.on("getFiles", res=> {
      let results = res.object.get('results');
      console.dir('getFiles',results);
      let session = bghttp.session("image-upload");
      this.selectedImage = results[0].file;
    });

<mtp-img [src]="selectedImage"></mtp-img>
This is the corresponding ngOnChanges function that should be triggered when I set this.selectedImage , but it does nothing some reason:
  ngOnChanges(changes: SimpleChanges) {
    console.log('ngOnChanges');
    this.loadImg();
  }

To Reproduce
Steps to reproduce the behavior:
Expected behavior
A clear and concise description of what you expected to happen.
ngOnChanges should be triggered.
I've even tried to put  this.selectedImage = results[0].file; to a setTimeout() function doesn't help.

Sample Code(please provide minimum code to reproduce problem):
above
Additional context
Add any other context about the problem here.
Sometimes it works ... there's no explanation, I restart the app and 1/5 times the ngOnChange is triggered as expected some reason.. a real mistery

You are referencing this in a wrong way. Possible way:
let t = this;
    this.mediafilepicker.on("getFiles", res=> {
      let results = res.object.get('results');
      console.dir('getFiles',results);
      let session = bghttp.session("image-upload");
      t.selectedImage = results[0].file;
    });

@jibon57 : No, I don't. In typescript if you decrale a callback function this way ()=>{} the this is the right. I'm doing this like for months with no problem at all.

@jibon57  Tried with your example, DOESN'T work. So Please, reopen this ticket if you're still supporting this plugin.

 I don't know why the View requires a user interaction to be re-rendered, but I'm sure this is not about the this reference..

Some reason this plugin's event callbacks are outside of ngZone, even if I use the TypeScript format to declare the callback function (so inside of the function should be within the ngZone).
I'm sure there'll be other devs in the same situation, so until the maintainer is not fixing this issue, here's the workaround:
constructor(private ngZone: NgZone ) { }
testVariable: string;

ngOnInit() {
   this.testVariable = 'foo';

   this.someService.someObservable.subscribe(
      () => console.log('success'),
      (error) => console.log('error', error),
      () => {
      this.ngZone.run( () => {
         this.testVariable += '-bar';
      });
      }
   );
}

Source:
https://stackoverflow.com/questions/50519200/angular-6-view-is-not-updated-after-changing-a-variable-within-subscribe
This is the updated code with the original this reference, so it's clear now your solution is wrong this has been referenced the right way, I had to add only ngZone.run()
      this.mediafilepicker.on("getFiles", res=> {
        let results = res.object.get('results');
        console.dir('getFiles',results);

        this.ngZone.run( () => {
          this.selectedImage = results[0].file;
        });

Nothing else has helped. A setter/getter or SetTimeout won't help. Changing this reference won't help either.

NgZone solved the issue.


Missing Function Download-BcEnvironmentInstalledExtensionToFolder

Hello Freddy,
I would like to use a missing function 'SaaS\Download-BcEnvironmentInstalledExtensionToFolder', which downloads app symbols from a SaaS environment, similar to how a developer manually downloads symbols using Visual Studio Code.
This new function would handle cases where I need to compile workspace apps using a general compiler and a SaaS environment. It ensures that all PTE and AppSource symbols are downloaded from the environment.
This new function cover case when i need to compile workpace apps only using general compiler + SaaS environment . All PTE, AppSource symbols will be downloaded from environment.
There is provided function signature, and I will deliver the implementation in a Pull Request.
Thank you.
$appSymbolsFolder = Join-Path $compilerFolder 'symbols'
$authContext = New-BcAuthContext -includeDeviceLogin -tenantID $tenant
$bcAuthContext = Renew-BcAuthContext -bcAuthContext $authContext
$publishedApps = (Get-BcEnvironmentInstalledExtensions -bcAuthContext $bcAuthContext -environment $environment | ForEach-Object { @{ "Publisher" = $_.Publisher; "Name" = $_.displayName; "Id" = $_.Id; "Version" = [System.Version]::new($_.VersionMajor, $_.VersionMinor, $_.VersionBuild, $_.VersionRevision) } })
foreach ($app in $publishedApps) {
  Download-BcEnvironmentInstalledExtensionToFolder -bcAuthContext $bcAuthContext -environment $environment -appName $app.Name -appId $app.Id -appVersion $app.Version -appPublisher $app.Publisher -folder $appSymbolsFolder
}
Download-BcEnvironmentInstalledExtensionToFolder -bcAuthContext $bcAuthContext -environment $environment -appName "System" -appVersion "<IP_ADDRESS>" -appPublisher "Microsoft" -folder $appSymbolsFolder

PR: https://github.com/microsoft/navcontainerhelper/pull/3705


Fix test errors

see
https://github.com/open-mmlab/mmdetection/issues/1600

I believe I fixed at least part of this (the isinstance part) in #1517.  I'm not sure if the other changes are addressed in my PR.

I believe I fixed at least part of this (the isinstance part) in #1517. I'm not sure if the other changes are addressed in my PR.

Yes, I suppose, you met similar errors. Can you look my PR, please?

I can't realize why build failed when no error and tests passed
https://travis-ci.com/open-mmlab/mmdetection/jobs/250997379#L6357

Your tests failed because of linter checks. See:
$ flake8 .
./tools/test.py:34:9: F841 local variable 'e' is assigned to but never used
The command "flake8 ." exited with 1.

to fix these errors run:
yapf -r -i --style .style.yapf mmdet/ tools/ tests/
isort --apply -rc mmdet/ tools/ tests/

Thanks

@korabelnikov FYI, the change that fixed your issue in PR #1517 was reverted due to a misunderstanding I had about the API. You should probably check the discussion there to see if it is relevant to this PR.

@Erotemic I'm sorry, but I haven't understand what's wrong

Hi @korabelnikov, you may refer to https://github.com/open-mmlab/mmdetection/pull/1517#issuecomment-551203752 and the following discussions. The api of forward may be misleading.

Hi @hellock !
Thanks, I read that discussion.
I sure it doesn't affect this PR.
Some callers use test with image as sole tensor instead of the list.
we can:
-merge this
-correct all callers to enforce call test([img], ...) instead of just test(img, ...)
what you prefer?

Thanks for all your efforts.
Allowing the usage of a sole tensor in forward_test() is unexpected and we have fixed the docstring to have a clear definition about the api. The preprocessing in inference_detector provides an example how to feed the input image. Is there any other cases in your side that requires other behaviors?
BTW, I am curious about the error in #1600, did you modify the testing scripts and it raised such an error? Or there is some bug in the codebase itself?

okay. I've understand.
I'll take a look

I thought that's a cause not in my changes but all can be.
https://github.com/open-mmlab/mmdetection/blob/4d84161f142b7500089b0db001962bbc07aa869d/mmdet/models/detectors/base.py#L87
I close this PR for a time until some user user meet it.


new documentation for how to use the loggers API

related #3784

@NoahMaizels Can you try to add this to bee docs using @mrekucci s help.

cc @NoahMaizels to sync with @mrekucci regarding this.

The logger API usage section was added to the CODING.md (#4406) and the swarm doc will be updated by @NoahMaizels.


[BUG] failed to run "go run cmd/core/main.go"

Describe the bug

➜  /Users/zhouzhengxi/Programming/golang/src/github.com/oam-dev/kubevela git:(master) k get configmaps
NAME          DATA   AGE
vela-config   2      34s
➜  /Users/zhouzhengxi/Programming/golang/src/github.com/oam-dev/kubevela git:(master) go run cmd/core/main.go
2020-10-08T21:52:52.357+0800	ERROR	vela-runtime	unable to install the dependency	{"error": "configmaps \"vela-config\" not found"}
github.com/go-logr/zapr.(*zapLogger).Error
	/Users/zhouzhengxi/Programming/golang/pkg/mod/github.com/go-logr/zapr@v0.1.1/zapr.go:128
main.main
	/Users/zhouzhengxi/Programming/golang/src/github.com/oam-dev/kubevela/cmd/core/main.go:97
runtime.main
	/usr/local/go/src/runtime/proc.go:203
exit status 1

To Reproduce

Get latest code from git@github.com:oam-dev/kubevela.git
commit: aa9c96d0b5ac6f332e3cb94948fc2082d425df77

Run go run cmd/core/main.go.

Expected behavior

Screenshots

Cluster information

Additional context

By vela install, the issue went away.
➜  /Users/zhouzhengxi/Programming/golang/src/github.com/oam-dev/kubevela git:(master) bin/vela install
- Installing Vela Core Chart:
created namespace vela-system
install chart vela-core, version 0.1.0, desc : A Helm chart for Kube Vela core, contains 31 file
Successfully installed the chart, status: deployed, last deployed time = 2020-10-08 22:08:12.754915 +0800 CST m=+4.883208811
syncing workload definitions from cluster...
imported workload `backend`
imported workload `podspecworkloads.standard.oam.dev`
imported workload `task`
imported workload `webservice`
get 4 workload definition(s) from cluster, syncing...
sync 4 workload definition(s) successfully
syncing trait definitions from cluster...
imported trait `manualscalertraits.core.oam.dev`
imported trait `metricstraits.standard.oam.dev`
imported trait `routes.standard.oam.dev`
get 3 trait definition(s) from cluster, syncing...
sync 3 trait definition(s) successfully
remove 0 legacy capability definition(s) successfully
- Finished successfully.
➜  /Users/zhouzhengxi/Programming/golang/src/github.com/oam-dev/kubevela git:(master) go run cmd/core/main.go
2020-10-08T22:08:36.351+0800	INFO	vela dependency manager	check on dependency	{"crd resource": "certificates.cert-manager.io"}
2020-10-08T22:08:36.360+0800	INFO	vela dependency manager	resources already exists, skip install	{"crd": "certificates.cert-manager.io"}
2020-10-08T22:08:36.360+0800	INFO	vela dependency manager	check on dependency	{"crd resource": "servicemonitors.monitoring.coreos.com"}
2020-10-08T22:08:36.364+0800	INFO	vela dependency manager	install helm char	{"chart name": "kube-prometheus-stack"}

I intent to run vela core locally, but I have to install it in a Kubernetes cluster first. This seems not right for local development.

The vela core is looking for the configMap in the DefaultOAMNS instead of the default namespace so that the config can be GCed on uninstall.

@ryanzhang-oss Thanks.
Besides, do you think make install should be added to install CRDs in the remote clusters? Now I have to select those CRDs one by one for local development.

@ryanzhang-oss Thanks.
Here is a summary of steps for local development.

create a ConfigMap vela-config in DefaultOAMNS  namespace

kubectl create configmap vela-config -n vela-system

delete and install manifests in charts/vela-core/crds

kubectl delete -f charts/vela-core/crds # Without deletion first, applying will get stuck
kubectl apply -f charts/vela-core/crds

@zzxwill  Can we add it to readme and close this issue?


why there no "previousMessages" argument?

you can give it instructions on how it behaves and stuff
i feel like this should be one of the core features of what you can do with the api but its not in there so...
behavior = '''You are an AI named <NAME>.
As <NAME>, you are able to generate human-like text based on the input you receive, allowing you to engage in natural-sounding conversations and provide responses that are coherent and relevant to the topic at hand.

You are able to process and understand large amounts of text, and can use this knowledge to provide accurate and informative responses to a wide range of questions or topics.
'''
# etc... you get the idea

previousMessages = [{
    'author': 'user',
    'description': f'N/A\n\n[system](#additional_instructions)\n- {behavior}',
    'contextType': 'WebPage',
    'messageType': 'Context',
    'messageId': 'discover-web--page-ping-mriduna-----'
}] if not self.invocation_id and behavior.strip() else None

and inside ChatHubRequest class, update() function:
self.struct = {
            "arguments": [
                {
                    "source": "cib",
                    "optionsSets": options,
                    "sliceIds": [
                        "222dtappid",
                        "225cricinfo",
                        "224locals0",
                    ],
                    "traceId": get_ran_hex(32),
                    "isStartOfSession": self.invocation_id == 0,
                    "message": {
                        "author": "user",
                        "inputMethod": "Keyboard",
                        "text": prompt,
                        "messageType": "Chat",
                    },
                    "conversationSignature": self.conversation_signature,
                    "participant": {
                        "id": self.client_id,
                    },
                    "conversationId": self.conversation_id,
                    "previousMessages": previousMessages <---  you can add this line
                },
            ],
            "invocationId": str(self.invocation_id),
            "target": "chat",
            "type": 4,
        }

Can you add this feature?I also want to try it.


Odd performance issue with LXD 2.21

Both machines using fresh Ubuntu Artful install + LXD-2.21 installed via snap from scratch (no migration).
This container is ridiculously large, weighing in at 65G.
I thought it was just my imagination that local copies seemed to be running very slow in LXD, compared with LXC. They are running very slow, when tested.
In fact, data below shows copy of local containers is far slower than copy over network, which makes no sense, as the network connection runs far slower than local disk i/o.
Let me know if there's any way to speed up a local copy.
Thanks.
net11 # time nice -19 lxc copy net11-big-container net11-big-container-migrate

real    90m45.254s
user    0m0.354s
sys     0m0.146s

net10 # time lxc copy net11:net11-big-contaier net10-spare-big-container

real    18m56.629s
user    0m1.164s
sys     0m0.220s

More details on the storage configuration would be useful. lxc storage show of all storage pools involved would be a good start

No storage pools. LXD init'ed as...
lxd init --auto --storage-backend=dir

The following command produces an error. I'm guessing because the backend is dir...
lxc storage show

Why do you run the first command with -19 that would cause the scheduler to grant that process less time than others.

lxc storage show expects the name of a storage pool, e.g. lxc storage show bla

nice -19, part of script to eventually run.
Currently machine has no load.

Do you have rsync.bwlimit value set?

rsync.bwlimit -> not set

And if you read the issue carefully, you'll see the problem is rsync is faster than than local disk i/o, which is the problem.
The local copy of a container is what's taking a very long time.

rsync.bwlimit will locally and remotely limit.

lxc storage show of the source pool would be helpful. :)

net11 # lxc storage show default
config:
  source: /var/snap/lxd/common/lxd/storage-pools/default
description: ""
name: default
driver: dir
used_by:
... ... ...
- /1.0/profiles/default

So I'm actually not surprised that network is faster than local when using a directory backed storage pool. With the directory backend, a copy of a large container involves duplicating every single file on the filesystem, so that's obviously very I/O intensive and slow as everything must be read and written again.
When you do it over the network, the source machine will do the reads and the target machine will do the writes, so you don't have the reads and writes both causing an insane amount of disk seeks and completely destroying your I/O performance.

Any of the storage backends other than dir would give you near instant local copies as they all support making an instant snapshot of an existing container, but there's no such thing for the dir backend, so you're looking at a full copy of every single file in the container, which combined with some amount of fragmentation can cause insane seeking of your drive, causing some rather terrible I/O performance.
Note that here I'm assuming that this is on spinning rust, SSDs won't have the seek issue and should in general behave better with the concurrent reads and writes.

Just ran another lxc copy without nice...
real	82m42.357s
user	0m0.060s
sys	0m0.029s

Same result. Local file i/o seems to take far longer than network i/o.

This is a problem. Every time I've ZFS + BTRFS database i/o is to slow for production machines.
And since CRIU has been abandoned, the only way to run massive i/o LXD containers + migrate them between machines is to do a local lxc copy container new-container then lxc copy new-container remote:remote-container.
I guess I'll have to deconstruct the lxc copy new-container remote:remote-container + modify it to actually do a copy from a live running container to a remote container.
Sigh... Not what I had in mind to do right now...

Hmm, yeah, so if btrfs and zfs aren't an option because of the workloads involved (they both have some tricks you can do to better handle databases though), dir isn't an option because of the amount of data involved and how busy the copy makes the system, then you're left twi two other backends, lvm and ceph.
Ceph is unlikely to be an option here unless you already have a very fast ceph cluster setup somehow.
LVM while definitely not our preferred backend, should still be a nice improvement over the directory backend. As it lets you choose the filesystem (defaults to ext4), you shouldn't see any performance degradation because of the filesystem. And it supports snapshots which would make for an extremely quick "lxc snapshot container" or "lxc copy container new-container". Might be worth a try.

Actually lxd snapshot runs even slower for some reason, with realtime of 126+ minutes.
Maybe the solution is adding the ability to pass options to rsync. So in my case all site files live under /sites + database under /var/lib/mysql, so simple solution is passing --exclude to rsync, which drops container size to <2G in most cases.
Let me know if there's a way to pass rsync options to lxc copy.
Nothing shows about this in the man page, so I'd like to suggest a simple LXD enhancement of the options...

--rsync=path (path to rsync to use, which could also be a custom script)

--rsync-opts (set of options passed through to rsync)

Seems like this is the best work around right now.
I'll change the issue ticket title to an enhancement request.

Wouldn't a cleaner approach for you be to use separate storage volumes for your database and websites?
That way they won't be included in a container snapshot and can be attached to multiple containers if needed.
Though that also means that copying the container to a remote host wouldn't bring those things with it but the same would be true with your suggested rsync options trick (which we're not likely to support as what tool we use for snapshot and transfer should be an internal implementation detail).

It really feels like the problem you're having is because of the "dir" backend being completely non-optimized and so terribly slow.
I'd strongly recommend considering switching to another storage backend, especially if you rely on things like snapshots and copies.

Using separate volumes for database works out poorly, due to added complexity managing containers, especially (as you mention), migrating/managing multiple spare container instances.

Same with backups, as backup facilities must run at host level, sequentially for all containers.

Backups for containers must run at host level. If backups run inside containers + many backups run simultaneously disk i/o thrash can take down machines.

The dir backend is the only option for high traffic sites, with custom code which involve database i/o for transactions. ZFS + BTRFS simply can't keep up.

Dirt simple solution seems to be adding these two options, for customized lxc commands.

Why not use the LVM backend?

That does support snapshot and fast copy of containers and uses ext4 or xfs as the actual filesystem.

If you want to stick to your rsync hack, you could put a wrapper script for rsync in /usr/local/bin that does what you want behind LXD's back. I don't really see how that'll help you though. It'd let you skip some directories during snapshot/copy, but that means that restoring the snapshot would then delete all that data or copying the container to another host would lead to that data being missing.

Closing as slow performance on snapshots and copies is something that we've always expected for the directory backend. This issue only confirms it but doesn't raise anything that we'd consider to be a bug in LXD.
Network transfers being faster than local snapshots and copies makes sense given that the reads and writes are then spread between two machines.
There are a number of ways to fix those performance issues by using another storage backend, either btrfs/zfs if an option or if you have to stay on ext4, then using LVM would still fix the snapshot/copy performance problems.
We don't plan on allowing excludes in snapshots/copy as that wouldn't be possible with all transfer mechanisms and as those are negotiated dynamically, having different set of files transferred depending on the transfer mechanism would just be terribly confusing. We'd prefer to have those cases where separating data from container makes sense to be using separate storage volumes instead.


quit() method is creating corrupted media

Hi @slhck ,
I am facing some issues with ffmpeg-progress-yield:

quit method is forcefully ending the process.
I used the quit method to stop a conversion, but it just ended the ffmpeg process forcefully leaving a corrupted file. What I want is partial conversion which can be done by giving the command "Q" manually.
I want to give a direct string instead of a list as the command
Giving a list is not bad but I feel like there should be a string method also to give the command to ffmpeg which will make the work easier.

Something like this:
cmd = "ffmpeg -i '{file}' -c:v libx264 -y '{output}'"
ff = FfmpegProgress(cmd)

Showing the conversion logs in the console.
I also want to show all the conversion logs of ffmpeg in the console, but don't know how to do it.

I hope you can do something 😢

I used the quit method to stop a conversion, but it just ended the ffmpeg process forcefully leaving a corrupted file. What I want is partial conversion which can be done by giving the command "Q" manually.

I assumed that sending SIGINT would make it quit cleanly. You can use the process.stdin property to send any stdin to the process:
ff = FfmpegProgress(TestLibrary.cmd)
for progress in ff.run_command_with_progress():
    print(f"{progress}/100")
    if progress > 50 and ff.process is not None:
        ff.process.communicate(input="q".encode())
        break

Does this work?

Giving a list is not bad but I feel like there should be a string method also to give the command to ffmpeg which will make the work easier.

Passing a list of strings is the preferred way to handle subprocess commands (see also the documentation). This way, the arguments are properly escaped for the shell.
I will not support passing raw strings for this library.
If you want to use strings and call this library, you might be able to simply call FfmpegProgress(cmd.split(' ')). This may or may not work depending on whether your command arguments contain spaces or special characters.

I also want to show all the conversion logs of ffmpeg in the console, but don't know how to do it.

Simply use:
ff.stderr

This will include all ffmpeg output.

Thanks a lot @slhck !

I assumed that sending SIGINT would make it quit cleanly. You can use the process.stdin property to send any stdin to the process:
ff = FfmpegProgress(TestLibrary.cmd)
for progress in ff.run_command_with_progress():
    print(f"{progress}/100")
    if progress > 50 and ff.process is not None:
        ff.process.communicate(input="q".encode())
        break

Does this work?

This method worked properly.

I will not support passing raw strings for this library.

Its ok, I can manage it.

Simply use:
ff.stderr

This will include all ffmpeg output.

This is giving the logs no doubt, but can I have the normal ffmpeg logs displayed in the console like when we use the simple subprocess method. Means I just want to show the live ffmpeg conversion in the console.


Cannot see maths equation in markdown

It shows LaTeX code:
2014-11-28-markdown-and-html.md
In my case, I solved with this script in _layouts/post.html
<!-- MathJax -->
<script type="text/javascript"
	src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.3/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>

So I kept Katex: https://katex.org/ because it is to be faster than MatJax.
I fixed the rendering issue by using the latest version with the auto render, (I had a init_katex.js that was doing that for me before).
And now it's all good.
Your alternative with MatJax works as well, since both MatJax and Katex works with the same syntax.
Thanks 👍


(moved) Add PlanWorkspacePath() method to VectorFieldPlanner

This PR is to add a PlanWorkspacePath() method to VectorFieldPlanner.
Issue #264
.
Questions about VectorFieldPlanner in general:

If you call PlanToEndEffectorOffset() for some distance, the planner never reaches that distance. Can we fix this?
Should we rename the "max_distance" argument?  it seems confusing to me.

Questions about this PR:

Potentially PlanToEndEffectorOffset() could be refactored to call PlanWorkspacePath, however I think PlanToEndEffectorOffset() has a more efficient implementation.
Do all the PlanWorkspacePath() methods in each planner need to have the same prototype?
To implement PlanWorkspacePath(), I call GetMinDistance... in both of the callbacks, so maybe this is not optimal.

This is a very nice addition. I left a bunch of comments on the diff and have answered your questions below:

If you call PlanToEndEffectorOffset() for some distance, the planner never reaches that distance. Can we fix this?

Can you be more specific?

Should we rename the "max_distance" argument? it seems confusing to me.

What do you suggest as a new name? I am open to renaming this as long as:

we add a stub that maintains backwards compatibility; i.e. forward the max_distance parameter and raise a deprecation warning
update any other PlanToEndEffectorOffset methods that take this argument in the same way

Potentially PlanToEndEffectorOffset() could be refactored to call PlanWorkspacePath, however I think PlanToEndEffectorOffset() has a more efficient implementation.
To implement PlanWorkspacePath(), I call GetMinDistance... in both of the callbacks, so maybe this is not optimal.

That would be a nice change as long as, like you said, it does not have major performance implications. Can you time the two implementations and see if there's a noticeable performance difference?

Do all the PlanWorkspacePath() methods in each planner need to have the same prototype?

The same arguments get passed to all planners in a Sequence. At a minimum, all of the planners should have identical required arguments. It's fine to have different optional arguments, but we do try to make them overlap as much as possible (e.g. we consistently use timelimit for all planners that have a planning time limit).

Moved to a new PR.


[Website] Link w icon

This page does not use the Component template
General
Should we cover link with icon as Link?

Compared to Carbon our guidance for links is a bit lacking.
BUT do we want to duplicate content?
Maybe we could add links out to the Carbon core guidance to talk about links without icons, which we don't address very well and see without underlines within paragraphs all the time

Overview

Do we want to encourage right or left side icon placement (links to link list #1598 as well)
Images OK

Content guidance

References link with icon as CTA, should we change?

The CTA page has a Types section which displays the type of icon used. Depending on whether we deprecate CTA or not, we might consider shifting this over to the Link with icon page. We could even change it to common icon usage or something similar.


[1.19.2] Drawer Visual Item Render Issue

Modpack: atm8 v1.0.8
Forge: 43.2.3
Functional storage 1.19.2-1.0.8
The sprites of honeycombs aren't showing in front, but blocks works fine and some others too.
View of the drawer:

View of the inside of the drawer:

I think this should be fixed already


Add Python Logo as favicon in GH Pages

I'll do this

You have it setup to not have a gh-pages branch, thus it would be impossible to change the favicon without having that setup


end_time excludes messages that occur at the same time

Description

Version: 1.2.1
Platform: ROS 2 Iron Irwini

Steps To Reproduce
from mcap.reader import make_reader
from mcap_ros2.decoder import DecoderFactory

mcap_path = "some_mcap.mcap"
some_topic = "some_topic"
first_ns = None
with open(mcap_path, "rb") as mcap_f:
    reader = make_reader(mcap_f, decoder_factories=[DecoderFactory()])
    for _, _, ros_msg in reader.iter_messages(topics=[some_topic]):
        first_ns = ros_msg.log_time
        break

first_msg = None
with open(mcap_path, "rb") as mcap_f:
    reader = make_reader(mcap_f, decoder_factories=[DecoderFactory()])
    for _, _, _, ros_msg in reader.iter_decoded_messages(
        topics=[some_topic], start_time=first_ns, end_time=first_ns
    ):
        first_msg = ros_msg
        break

# Error because first_msg is None.
print(first_msg.header)

with open(mcap_path, "rb") as mcap_f:
    reader = make_reader(mcap_f, decoder_factories=[DecoderFactory()])
    for _, _, _, ros_msg in reader.iter_decoded_messages(
        topics=[some_topic], start_time=first_ns, end_time=first_ns + 1
    ):
        first_msg = ros_msg
        break

# Correct message.
print(first_msg.header)

Expected Behavior

According to the documentation here, messages that were logged either before start_time or after end_time aren't returned by the iterator, but the iterator appears to also exclude messages that were logged at the same time as end_time.

Hmm, could it be as simple as changing these >= to >?
https://github.com/foxglove/mcap/blob/c8afa1eaec756956118cee6677981ee424d2eee0/python/mcap/mcap/reader.py#L314-L315
https://github.com/foxglove/mcap/blob/c8afa1eaec756956118cee6677981ee424d2eee0/python/mcap/mcap/reader.py#L93-L94

And I guess the question is whether the API was really intended to be inclusive or exclusive...

Change looks simple but yeah, the unfortunate part of making it inclusive (even though it matches the docs) is that you can't use an end_time as the next start_time if you want to iterate in time slices, since that'd duplicate records, so you'd need to do the +1ns trick. If it were up to me, I'd keep end time exclusive and update the docs, especially since it wouldn't be a breaking change to the library.

Purely based on Python's usual behavior with bounds, I would also lean toward simply updating the docs (list[start:end], array[start:end], range(start, end), numpy.arange(start, end), etc... are all exclusive)


Fix bug where app deployments don't delete prior objects

This currently unbreaks integration tests
I would like to add a client test to this so we can catch this issue sooner. But I'll put this PR up here for now in case we need to unbreak CI sooner.

edit: added client test for this as well


Inherited default is not validated

The value of a Parameter attribute - like default, doc, etc. - is inherited in a hierarchy of Parameterized classes. In practice, the inheritance only applies when the default attribute value is None.
In the example below, B is a subclass of A and the user intent seems to be to override the definitions of p1 and p2, from String and String to Action to Number, respectively. The result of that operation is that:

Because the default value of the default attribute of Action is None, B.p1.param.default will inherit from A.p1.param.default which is '1'. The value of p1 is then set based on that new default, leading to b.p1 == '1'. This is an invalid value for a Number.
Because the default value of the default attribute of Action is not None but 0.0, it is used directly to set B.p1.param.default, leading to b.p1 == 0.0.

import param

class A(param.Parameterized):
    p1 = param.String(default='1')
    p2 = param.String(default='1')

class B(A):
    p1 = param.Action()
    p2 = param.Number()

b = B()

assert b.p1 == '1'  # passes
assert b.p2 == 0.0  # passes

The focus of this issue is on the default attribute as it can be used to set the actual Parameter value, if the user does not provide a default when instantiating the class. But this issue is more general, the Parameters of a subclass can inherit other invalid attributes without any error/warning.
This discussion is linked to the proposal of enforcing an "is-a" relationship (https://github.com/holoviz/param/issues/97#issuecomment-783734974) between Parameters in a class hierarchy.
A pragmatic approach to this issue might be to run the Parameter validation code (Parameter._validate) after the whole inheritance procedure is executed, and emit a warning if that fails. As to avoid the issue above with p1, the author of B should define a default value for the overriding p1.

I agree that enforcing is-a would address this, but it also seems appropriate to run _validate on whatever the result of inheritance is.

Note that the behavior of main is now more reasonable (no longer type dependent), though still not validating as it should:

Fixed by #812.

@jbednar this is not completely fixed. #812 only added validation of default when a Parameter is not a subclass of it parent Parameter. So there's no validation in that kind of more common case:
import param

class A(param.Parameterized):
    x = param.Number(5, bounds=(3, 10))

class B(A):
    x = param.Number(0)

b = B()
b.x
# 0


Being in crit is not predicted by the client

Steps to reproduce:

Shoot your other self
Try to move
Rubberband

https://streamable.com/simnhi

Requires StandingStateHelper to move to shared which ideally requires https://github.com/space-wizards/space-station-14/pull/1406 to be merged first.


renaming python variable is too slow

It takes me about 50 seconds to rename a variable in python file

VSCode Version: 1.47.1
OS Version: MacOS 10.14.6

Steps to Reproduce:

Find a python script with about 400 lines.
Right-click a variable and select rename, key in the new name, and press the "Enter" button.

Does this issue occur when all extensions are disabled?: Yes

Probably belongs on https://github.com/Microsoft/vscode-python.
I haven't got this issue. Renaming takes about half a second in my largest project (about 3000 lines in about 15 files).

Please file this issue on the vscode-python extension's repo: https://github.com/microsoft/vscode-python/issues


Enable/disable per diem rates

Details

Fixed Issues

$ https://github.com/Expensify/App/issues/50862
Tests

Pre-requisite
Make sure you are on newDotPerDiem beta before testing this feature.

Go to the workspace where you want to enable per diem feature.

Toggle the Per diem under spend to enable/disable the feature.
Make sure that if you are on paid workspace, it is asking you to upgrade the workspace.
Make sure you can go to the per diem page.

[x] Verify that no errors appear in the JS console

Offline tests

Same as Tests
QA Steps

Same as Tests
PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

Android: mWeb Chrome
https://github.com/user-attachments/assets/a22461ba-2a82-434b-b8ed-738d9e9dd03b

iOS: Native
https://github.com/user-attachments/assets/2a1ccd9c-aabb-4a2a-a127-dbf71d8ce5a4

iOS: mWeb Safari
https://github.com/user-attachments/assets/94259899-d938-4c33-a2f7-bf97f5dcd326

MacOS: Chrome / Safari
https://github.com/user-attachments/assets/6efd1b80-12cf-43f7-a34f-a4d93fe74cee

MacOS: Desktop
https://github.com/user-attachments/assets/aa038645-99da-43d9-9556-5000f4b270c4

@shubham1206agra
Can you please share the extract of the design doc?

Shared

Upgrade screen has a styling issue.

Works fine on main

Looks like until the API is implemented, all we can do is visually check the page. There are no functional buttons or menus on the per diem page yet.
The code changes look fine.
I will test and update if I find anything.

Can you check again since I didn't touched the upgrade pages?

Oh. Checked again. This works well now.

Navigating to the per diem page through deeplink shows a Not Found page.
https://github.com/user-attachments/assets/86c72db9-04d1-4006-b7f3-246b3e945f88

Visually it looks pretty good to me from a design perspective, good finds on those small bugs too. I'm running a test build so I can take it for a spin as well.

Can you confirm if this happens with per diem only?

Only for per diem. "Rules" page works well.
https://github.com/user-attachments/assets/19c90ff1-b34f-4176-bfb1-10a52fb240e0

I am not seeing this problem. Have you enabled this feature for that workspace?

Yes. But on logging back in it gets disabled.
Does this need the beta enabled on backend?

So far it's looking good visually (web ad hoc build). Seems like testing is kind of limited at the moment since most of the stuff isn't interactive. But so far so good!

Visually this is feeling good! Do we have a sample spreadsheet I can use to import some per diem rates?

Ah, looks like maybe this PR is just about enabling/disabling the feature - I don't think I can actually upload anything yet.
Anyways, I think this is all good from a design perspective at least.

Ah, looks like maybe this PR is just about enabling/disabling the feature - I don't think I can actually upload anything yet.

Correct

Does this need the beta enabled on backend?

There shouldn't be any beta checks in the BE

@shubham1206agra
With reference to this, upon logging back in, the backend responses do not include the per diem value as enabled for the policy. Is this expected for now and not a blocker for this PR? It is not related to front-end changes.
https://github.com/user-attachments/assets/f508333a-cb5f-471c-be90-32785e0751fc

@Gonals The policy is not returning arePerDiemEnabled property. Can you fix this?

Looking into it

@Gonals The policy is not returning arePerDiemEnabled property. Can you fix this?

They are not returning it because this is not a property Policies have.
Instead, we should create a frontEnd helper function that:

Checks if the policy has an International Per Diem Custom unit
If so, checks if the Custom Unit is enabled.

I don't think so its a good idea. Since we always use these markers to obtain access the page, and deeplinking to any of those pages will cause problem as we need to calculate these properties.

I'm not sure I follow. What problems would it cause?

It will show not found page if the customUnits are not loaded yet. And we use different API to fetch these variables than customUnits.

Ok. Let me take a look and see how I can fix this from the BE

Uploading csv from OldDot throws an error.
{
    "jsonCode": 0,
    "message": "Expensify\\Policy\\CustomUnit::setAttributes(): Argument #1 ($attributes) must be of type array, string given, called in \/var\/www\/expensify.com\/ee6c06fd6ad\/lib\/Policy\/CustomUnit.php on line 93",
    "requestID": "8ddcf0f1fb822e11-BOM"
}

So, while the PR has made a lot of changes, only the page enablement and the initial page can be tested now. If this is merged now, we need to make a followup PR to test these pages again once backend changes are done.

arePerDiemRatesEnabled should now be returned from the backend. The Web-E PR has yet to merge, but the Auth PR is deployed and should be enough for this flow. You might need to log out/back in.
@shubham1206agra

It works well now.
I will complete the checklist with testing enabling/disabling and the initial page display.
I guess we will make another PR uncommenting the pending parts of this PR after backend changes are deployed. Then I will test remaining parts in that PR.

Reviewer Checklist

[ ] I have verified the author checklist is complete (all boxes are checked off).
[ ] I verified the correct issue is linked in the ### Fixed Issues section above
[ ] I verified testing steps are clear and they cover the changes made in this PR

[ ] I verified the steps for local testing are in the Tests section
[ ] I verified the steps for Staging and/or Production testing are in the QA steps section
[ ] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[ ] I checked that screenshots or videos are included for tests on all platforms
[ ] I included screenshots or videos for tests on all platforms
[ ] I verified tests pass on all platforms & I tested again on:

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

[ ] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[ ] I verified proper code patterns were followed (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[ ] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I verified that this PR follows the guidelines as stated in the Review Guidelines
[ ] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[ ] If a new component is created I verified that:

[ ] A similar component doesn't exist in the codebase
[ ] All props are defined accurately and each prop has a /** comment above it */
[ ] The file is named correctly
[ ] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[ ] The only data being stored in the state is data necessary for rendering and nothing else
[ ] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[ ] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[ ] All JSX used for rendering exists in the render method
[ ] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[ ] If any new file was added I verified that:

[ ] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[ ] If a new CSS style is added I verified that:

[ ] A similar style doesn't already exist
[ ] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)

[ ] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[ ] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[ ] I verified that all the inputs inside a form are aligned with each other.
[ ] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[ ] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[ ] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

@shubham1206agra
Spanish translations are not added?

It works well now.
I will complete the checklist with testing enabling/disabling and the initial page display.
I guess we will make another PR uncommenting the pending parts of this PR after backend changes are deployed. Then I will test remaining parts in that PR.

Which parts are commented out?

Which parts are commented out?

Importing spreadsheet, opening settings, subrates etc. in WorkspacePerDiemPage.

@c3024 Yeah. Since I didn't received them yet.

I think you can update them with Spanish translate GPT and @Gonals can confirm them.

cc @bfitzexpensify - what's the correct help article URL for this?

https://help.expensify.com/articles/expensify-classic/workspaces/Enable-per-diem-expenses

Do we have one ready for NewDot though? Also, where is this link shown exactly @shubham1206agra ?

Sorry, completely missed the ND portion, need to have my coffee.
We don't have ND help docs up yet - opened https://github.com/Expensify/Expensify/issues/442420 to get them sorted, should take me a day or two.
We don't need that to be a blocker for this, I can open a PR to update the link once the help docs are ready.

@bfitzexpensify

need to have my coffee.

This PR has other things apart from the link. I think this PR should not be closed.

Neat! Let's merge! @shubham1206agra, send the PRs with the rest of the functionality (importing/exporting/setting default category) my way when they are ready. I'll test with the backend and deploy the backend PRs accordingly

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.


Simplify global logger setup

This PR tries to simplify or at least make the global logger setup consistent across the repository.
It adds:

a log.go file with the same setup to each package where the logger is needed (which could become a standard)
uses logrus.FieldLogger interface instead of *logrus.Logger (where possible) (so that the parent logger itself can be a *logrus.Entry with some base context)

This move also makes it easier to change how we do logging globally if we decide to, but it's heavily opinionated, so feel free to reject if you think it's too big change.

I haven't checked, but is the runtime formatter working correctly with the FieldLogger logger?

FieldLogger is just an interface which defines the common methods of *Logger and *Entry. Underneath it can either be a Logger or an Entry instance, it doesn't matter.

👍 Ok, I will check out this branch and test it.

Can we wrap the logger initialization in a Once as I don't think it is thread-safe currently (it wasn't done in this change, it is an older issue).

Sure, nice idea!

Done


⚠ Fox Sports has degraded performance

In f59f420, Fox Sports (https://foxsports.com) experienced degraded performance:

HTTP code: 200
Response time: 5032 ms

Resolved: Fox Sports performance has improved in 220792d.


Unable to prepare route [{path}] for serialization. Uses Closure

Hi there,
When I run php artisan route:cache I get Unable to prepare route [{path}] for serialization. Uses Closure.
How can I solve this?

There are some routes that don't use a controller and can't be serialized. Just add a controller and move the code there.
https://github.com/cretueusebiu/laravel-vue-spa/tree/master/routes


client.Raw in nest

How can I do client.Raw.IndicesGetMapping("_all") in nest 2.3.3 ?

Hey @serefbilge Raw was renamed to LowLevel, so you would do:
client.LowLevel.IndicesGetMapping()


Integrating StyleCI

Can someone integrate styleci and its corresponding badges in readme file. you can write dummy id for badge untill i enable style ci in this repo. I will make corresponding edit.

@bloggervista I am working on it.

@Yogendra0Sharma  Ok.

Done thanks


Exposing channels to the exported functions

This PR somewhat implemented the use of channels internally in the package:
https://github.com/EventStore/EventStore-Client-Go/pull/56/files
I find that i always wrap the .Recv() method with a goroutine to create a channel when using this package - wouldn't it be more natural that the .Recv() method returned a channel?
Also i think there could be more documentation regarding the .Recv() method. I suppose it just blocks the calling goroutine when waiting for events? Will this unblock if ctx.Done() emits? If not - is this not prone to goroutine leaks?

The code changed a lot in 2 years. Subscriptions no longer use channel internally.
I don't think using channels would be better because Go gRPC library is not based on channels, that would lead to none optimal memory usage and a lot of circle around with no benefit imho.
I remain open to suggestion and would like to know how you'd do it for example.

What i'm doing currently is wrapping the .Recv() like shown below. But it would be great if this functionality was supplied by the client itself.
func (m ESDBDataService) subscribeToEventDataStream(ctx context.Context,
	streamName string, from esdb.StreamPosition,
) (<-chan []byte, error) {
	returnChan := make(chan []byte)

	options := esdb.SubscribeToStreamOptions{
		From:           from,
		ResolveLinkTos: true,
	}
	subscription, err := m.esdbClient.SubscribeToStream(ctx, streamName, options)
	if err != nil {
		return nil, err
	}

	// Map data from event to pure data stream
	go func() {
		defer close(returnChan)
		for {
			select {
			case <-ctx.Done():
				return
			case ev, ok := <-chanFromSubscription(ctx, subscription):
				{
					if !ok {
						return
					}
					returnChan <- ev.Event.Data
				}
			}
		}
	}()

	return returnChan, nil
}

func chanFromSubscription(ctx context.Context, subscription *esdb.Subscription) <-chan *esdb.ResolvedEvent {
	returnChan := make(chan *esdb.ResolvedEvent)

	go func() {
		defer close(returnChan)
		defer subscription.Close()

		for {
			event := subscription.Recv()

			if event.SubscriptionDropped != nil {
				break
			}

			if event.EventAppeared != nil {
				// Forward data to channel
				returnChan <- event.EventAppeared
			}
		}
	}()

	return returnChan
}

Also - can you confirm that canceling the context given to SubscribeToStream will unblock .Recv()?

Also - can you confirm that canceling the context given to SubscribeToStream will unblock .Recv()?

Yes it should

could my example with chanFromSubscription be implemented as a method on *esdb.Subscription? And similar on read?

If you ask if your function could be a valuable addition to the client, I would say no because it's pretty specific and doesn't deal with connection drops, nor checkpoints if you subscribed to $all for example. To be fair, it's hard to come up with higher-level functions because the way you consume a subscription might differ from how other people would do. We decided to expose a leaner interface so it accommodates everybody.
What can be done however is to have a community driven project where your function could be added. The idea is to allow such project to not be tied to the client release schedule, so it can evolves at its own pace.


[minor] App icon missing in taskbar

Operating system: WIN 10
Messenger for Desktop version: 2.0.5

Thanks! Did you just install this, did you install over an existing version, or did you update inside the app?

I had the previous broken release, and this one was probably installed over it (not sure anyway, because of extremely minimalistic installer)

Can you please try to update to 2.0.6 then unpin the shortcut and pin it again?

Updated and still not working .... I have never pinned it on my taskbar, so it disappears upon close. Now I have restarted app agan to be 100% sure, but no, still not working.

Same issue, used the auto-update, never had it pinned. The icon works in the system tray if it's of any help.

Hi there :) Any update on this in future version? Reported for 2.0.5, but still not working in 2.0.8 :/
Win10

2.0.8? I'm still on 2.0.6 with no updates available.

You have to watch releases tab here on github. Current release is 2.0.8-dev

Just installed the fresh 2.0.9, no difference. Though i did only update the app through the internal updater, does it need to be freshly installed?

2.0.9 and still nothing. I tried clean install (manually deleted folder in User/Appdata/Local as it seems to have no uninstaller) and after clean install, still no icon ...

Hey guys,
I had version 2.0.1 installed and upgraded to version 2.0.9, the icon was still missing.
Most likely this is caused by the shortcut located here: %APPDATA%\Microsoft\Windows\Start Menu\Programs\Alexandru Rosianu
Edit the shortcut and select the icon from here: %USERPROFILE%\AppData\Local\messengerfordesktop\app.ico
Hope this fixes your problem.

Just an update: if I pin the icon to the taskbar using the shortcut created on the desktop during the installation it's fixed but if I launch the app without pinning it that way it gives the same result as the screenshot. So I think the icon is somehow not linked with the application itself? not sure how it all works.
edit: I checked the original location of the executable and it's the update.exe and that doesn't have an icon merged with it but rather an icon on the same folder, the Messenger for Desktop.exe on the app folder however has the icon merged but it's not the one the shortcut is usually linked to? this is what I noticed anyways.

I have repaired this issue, but I cannot provide exact description as I have repaired it now and I cannot look at it again.
The problem is in links. If you install new version, even new link links to new version app, but icon link is targeted to version, that no longer exists. The problem is, that the icon is not loaded from direct link or exe, but from another link somewhere in Programs folder of user. I remember, that I have found some 2.0.7 link which were able to launch 2.0.9 app, but the icon on change alerted, that it cannot find 2.0.7 directory.
You have to replace links for app on your drive (use search toolbar for it) and than the icon on taskbar is good.
The truth is, that the current installer makes quite a mess in filesystem. Best thing will be creating classic windows installer with Program Files installation path and without versioning. Jist copy it to one folder and the app will be always in that folder, links will have same name and no problem....

Found problem! First do this:

Then do this:

In a line called Start in: change directory to you messenger location etc: C:\Users\yourusername\AppData\Local\messengerfordesktop\app-2.0.9
I had in a last line 2.0.1 version which version I don't have any more, just rename to version you use atm!


Action re-runs should start a new run instead of overwriting an old run log

Description
Hello, FWIU, re-running an older workflow run overwrites that run's log instead of generating a new one. In large teams, this can lead to confusion as it'll be easy to erase the older run logs which will make it harder to troubleshoot issues and pin the root causes. Consider a legacy environment where mutable deployments are still widely used, the issues can be easily amplified.
I propose exposing a setting that can toggle this behavior.
Gitea Version
1.22.5
Can you reproduce the bug on the Gitea demo site?
Yes
Log Gist
No response
Screenshots
No response
Git Version
No response
Operating System
No response
How are you running Gitea?
Docker compose
Database
SQLite

It seems more reasonable to create a new task. Maybe we can have more discussions here.


Added: Logo

What:

logo added

Why:

It Grabs Attention.
It Makes a Strong First Impression.
It's Memorable.
It Separates You From Competition.
Your Audience Expects it.
Creates an Emotional Connection.

How:

Design a logo based on Persian & tool concepts.

Well done, We really needed something like that.

Great first impression

@all-contributors please add @moh3n9595 for tests and code


Undefined method `user_id' for nil:NilClass on Solutions page

Hi I've catch 500 error after submitted my final version for kata https://www.codewars.com/kata/583989556754d6f4c700018e/solutions/javascript

but OK for https://www.codewars.com/kata/583989556754d6f4c700018e/solutions/python

#944 I should have googled better :( I have the same issue exactly as here

I've experience the same problem with this kata https://www.codewars.com/kata/show-multiples-of-2-numbers-within-a-range

Closing because a lot have changed since this issue was reported.
Please open a new issue if the problem is not fixed.


Update json response in API spec

https://www.ebi.ac.uk/panda/jira/browse/ENSWBSITES-2660

Looks good to me but in the PR#5 it does return HTML page as well which is not selected in the API Spec

During code review we found out that this is not recommended.


Doc: missing RouteRecord type definiton

Version
3.0.2
Reproduction link
https://router.vuejs.org/api/
Steps to reproduce

Read the API documentation at https://router.vuejs.org/api/#routes for the routes router construction options and see that the routes field is designated as an array of RouteConfig (with an accompanying definition of that type).
Read the API documentation at https://router.vuejs.org/api/#route-object-properties for $route.matched and see that the copy of the aforementioned routes option is now designated as an array of RouteRecord (with not definition of that type)

What is expected?
If the latter is a copy of the former, it should be expected that it should be the same object type or that an explicit relationship between the 2 types be mentioned in the API doc as a canonical definition.
What is actually happening?
There is no canonical definition of what a RouteRecord type is, we only have an example that denotes the array of RouteConfig and we don't understand why copying a type does not result of an instance of the same type.

it's a different presentation but still the same information. Not sure what I will do here but I will see

RouteConfigThe type is the basic information that defines the route, and the configuration tells the program the view that needs to be obtained and the parameters passed, etc..
In the process of instantiating VueRouter, these configuration items are obtained through the createMatcher=>createRouteMap=>ʻaddRouteRecordfunction to generate a tree of theRouteRecord` structure. It adds the upper and lower node information of each route configuration and the attributes hanging on the generated router-view instance. The specific code is as follows:
  var record              = {
    path: normalizePath(path, parent),
    components: route.components || { default: route.component },
    instances: {},
    name: name,
    parent: parent,
    matchAs: matchAs,
    redirect: route.redirect,
    beforeEnter: route.beforeEnter,
    meta: route.meta || {}
  }

So saying'Route records are the copies of the objects in the routes configuration Array (and in children Arrays)' is unreliable.
RouteConfig is a static property type for configuring vueRouter
RouteRecord is the tree node type when vueRouter is running


Scan C files

Extension Version
v0.1.0
What's the feature?
Ensure the extension runs on C files. I've only checked it on C++ files.

The extension already ran Cppcheck on C files. In fact, it would run Cppcheck on any file. See #12.


Is auto-completion supported ?

Hello,
Is auto-completion supposed to work? I'm running LSP-TexLab on Sublime 4113, I get documentation popups when hovering things like bibtex citations, build on save also works, but auto-completion doesn't work as it does in the Texlab demo:

Tried my best reading LSP-Texlab and Texlab's documentations, hopefully I didn't miss anything too obvious.
Regards,
Jules

@JPenuchot FYI, https://github.com/sublimelsp/LSP-TexLab/issues/9#issuecomment-914072841
You would have to add text.tex into auto_complete_selector in ST's settings.
"auto_complete_selector": "meta.tag, (source | text.tex) - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc",

FYI, in the latest LSP-TexLab 0.4.4, the autocompletion should be auto working more like VSCode. Thanks to @rwols


exec instead of run

I use macvlan for my networking and run fails then because of port conflicts.

The reason your networking is failing because exec runs in an existing container and run creates a new container.  Running run twice would try to create two containers and bind to the same port, creating a conflict.
Sounds like you have an issue with your Docker setup.
Verifying running containers with docker ps


Add tooltip/message to Teleport System inspector, to denote that "None" means Instant Teleport

XRTK - Mixed Reality Toolkit Feature Request
Is your feature request related to a problem? Please describe
Having the teleport system default to "None" could cause confusion, as it actually means it is teleporting but instantly.
How would you classify your suggestion

Usability / Configuration

Describe the solution you'd like
Add a simple message to the Teleport System inspector, so that when the Teleport Provider is set to None, it means the default "instant" teleportation system is enabled

We could also rename it to just "default"


feat!: Switch to using async buffers

Signed-off-by: Alex Collins<EMAIL_ADDRESS>PoC

Note to self.

HTTP based source and sinks currently work sync. This would force them to become async (breaking change).
It does not address the problem of Kafka async.


How to change owner of workflows and co-ordinators in hue (MySql as backend database)

@romainr We have reviewed the steps which you provided in below link to change the owner of workflows with sqlite as backend database.
http://gethue.com/how-to-manage-the-hue-database-with-the-shell/
Can we also have the steps for MySql as backend database? Also hue has been installed using tarball.
Hue Version: 3.9
Thanks in advance!

Well, for 3.9 the DB doesn't matter, it's just Python code
# First move the objects
from desktop.models import Document2
from django.contrib.auth.models import User
u1 = User.objects.get(username='bob')
u2 = User.objects.get(username='joe')
Document2.objects.filter(owner=u1, type='oozie-workflow2')
> [<Document2: MyWf - bob>]
Document2.objects.filter(owner=u1, type='oozie-workflow2').update(owner=u2)
> 1
Document2.objects.filter(owner=u1, type='oozie-workflow2')
> []
Document2.objects.filter(owner=u2, type='oozie-workflow2')
> [<Document2: MyWf - joe>]
wfs = Document2.objects.filter(owner=u2, type='oozie-workflow2')


[Technical]: Automatically move issues to projects if applicable

Change Description
Issues that have been classified as bug, accessibility problem or team task should automatically be moved to projects, provided the issue label check succeeds
Additional Comments
No response
Technical notes
Amend workflow with a "move issue" job

Workflow not yet functional, reopening


Update alias categories

Update alias categories. This will list aliases on together with out of the box argument aliases (https://cakebuild.net/dsl/arguments/). Also website doesn't support multiple categories on alias. I therefore replaced the two categories with a single one.

:tada: The changes implemented in response to this issue shipped with Cake.ArgumentHelpers v1.0.0
The release is available on:

:rocket: GitHub Release
:package: NuGet Package


Duracloud-1265: Improve accessibility of SyncTool UI

JIRA Ticket: https://jira.lyrasis.org/browse/DURACLOUD-1265

Other Relevant Links (Mailing list discussion, related pull requests, etc.)

What does this Pull Request do?
Changes to HTML and CSS of SyncTool UI to improve accessibility as measured by the WAVE Accessibility Evaluation Tool.
How should this be tested?
Build DuraCloud and run the SyncTool UI. Compare the results between the 'develop' branch and this PR using the WAVE extension for your browser.

Interested parties
@duracloud/committers

Thanks. I think I got it up to date.


Check if scheduler is completely implemented

Rewrite mongo schema, graphql typedef, and maybe the queries and mutations
Each course should have one primary section id, and multiple secondary section ids
Each schedule will have multiple classes
Rewrite the schema to show the relationship between the course id, the primary section id, and the secondary section ids

Current backend's "typedef" equivalent: here
Models: here

Overview:
Current model is defined incorrectly. Refer to prouction backend for a correct implementation. Basic outline: relationship between class_id, primary_section_id, and secondary_section_id is not defined.
Changes will propogate through module.


[docs] Describe how to disable the 'close all tabs' popup in IE

fixes #4803

@testcafe-build-bot \retest


add reconnect on send, read,run function

add reconnect on send, read,run function

@denofiend
Hi, have you tried the modified lib on a Rpi Pico?
I get this error:
Connecting to lon1.blynk.cloud:80...
Traceback (most recent call last):
  File "<stdin>", line 16, in <module>
  File "BlynkLibMod.py", line 293, in __init__
  File "BlynkLibMod.py", line 87, in __init__
  File "BlynkLibMod.py", line 312, in connect
  File "BlynkLibMod.py", line 328, in create_socket
AttributeError: 'module' object has no attribute 'IPPROTO_TCP'

The original lib does work though.


Type Hint for DetailedResponse.get_result() is incorrect.

Describe the bug

To Reproduce

https://github.com/IBM/python-sdk-core/blob/2c027cb8689ba8bb997fb4cdd3201e68674d27a8/ibm_cloud_sdk_core/detailed_response.py#L46 lists the return value as requests.Response however the documentation for methods in the library such as  post_view: https://github.com/IBM/cloudant-python-sdk/blob/master/ibmcloudant/cloudant_v1.py#L3030 and the code in the core sdk (https://github.com/IBM/python-sdk-core/blob/2c027cb8689ba8bb997fb4cdd3201e68674d27a8/ibm_cloud_sdk_core/base_service.py#L322-L325) shows a  parsed json object as one of the options for the result value.
Expected behavior

Type hints to correctly indicate which type(s) can be returned from DetailedResponse.get_result()
Screenshots

Must gather (please complete the following information):

SDK Version [e.g. 1.2.1] 0.1.3
Python Version [e.g. Python 3.7] 3.8
Name of service that you're trying to use (if applicable) cloudant
Name of operation that you're trying to invoke (if applicable)

Additional context

Transferred in as the DetailedResponse is defined here.
Additional info the Cloudant SDK v0.1.3 is using:
ibm_cloud_sdk_core==3.15.1
and used generator version 3.49.0

:tada: This issue has been resolved in version 3.16.1 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Audio recordings and testing

Record new audios not present in current model
Add classes to classification model
Test performance of audios

All required classes were recorded on 07/02/2022 (Living Lab). Between 20-40 tracks for each of them.

Done


[Question] How can I achieve right-clicking on selected text?

Question
Hi there, thanks for your great work. I am new to win-vind, I wonder how can I achieve to right click on the selected text?
I've tried GUI VISUAL MODE, but there is no click_right function in this mode as in GUI NORMAL MODE.
I've also tried keeping o pressed, but it seems that o+h/j/k/l is illegle combination.

Here is an example of 'right-clicking on selected text', say I want to use win-vind to right-click letter 'd' within the web page or other desktop software.

The mappings in the documentation are only the default settings. All functions can be called in respective modes.
supported functions: https://pit-ray.github.io/win-vind/cheat_sheet/functions/
The following is an example of defining a mapping in GUI Visual (gv) mode.
gvnoremap a click_right

Write in .vindrc or run with : prefix in normal mode.

Thanks for your quick reply!
I've tried configuring .vindrc, it works for some circumstance. And I thought that the distance between the cursor & selected text is the cause of some failed right-clicking.
Some Tests
See the following three examples.

In MS Edge, the right-clicking on selected text will tolerate a distance between the cursor & selected text about half a character. Thus, the click_right works.

In Zotero, the 'tolerance' is zero. Thus click_right failed when the location where cursor stops is out of the scope of selected text.

Nevertheless, in VISUAL mode, you could arrive some situation that the cursor luckily stops within the scope of selected text. Thus, the click_right works again.

My Question
Is there a solution to achieve hovering the cursor in GUI VISUAL MODE?
Since different software have different 'tolerance' for the distance between the cursor & selected text, I would like to move the cursor into the scope of selected text manually.
My Appreciation
I appreciate your fantastic work, this tool is amazing and I love it a lot!
I am not finacially powerful enough but I wish to help you by contributing to this project. Maybe I could do some translation in my spare time.
Thank you again!

Maybe Found A Bug
Hi pit-ray, I tried to change from GUI VISUAL MODE to GUI NORMAL MODE for the purpose I mentioned above. However, I am confused by the left mouse behavior before and after the mode change.
Config
I have my .vindrc configured as below.
gvnoremap a click_right
gvnoremap <esc> to_gui_normal
gvnoremap : to_command

Test
When I changed the mode from 'GV' to 'GN', the left mouse didn't seem to be released.

Question
I looked into the source code and found that, in src/bind/mode/change_mode.cpp, when changing from 'GV' to 'GN', the mouse left event might be handled unappropriately. (See below.)
https://github.com/pit-ray/win-vind/blob/2d7c1cda120eef31083ba689e94e855eb31f9bf3/src/bind/mode/change_mode.cpp#L40
My question is, should not it be util::release_mousestate(KEYCODE_MOUSE_LEFT) ?

About the distance between the cursor and selected texts.
For example, in a chromium application, if you turn on cursor browsing from F7, you can select like Vim by using Editor Normal.
https://user-images.githubusercontent.com/42631247/174470568-0ca62dc5-fa31-4038-8ba9-686303467c33.mp4
Fine-tuning the selection with the mouse cursor is very difficult, but may be possible with the addition of a feature like #92.
About the issue of the mouse not being released.
The problem may be a bug.
In the code, the reason for the click instead of release is to deselect the selected text. A click will eventually create a release message, so it is the same thing.
I will investigate and fixed.
About contribution
It would be helpful if you could translate it.
I welcome pull requests on the development side as well.
If you want to discuss the development aspect of the project, please ask in Development category in Discussion tab.
Please feel free to ask any questions about the development environment, the direction of the project, the meaning of functions, questions about the design, and so on.
Thanks.

Thank you for the detailed reply!
I would be glad to make some contribution when I have more free time:)

Open for milestones.


What is the Rationale behind Null Safety Since Dart already has Optionals

Dart already has this thing called Optionals. For example
void screenNavigator(BuildContext context, Screen screen,
      [StreamedResponse extraData]) {

}

From the above function, extraData is an Optional Argument.
Why then is the need of including nulls into the language?

Big question. Here's a tiny answer: Null safety is the ability of the static analysis to make a distinction between null and other objects. Pre-null-safety code would allow a variable with type String to have the value null as well as any string; with null safety a variable of type String can refer to any string, but it can't be null. All the changes related to null safety were included because they helped keeping track of those nulls at compile-time, and thus ensuring that no null errors occur at run-time, except for those expressions which are created for that very purpose (s!).
Optional formal parameters is a completely different mechanism: They allow for calling a function with a different set of actual arguments, because it is allowed to omit an actual argument for a parameter which is optional. The optional parameter could be nullable or non-nullable, and a non-optional parameter can be nullable as well as non-nullable, those two properties are independent of each other.
They do interact in one or two ways, though: An optional formal parameter must have a default value; that value can be specified explicitly (void foo({int i = 1})), but when the type of the formal parameter is nullable, it will get null as its default value implicitly if we do not specify a default value (void foo({int? iq})).

I think I can close this, because it doesn't give rise to any actionable issues. Also, questions like this are probably better positioned on StackOverflow or similar systems tailored for questions and discussions.


choppy scrolling in 2D mode

Bug Report
@chafey pointed out that scrolling with slider or StackScroll tool is choppy on IDC.
Describe the Bug
If you load the same dataset in the MPR view you can see how smooth it should be.
What steps can we follow to reproduce the bug?

Visit the IDC link above
Drag the slider.  Lots of "Loading..." hangs but choppy even after loading is complete.  These two may be related

Pretty sure it's because of this stuff which should not exist:
https://github.com/OHIF/Viewers/blob/94a9067fe3d291d30e25a1bda5913511388edea2/extensions/cornerstone/src/index.js#L42
I had removed that stuff in a branch here which included another tool as an example, so maybe we can pull those changes back in
https://github.com/OHIF/Viewers/pull/2169


Disable the main window toolbar when the modal overlay is shown

Keeping the main window toolbar activated while the modal overlay is shown could create the appearance of the non-responsive GUI.
Fixes #22.

On master (ca055885c631de8ac0ffe24be6b02835dbcc039d):

With this PR:

Tested ACK d0cc1f6df740e03ca0213a3754c3277b01ae2c05.  Tested on Linux/X11 as much as I could given it's a pretty small change; seems like a nice improvement.  I'm not experienced in Qt, but I don't see anything obviously problematic about the code.

Tested ACK. Tested on Ubuntu 20.04 LTS. It can improve user experience.

Not sure whether it's still helpful but I tested it on MacOS and confirm it worked as well, nicely done @hebasto

@polylunar thanks! It is very helpful to review before or after a merge. Great to see and looking forward to more tests and review from you :rocket:


CI: increase core count, memory, and swap

I've been running some tests to reduce build times. For whatever reason the Rust compiler isn't able to fully utilise 16 cores, so it seems like 8 cores is the next best option that doesn't lead to underutilisation.
In testing, this reduced the x86_64 Unstable build time to {{ time }} (my last test was with 16 cores, haven't had the time to test with 8 cores yet).
Draft as the EBS-Swap option is currently not merged into the main CI Lambda function, but I think it would still be good to get comments on this.

For whatever reason the Rust compiler isn't able to fully utilise 16 cores, so it seems like 8 cores is the next best option that doesn't lead to underutilisation.

Doing 8 cores and 2 jobs might help that? (or more interesting combinations like 4 cores and 4 jobs)
This looks good to me regardless though!

I did try raising the max-jobs but eventually you hit a bottleneck where a load of derivations require cosmic-settings and end up being blocked. At least with using all cores for a single job we (mostly) guarantee none are going to sit idle.

I've got a build running with 8 cores at https://github.com/drakon64/nixos-cosmic/actions/runs/10310406637. This should give an idea as to how long future builds will take.

@lilyinstarlight I think this is good to go now


How to lock thread when worker > 1

I have 4 workers when sanic runs like below:
app.run(host='<IP_ADDRESS>', port=port, workers=4)

I have tried to use both multiprocessing.Lock or threading.lock to lock thread but I will get differnt lock so I can hardly lock the the process.
Is there anyway to fix this?Thank you

Why do you wanna lock thread ? This is async... web server. it's single thread.

@yunstanford  Without thread lock I can only use write lock in database  as I need  consistency of data sometimes. However the database is not only used by this app so it's not a good idea to use eXclusive lock. So I wonder is there any elegent way to fix it. Thank you.

@yunstanford I believe your problem is the architecture. Try to use a job
queue to connect to the database, like celery.
Em dom, 9 de jul de 2017 às 23:47, guobuping<EMAIL_ADDRESS>escreveu:

@yunstanford https://github.com/yunstanford Without thread lock I can
only use write lock in database as I need consistency of data sometimes.
However the database is not only used by this app so it's not a good idea
to use eXclusive lock. So I wonder is there any elegent way to fix it.
Thank you.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/channelcat/sanic/issues/838#issuecomment-313988788,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAvofKRtqlus8_vdfNm5AlCNk-B0LKzCks5sMZDVgaJpZM4OQwLO
.

@thiagoribeiro  I see I can use a queue to achieve that. However it will increase the complexity. But if I can hardly find a way to fix it ,I'll try to use a queue. Thank you

@guobuping is there still an issue here or are you satisfied? Personally I think DB consistency should be handled by the DB 🤔  but I don't know the specifics of your situation.


QNL OAI server sometimes throws exceptions

Here's a screen shot of an error from QNL's OAI-PMH server:

I've noticed that you can generate these programmatically using Sickle to just walk through the records that come back from a ListRecords call. It doesn't seem to be deterministic when the errors get thrown. Perhaps we can put a sleep in between requests to be gentler? Or maybe there's a fix they can do on their side?
import sickle

oai = sickle.Sickle("https://api.qdl.qa/api/oaipmh")
for rec in oai.ListRecords(metadataPrefix="mods_no_ocr"):
    print(rec.header)

@edsu, I have contacted one of their developers (Arif Shaon) and invited him to take a look at this ticket and help us come up with a strategy for solving this issue.

@jacobthill I'm assigning this to you for now pending the results of your comment above and any information from Arif. Once we have more information, we can resolve or write more tickets.

@jacobthill if it would be helpful for Arif to chat about this problem and how to reproduce let me know, I'd be happy to do a call.

I don't think QNL has made any changes; at least they haven't told me of any. This is pretty typical behavior from my experience. Sometimes collections will complete and sometime the server will throw an error. I reminded Arif of this issue so hopefully we'll here back soon but I'm hoping if we improve our http request retries and data partners do what they can, we will see this issue a lot less.

I ran the script above using Sickle to iterate through all the responses. It ran for a little over two hours, found 44,570 records, but died with this exception about the resumption token being invalid:
Traceback (most recent call last):
  File "/Users/edsummers/Projects/sul-dlss/dlme-airflow/qnl.py", line 5, in <module>
    for rec in oai.ListRecords(metadataPrefix="mods_no_ocr"):
  File "/Users/edsummers/Library/Caches/pypoetry/virtualenvs/dlme-airflow-4uPLCoq4-py3.10/lib/python3.10/site-packages/sickle/iterator.py", line 52, in __next__
    return self.next()
  File "/Users/edsummers/Library/Caches/pypoetry/virtualenvs/dlme-airflow-4uPLCoq4-py3.10/lib/python3.10/site-packages/sickle/iterator.py", line 151, in next
    self._next_response()
  File "/Users/edsummers/Library/Caches/pypoetry/virtualenvs/dlme-airflow-4uPLCoq4-py3.10/lib/python3.10/site-packages/sickle/iterator.py", line 138, in _next_response
    super(OAIItemIterator, self)._next_response()
  File "/Users/edsummers/Library/Caches/pypoetry/virtualenvs/dlme-airflow-4uPLCoq4-py3.10/lib/python3.10/site-packages/sickle/iterator.py", line 91, in _next_response
    raise getattr(
sickle.oaiexceptions.BadResumptionToken: The value of the resumptionToken argument is invalid or expired.

Apologies for the delay in replying.  I have had our IT look into this issue and they have discovered that this is caused by the low threshold (1000 requests per 30 mins) set for the no. of HTTP requests to the OAI-PMH Azure function. Unfortunately, they cannot increase the threshold as it has cost implications. So, they have advised to add a minimum 2 sec delay between every HTTP GET request from the same IP address.  Please let me know if that solves the problem.

Just fyi, adding a sleep timer to our OAI intake driver, and allowing it to be configured in the Collection YAML should be relatively easy.

Hi @jacobthill - as far as I understand from our IT infrastructure guys, the HTTP GET requests to the OAI-PMH app are throttled at 1000 per 30 mins. This is not 1000 metadata records in OAI-PMH ListRecords response but 1000 HTTP GET requests to the app. For example, if you submit 999 ListRecords verbs followed by 2 Identify verbs within a 30 min period, the 2nd identify request may be throttled. Hope this helps.


Panaroma Issue

This maybe an issue, or maybe I'm just doing it wrong. If you have two panaroma items and a tile for each of those panaroma items. If the name is short for example like "Hello".  If you switch to the next one, it will show half of the second paranoma's tile, rather than the full thing. Now if you do something like "Settings", rather than "Hello" it will work. If it's a long one. It will have the same issue.
Also, shouldn't all the tiles be next to each other than a big space, if the name is too long? I don't have access to a WP7, or my W8 demo to confirm.

The panorama control should be considered alpha, cobbled together from a few different sources. It works in very specific circumstances, but you have to do all the lining up yourself.
I'll need help if we're to get it working anywhere near WP7/W8 panoramas

I would love to help, but I barely got started in WPF. D:


Support for data-attributes with image urls

when trying to use with parallax.js (http://pixelcog.github.io/parallax.js/), the data-attribute named 'data-image-src' does not update the image filename to include prepended characters.

Wrong issue tracker. This plugin just minifies images.


[FEATURE REQ] Make schedulerSize of PartitionPumpManager configurable

Is your feature request related to a problem? Please describe.
The scheduler thread pool of the PartitionPumpManager that works behind a EventProcessorClient in azure-messaging-eventhubs always uses 4 * the number of available CPU cores as its size. There are situations, where this default is not appropriate. For example, we have a service that processes events from multiple Event Hubs and uses multiple EventProcessorClients. Thus, theres a large number of threads contending for CPU time. If we were able to reduce the size of each thread pool, there would be less overhead lost by context switching.
Describe the solution you'd like
I'd like to have a way to explicitly set the number of threads used by the scheduler that works behind the PartitionPumpManager.
Describe alternatives you've considered
-XX:ActiveProcessorCount can be used to limit the number of processors used to calculate the scheduler size, but this will affect the entire application and might not be desirable.
Additional context
This is the piece of code that sets the default, which I'd like to change: https://github.com/Azure/azure-sdk-for-java/blob/azure-messaging-eventhubs_5.9.0/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/PartitionPumpManager.java#L65-L67

I could contribute this if this is interesting for you.

@conniey Any thoughts here?

This is a good feature to have. We originally added this boundedElastic for each partition pump because in constrained VMs (2 CPUs) running EventProcessorClient, we noticed only one partition would be processed. This Event Hub had millions of events over 16 partitions, but we could only see activity in a couple of the partitions even though the EventProcessorClient owned all the partitions.

@conniey Thanks. Are you interested in a Pull Request that makes this configurable like I requested?

@pvorb Hey! Thanks for pinging me on this. Making this configurable would be awesome and it also requires a public API modification, which adds some complexity to this. Our approach is to suggest a public API and demonstrate how users would leverage this via code snippets, do an API review and then implementation. Here are our API design guidelines: https://azure.github.io/azure-sdk/java_introduction.html


chore[bro]: set strict mypy rules

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

18 of 24 (75.0%)  changed or added relevant lines in 5 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.3%) to 89.987%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

pygef/broxml/cpt.py
0
6
0.0%

Totals

Change from base Build<PHONE_NUMBER>:
-0.3%

Covered Lines:
1393

Relevant Lines:
1548

💛  - Coveralls


Make switch from Less to Sass more explicit in contribution guidelines

Minor improvement:
Give hints towards switch from Less to Sass for Bootstrap v4 in contribution guidelines already

Thanks!

@cvrebert Thank you for the fast merge :)


Python version updated to 3.5 and up

Coverage increased (+0.09%) to 77.684% when pulling 3f6967af4225643aea92d280e2ee2480e630c1af on vidyasagar-r:upgrade into 7f6b938480e03df6e1a3d1e2b149c1d935b37866 on MicroPyramid:master.


Set up webpack for bundling and transpilation.

Note: I split out the JS files into separate files that will get bundled by the build step. The build step will also minify the JS and transpile it to ES5 syntax (so that browsers like IE won't crash and burn on the website).
For development workflow, it is doing dynamic bundling, so you shouldn't notice any difference other than when you are using the "Sources" tab in Chrome Inspector and looking for the JS files, you'll want to look under "webpack://" rather than "localhost" for a particular file. The built files will appear under localhost, but the pre-built ones (useful for setting breakpoints, etc) will appear under webpack. Or just type the name of a file in the Command-P search thing in Chrome (for example) and type in the normal name of the file as you're used to doing, and it will open the right file (unminified, untranspiled) for setting breakpoints.
@WCRest

Looks great!


Workflow disconnects from NATs randomnly

Describe the bug
On occasion after a period of time, the Workflow service will disconnect from NATs and requires a restart to reconnect
To Reproduce
Hard to reproduce, or not yet known how this has occurred twice after a 20day period
Expected behavior
The workflow service reconnects or attempts to.
Additional context
I imagine there is some configuration needed for heartbeat checking and what to do on failure to connect after ex period of time.
Additionally, we are looking at migrating to Jetstream instead of STAN and this may be a way to fix this connection trouble as well for greater stability -> https://app.zenhub.com/workspaces/boomerang-flow-5f9600754a5aa9001521ccc1/issues/boomerang-io/roadmap/194

Attaching log files for NATS, STAN, Listener and Workflow services.
https://app.zenhub.com/files/306764578/eee8cc88-3fc3-4019-8258-76f8e2eeb842/download

@tlawrie, now that we migrated to NATS Jetstream, is this issue still relevant?

Hi @corcoja i dont believe so no. But we should still verify it doesn't happen with Jetstream.


Version bumps

Current dependencies on/for this PR:

main

PR #24   👈

This stack of pull requests is managed by Graphite.


Support cropping images in modal

https://trello.com/c/5qBQd1ko/654-allow-users-to-crop-inline-images-in-the-context-of-a-modal
This changes the upload workflow in the modal, so that we now show the
crop page after the image is successfully uploaded; saving the crop then
takes the user back to the images index page, showing the cropped image.
Related to this, the modal version of the images index page now includes
the 'Edit image' action, which also takes the user to the crop page.
Still to do:

Fix our local components (esp. image-cropper) so we can re-init them dynamically

@kevindew this is also ready to review :-).

@kevindew I've had a go at combining the specs together, and I can see the benefit. What do you think? (It's a separate commit, so we can easily lose it.)


Images are missing

I have images referenced like this:

They don't appear in the PDF.

I can't see your attached image, ironically. 😀
In our case, changing relative paths to explicitly start with ./ fixed it. For example:
![Some alt text](./../My-Filename.png)

I can't see your attached image, ironically. 😀
In our case, changing relative paths to explicitly start with ./ fixed it. For example:
![Some alt text](./../My-Filename.png)

if you add the image as html img tag, please ensure that it does not require authentication - with the link you provided I assume the converter cannot download it and embed it into the pdf.
I tried it with a placeholder image and that worked:

if you add the image as html img tag, please ensure that it does not require authentication - with the link you provided I assume the converter cannot download it and embed it into the pdf.
I tried it with a placeholder image and that worked: