Blur function

I don't see how to use ControlNet (Blur) with ComfyUI. Would it be possible to have an example workflow? Thanks in advance.

You can see how to apply blur to your image here:
https://github.com/xinsir6/ControlNetPlus/blob/main/promax/controlnet_union_test_tile_deblur.py

my two cents... it is an incredible pain getting this to run in a windows machine. Here are my learnings
-clone the repo
-create subfolder in .\promax  and name it controlnet-union-sdxl-1.0-promax (copy the config promax json here and rename it to config.json)
-open cmd prompt as administrator
-make and activate venv
-install requirements (pip install -r requirements.txt.) if you should happen to have a windows machine like me this is where the fun starts... some repos will have difficulties to install (deepspeed is difficult but solvable with some effort, triton will not install on windows machines since they only want to support linux, the script works without triton so, so just delete that from the requirements.txt if you should run into errors.
once you have installed all requirements more or less go to the script, and find the "path" sections, you will need to customize the script
open in editor an find the following sections (with my settings as example input)
prompt = "woman eating cheese"
negative_prompt = 'longbody, lowres, bad anatomy, bad hands, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality'
controlnet_img = cv2.imread(r"F:\promax\Input.jpg")
controlnet_img.save("controlnet_deblur.webp")
images[0].save(r"F:\promax\output.jpg")
save, run script from commandline. In spite of having performed all install-requirements it gave me some errors where some pip packages were implicitly expected but missing in my venv yet. if you follow the line remarks where it breaks it'll tell you quickly what packages you need to ammend and then it'll run beautifully. Oh quick catch, it will download the promax model into the promax folder but you will have to rename it accordingly (scratching out the promax part)
I still have not yet figured out  how the controlonet works on its input. I had it run on blurry images and it did very little unblurring and I had it run on strongly pixelized faces and it create a plausible face (not the one of my reference test, but yet impressive)

It's very kind of you to respond. Unfortunately, what I want is to be able to use it with Comfy. Unfortunately, the parameter (SetUnionType) does not exist for the Blur function. Moreover, as you say, we don't really know how to handle the input image.
If we look in the script, there is no number for the Blur function. It's the same in ComfyUI, but there is an auto function. I use CN without any problem, except for "Blur" whose usage remains mysterious.
Do we use a blurred image to make it sharp ?

I pushed in a blurry image and it returned a sharper version to me.

my two cents... it is an incredible pain getting this to run in a windows machine. Here are my learnings -clone the repo -create subfolder in .\promax and name it controlnet-union-sdxl-1.0-promax (copy the config promax json here and rename it to config.json) -open cmd prompt as administrator -make and activate venv -install requirements (pip install -r requirements.txt.) if you should happen to have a windows machine like me this is where the fun starts... some packages will have difficulties to install (deepspeed is difficult but solvable with some effort, triton will not install on windows machines since they only want to support linux, the script works without triton so, so just delete that from the requirements.txt if you should run into errors. once you have installed all requirements more or less go to the script, and find the "path" sections, you will need to customize the script open in editor an find the following sections (with my settings as example input)
prompt = "woman eating cheese" negative_prompt = 'longbody, lowres, bad anatomy, bad hands, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality' controlnet_img = cv2.imread(r"F:\promax\Input.jpg") controlnet_img.save("controlnet_deblur.webp") images[0].save(r"F:\promax\output.jpg")
save, run script from commandline. In spite of having performed all install-requirements it gave me some errors where some pip packages were implicitly expected but missing in my venv yet. if you follow the line remarks in the traceback it'll tell you quickly what packages you need to ammend (look at the top of the traceback where it breaks, usually it'll tell you that a function is missing and then you can look up in the script in the line that is referred to from which package that function comes then just pip install that package and try again) and then it'll run beautifully.
Oh quick catch, it will download the promax model into the promax folder but you will have to rename it accordingly (scratching out the promax part)
I still have not yet figured out how the controlonet works on its input. I had it run on blurry images and it did very little unblurring and I had it run on strongly pixelized faces and it create a plausible face (not the one of my reference test, but yet impressive)
It is absolutely worth the pain!! great cudos to @xinsir6 for making this!! amazing!

Thank you! @xinsir6  also mentions that we need to place the ProMax model in this folder. What should we rename the ProMax model to?


vnet: Delay & Jitter options

Summary
Introduce configurable delay & jitter applied when traversing each router.
Motivation
To emulate more realistic network behavior.
Proposal
Add following parameters to RouterConfig

MinDelay (time.Duration)
MaxJitter (time.Duration)

The actual delay would be:  minDelay + maxJitter * rand()  // where rand() returns [0, 1).

FYI. I am thinking about giving a closer look to throughput issue with large user message on SCTP. I think vnet supporting delay would help for the work as well.


always encounter 423 error

Is there anyone can tell me why frequently encounter 423 error when a video player to grab video from the server.  The mp4 video should be like this https://tusd.domain.com/files/9296c3f2e3a699f90637a45495c206db
I can make sure that this file already uploaded completed. It can be accessible after you wait for some minutes, but sometimes it encounters 423 again.

tusd currently does not allow concurrent access to uploads in order to avoid data loss if multiple clients are writing to the same file. This means that only one user can upload to/download from one upload resource at a given time, causing the 423 Locked errors that you are likely seeing.
The solution for now is to not use tusd for downloading videos (tusd is also not meant for this) but instead serve the files from your underlying data storage instead, whether it be the disk or on S3.
Does this make sense?

No thread to write the file. Only read the file. So, I think maybe it's sth wrong?

It does not matter if someone "writes" to the file. Parallel reads are currently also not allowed. This is not misbehaving but we might reconsider this design decision.

Yes, there are. As I said before in a comment, you should not use tusd for downloading files and instead serve the files from your storage directly. If you are using AWS S3 or Google Cloud Storage, download the files from the buckets directly. If you are using the (default) disk storage, you may use Nginx/Apache/HAProxy to serve the files directly from disk. All of these tools have better support for reading files and offer superior download performance than tusd can. Does that make sense to you?

Thanks


support a max refresh rate

I'm using pb in a program that rapidy updates, but not cause too much excess resource usage by writing to and flushing stdout more often than is necessary. While I can take care of that in code in my application, it seems like something that'd be nice for pb to support in general.
Great library, by the way, and don't worry if I find time I'll start submitting PRs for these :).

Yeah, I have plans to add support for update the progress bar every x time.
for example:
bar.set_refresh_rate(Duration::seconds(1))

That would be awesome. Thanks again - I just moved to using this in https://github.com/mcginty/shoop :) saved me a lot of time and complexity.


HttpProxyHandler incorrectly formats IPv6 host and port in CONNECT request

Expected behavior
The HttpProxyHandler is expected to be capable of issuing a valid CONNECT request for a tunneled connection to an IPv6 host. In this case we are passing an IPv6 address (eg fd00:c0de:42::c:293a:5736) rather than a host name.
Actual behavior
The HttpProxyHandler does not properly concatenate the IPv6 address and port. The resulting error after we fail to connect will show you the problem:
io.netty.handler.proxy.ProxyConnectException: http, none, /fd00:c0de:42:0:5:562d:d54:1:3128 => /fd00:c0de:42:0:50:5694:2fda:1:4287, status: 503 Service Unavailable

In both cases you can see the IPv6 address is formatted without brackets: fd00:c0de:42:0:50:5694:2fda:1:4287 should be [fd00:c0de:42:0:50:5694:2fda:1]:4287. This is just an exception message so it doesn't prove it's formatting incorrectly. However, if you look at the request on the wire you can see it is certainly wrong:
    CONNECT fd00:c0de:42:0:50:5694:2fda:1:4287 HTTP/1.1\r\n
    host: fd00:c0de:42:0:50:5694:2fda:1:4287\r\n
    \r\n

Here is the problem method from HttpProxyHandler:
    @Override
    protected Object newInitialMessage(ChannelHandlerContext ctx) throws Exception {
        InetSocketAddress raddr = destinationAddress();
        String rhost;
        if (raddr.isUnresolved()) {
            rhost = raddr.getHostString();
        } else {
            rhost = raddr.getAddress().getHostAddress();
        }

        final String host = rhost + ':' + raddr.getPort();
        FullHttpRequest req = new DefaultFullHttpRequest(
                HttpVersion.HTTP_1_1, HttpMethod.CONNECT,
                host,
                Unpooled.EMPTY_BUFFER, false);

        req.headers().set(HttpHeaderNames.HOST, host);

        if (authorization != null) {
            req.headers().set(HttpHeaderNames.PROXY_AUTHORIZATION, authorization);
        }

        return req;
    }

Specifically:  final String host = rhost + ':' + raddr.getPort();
Steps to reproduce

Setup an HTTP Proxy with IPv6.
Setup a target server with an IPv6 address.
Attempt to establish a connection to the target server through the proxy, giving the HttpProxyHandler an IPv6 IP address for the target.
** We can successfully connect to the proxy server with IPv6. The problem seems to be specific to the target of the tunneled connection using an IPv6 address.

Minimal yet complete reproducer code (or URL to code)

I am not able to create a reproducer or patch with my company at this time. I think the issue is relatively straightforward though.

Netty version
4.1.4.Final
JVM version (e.g. java -version)
Java 8 update 92
OS version (e.g. uname -a)
Attempted on Ubuntu Linux 14.04 and Mac OSX. I don't think the OS matters in this case.

@ZuluForce maybe you can come up with a PR that fixes the issue for you ?

We should consider using toAddressString which follows the RFC 5952 formatting (last time I checked java didn't). We could also add a method to correctly format a address+port which handles ipv6 and ipv4 correctly ... this is common enough.

@Scottmitch +1 Want to take a stab ?

Thanks for the replies @normanmaurer  and @Scottmitch. I would need to get the time from my employer to work on this and I currently don't have the Netty development environment setup or approval for the CCLA. If I could submit something it wouldn't be until after the holidays (ie early to mid January).

@ZuluForce @Scottmitch let me take care.

@ZuluForce PTAL https://github.com/netty/netty/pull/6195

Fixed by https://github.com/netty/netty/pull/6195


[Bug] Amplify Console not showing the right kind of storage

when i have dynamodb storage added

this happens in the console:

amplify console thinks i have file storage added!

Thanks for reporting this, I was able to reproduce it, we'll work on a fix.

We'd changed that tab to reflect the general storage category but I forgot to update this ticket, closing


Updates for sentieon modules

PR checklist
The module can now accept an interval file as a parameter to restrict the analysis to specific regions. This change was necessitated because the absence of all the chromosomes in the minimal reference file caused the tests to fail. With the use of an interval file users will have more flexibility in what regions they want to restrict their analysis to. Another minor change is that dnamodelapply and dnascope will now emit a tuple containing both vcf and its index.

[x] This comment contains a description of changes (with reason).
[ ] If you've fixed a bug or added code that should be tested, add tests!
[ ] If you've added a new tool - have you followed the pipeline conventions in the contribution docs- [ ] If necessary, also make a PR on the nf-core/raredisease branch on the nf-core/test-datasets repository.
[x] Make sure your code lints (nf-core lint).
[x] Ensure the test suite passes (nextflow run . -profile test,docker --outdir <OUTDIR> -stub).
[x] Ensure the test suite passes (nextflow run . -profile test2samples,docker --outdir <OUTDIR> -stub).
[ ] Usage Documentation in docs/usage.md is updated.
[ ] Output Documentation in docs/output.md is updated.
[ ] CHANGELOG.md is updated.
[ ] README.md is updated (including new tool citations and authors/contributors).

ready to review @ramprasadn?

Yupe!


[CWS] fix unescaped characters in e2e tests policy

What does this PR do?
Fix the CWS e2e tests that were failing because the test policy contained unescaped characters.

Motivation

Additional Notes

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

Reviewer's Checklist

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

/merge


@define-mixin syntax highlighting in VSCode

Hi, I am currently getting visual warning when using @define-mixin rule inside postcss style of Vue3 components.
I have Volar and extensions installed...
Is there any cfg rule to avoid this when developing?

I planed migrate postcss language support to external language service plugin (#1027), I will point out how to ignore specific warning with language service plugin yourself.

I tried this code and it look normal, do you other case?

<style scoped lang="postcss">
@define-mixin icon $network, $color: blue {
    .icon.is-$(network) {
        color: $color;
        @mixin-content;
    }
    .icon.is-$(network):hover {
        color: white;
        background: $color;
    }
}
</style>


DH44 neuron additions

DH44 neuron can be formally defined with expresses relationship to flybase gene.  Look for uses if expresses object property in fbbt for examples.

I tried just adding the FlyBase IRI as it appeared for other entries, but I guess that was too simple... Do I need to fill in something manually or is there a way to import?

Build fail is my fault.  Looks like I accidentally pushed changes to travis config file to this branch instead of an experimental one I was working on.  I'll revert.

FlyBase IRI is fine.  I still need to work on an import job for this (needs a script that queries FlyBase).

General class should have equivalentClass def + need to split classes to make all-some assertions true:

name: DH44 neuron
def: "DH44-expressing neuron. Three bilateral pairs of these cells exist in the pars intercerebralis, all of which co-express leucokinin receptor. There are also DH44 neurons in the ventral nerve cord." [FlyBase:FBrf0152168, FlyBase:FBrf0232426]
- is_a: FBbt:00005130 ! neurosecretory neuron
- relationship: expresses http://flybase.org/reports/FBgn0012344
+ intersection_of: FBbt:00005130 ! neurosecretory neuron
+ intersection_of: expresses http://flybase.org/reports/FBgn0012344
- relationship: has_soma_location FBbt:00005802 ! pars intercerebralis

If you leave the soma location in as a relationship, this is a very strong statement:  All neurosecretory neurons that express DH44 have soma in the PI.  Judging by the textual definitions of the subclasses, this is not the case.

name: adult DH44 neuron
def: "DH44-expressing neuron of the adult. Three pairs of these are present in the pars intercerebralis and clusters are also present in the thoracico-abdominal ganglion (ventral nerve cord). DH44 neurons have been associated with desiccation tolerance and sugar sensing in the adult." [FlyBase:FBrf0152168, FlyBase:FBrf0228903, FlyBase:FBrf0232426]
intersection_of: FBbt:00047126 ! DH44 neuron
intersection_of: part_of FBbt:00003004 ! adult
relationship: has_postsynaptic_terminals_in FBbt:00110639 ! adult subesophageal zone
relationship: has_presynaptic_terminals_in FBbt:00007513 ! adult gut
relationship: has_soma_location FBbt:00003700 ! adult pars intercerebralis
relationship: has_soma_location FBbt:00004052 ! thoracico-abdominal ganglion

It's not possible for all of these neurons to have a soma the TAG and the PI (at least I don't know of any neurons with two cell bodies).  So this needs to be split into two classes, one for the PI, one for the TAG with the assertions about synaptic terminals going to the appropriate subclass (assuming they apply to all neurons in that subclass).

name: larval DH44 neuron
def: "DH44-expressing neuron of the larva. Three pairs of DH44-positive cell bodies are found in the pars intercerebralis. The larval ventral nerve cord contains more DH44 neurons than that of the adult." [FlyBase:FBrf0152168, FlyBase:FBrf0232426]
ntersection_of: FBbt:00047126 ! DH44 neuron
intersection_of: part_of FBbt:00001727 ! larva
relationship: has_soma_location FBbt:00111670 ! larval pars intercerebralis
relationship: overlaps FBbt:00001726 ! embryonic/larval corpus cardiacum

See comments on adult DH44 neuron.  Looks like a similar split is required here.

Looks good.  Couple of minor issues.

Annotation property error here: {comment="FlyBase:FBrf0228903"}
part_of relationships should be to the finest level of granularity possible.  In this case adult and larval CNS terms would likely be granular enough.

I think I've fixed the build issue.     We now have a conflict though.   Let me know if you need help fixing.

For the conflict resolution - try
git checkout master
git pull
git checkout DH44
git merge
Then open in Aquamacs and search for ===

Thanks, this is probably what I was on my way to doing - was looking for a cleverer way to find the conflicts in aquamacs than just searching, but I suppose that works

Not really sure why, but the subclasses are inferred neurosecretory and peptidergic neurons, but the parent class ('DH44 neuron') is not. Also some of the adult/larva specific ones are not part of the adult or larva, is this a difference between 'part of' and 'has soma location'?

I guess I need to keep a 'part of' term for this to work properly

We could add an axiom to bridge has_soma_location to terms for animal at whole stage for gross stages
has_soma_location some adult subClassOf part_of some adult
etc.
These should go in FBbt_ext

Ok, thanks. Do you know why 'DH44 neuron' is not coming up as neurosecretory or peptidergic, but subclasses are?

Ok, just pushed the latest version. I will keep working on the neuropils for the time being.

New version looks good to me locally.  Haven't yet traced the reason for the build fail.  Not connected to edits to terms - some odd problem with imports.

Can you pull and take a look at classification of terms under 'dorsomedial neurosecretory cell' following classification.  Do my edits make sense?  Do inferred classifications now make sense to you?

With dorsomedial neurosecretory cell defined as any neurosecretory neuron of the PI, all PI DH44 neurons are now a subclass. Looking at the descriptions for adult and larval dorsomedial neurosecretory cells, I'm not sure that this was the intended definition - there only 7 cells per hemisphere - does that sound right for the number of neurosecretory cells in the PI?
'DH44 neuron' is now inferred to be neurosecretory and peptidergic, which is good.

With dorsomedial neurosecretory cell defined as any neurosecretory neuron of the PI, all PI DH44 neurons are now a subclass. Looking at the descriptions for adult and larval dorsomedial neurosecretory cells, I'm not sure that this was the intended definition - there only 7 cells per hemisphere - does that sound right for the number of neurosecretory cells in the PI?

Yeh - I wasn't 100% confident about this.  I think it fits with the historical usage of the term (which, IIRC,  is very old and used for multiple insects), but the text description added by Marta may use a tighter interpretation.   Perhaps safer to make a general class 'pars intercerebralis neurosecretory cell' and have dorsomedial neurosecretory cell as a subclass.  Can you skim through the main references on adult and larval dorsomedial neurosecretory cell to check which strategy is reasonable given the terminology they use?

I think these classes need some editing. All the references are about IPCs and the adult and larval versions both have 'insulin producing cell' as an exact synonym, maybe the name of the class should make this clearer? They also have 'median neurosecretory cell' as an exact synonym. Median neurosecretory cells expressing 3 different dilps are found in the PI, but there are other dilps, so I guess there are other IPCs...

I think these classes need some editing. All the references are about IPCs and the adult and larval versions both have 'insulin producing cell' as an exact synonym, maybe the name of the class should make this clearer? They also have 'median neurosecretory cell' as an exact synonym. Median neurosecretory cells expressing 3 different dilps are found in the PI, but there are other dilps, so I guess there are other IPCs...

OK.  Seems reasonable to re-assess.  Quite snowed under with work, so happy to leave to your judgement of the biology unless you have something specific you want me to read on this.

I changed 'dorsomedial neurosecretory cell' classes to 'brain insulin-producing cell' classes (there are also insulin-producing cells in the VNC and gut).
There is now no generic class for a neurosecretory neuron of the PI - not sure whether that is a problem. Also no 'dorsomedial neurosecretory cell' class. Many papers refer to medial/median neurosecretory cells - this seems to be a superclass for the brain IPCs, but I couldn't find a definition anywhere...
Do these seem like things that ought to be in the ontology? If so I will create a new ticket for them. I think we should close this one unless something looks wrong with what I have done so far.

For the renames I'd prefer
brain insulin-producing cell
->
insulin secreting cell of brain
etc.
Worth making the general classes for 'neurosecretory cell of pars intercerbralis' synonym: 'median neurosecretory cell' & removing this synonym from the newly renamed insulin-producing cell.
Happy to merge once these are done.


Changing "Daemon Server File Location" does not work

When changing the Daemon Server File Location upon node installation, server files will still be under /srv/daemon-data/. Only the sftp path is changed.
It seems that the daemon does not use the sftp location for server installation.

I'm not encountering this issue. The panel properly reflects the location in the configuration provided, and the daemon appears to be using that properly.
Could you explain further?


Refactored observers, verifiers, and contracts.

@lwander This is step 3, updating the contract and observers to be aware of the changes to the predicates. The main change here is that the verifier is now more based on PathPredicate than MapPredicate. Even so, since the results are only used for reporting and are self describing, there isnt further down-stream impact

LGTM


Implement a Two Page View Mode

This PR is the continuation of the work that @Moistly and @waddlesplash started in PRs #2395 and #2660.
Please note that I got permission from @waddlesplash on IRC to take over the implementation of this feature.
Given that the last actual coding in #2660 was done six months ago, it was easier for me to start fresh rather that trying to patch the old code. Compared to the old implementation, this PR tries to add as much of the code as possible in separate files to avoid cluttering viewer.js too much.
Based on a recent IRC discussion, this PR is on hold until we have implemented testing that covers the viewer.
Things left to do in this PR:

[ ] Once we have a testing framework in place: Implement the necessary tests for this feature.
[ ] Ask Stephen Horlander for icons that fit the new style.
[ ] Revert to the initial horizontal scrolling behaviour. (From working on e.g. #4188, I've found that there are lots of issues with horizontal scrolling in a cross-browser environment.)

Fixes #590.
Fixes #1475.
Fixes #2376.
Fixes #3658.
Fixes bug 786602.
Fixes bug 864440.

Is there still a plan to add two-pages display?
It's quite an important feature of a PDF viewer IMO, and content which was meant to be displayed as two-pages, like magazines, really suffers if it can't.

The PR is now open for over 600 days. What is holding it back?

The main problem is that pages can be of different sizes and that the current implementation might not deal with that properly. There is also the problem of testing this: it has to be done manually as there are no browser tests for this yet.

Is there a document that explains how to implement the changes from @Snuffleupagus (a few posts above this) in the latest release of pdf.js ?
Is this feature still going to be implemented in the future ?

@micsan13br You would have to clone the branch and rebase it onto the current master branch. After that you should be able to work with it using node make server.

I've tried to rebase the changes from @Snuffleupagus but the changes are complexer then I thought. Maybe someone can help here?

I'd be more comfortable with landing this feature with more tests. In the mean time I'll close it until we have done something about #6505.

In the mean time I'll close it until we have done something about #6505.

TBH this doesn't sounds like a great reason to close this PR.
Admittedly the patch is very bitrotted, but it's probably the place where most discussions of this feature happened, and closing it would hide this discussion (e.g. while searching within open issues).

Discussions about the issue should take place in #590. Discussions here should only concern this particular implementation. Since this patch is needs a lot of work and there are no tests yet, it is better to close it and to revisit it later on with a fresh implementation rather than leaving it open and keeping it in the queue for several years.
By the way, I think that this patch can be simplified quite a bit given the current code base, so revisiting this is not only a good idea for the tests, but also for the code quality. Keep in mind that this patch was written two years ago.

By the way, I think that this patch can be simplified quite a bit given the current code base, so revisiting this is not only a good idea for the tests, but also for the code quality. Keep in mind that this patch was written two years ago.

I completely agree with the above!
(One of the reasons that I stopped working on it, is that it wasn't clear to me if we really wanted to introduce all this complexity in the viewer.)

TBH this doesn't sound like a great reason to close this PR.

Yes, sorry there's a bit more context. We're are trying to clean up the pull request queue and only have actively worked on(within the last month) things there. This will hopefully leave less pulls in an unresolved limbo like we currently have.

Yes, sorry there's a bit more context

Thanks. Appreciate the info.

@Snuffleupagus i know this has been discussed, but will this be implemented in the soon future? :) Saw the demo of this by you, is it possible to use that solution until the official release? :)
/Jesper

I know this has been discussed, but will this be implemented in the soon future?

As outlined in https://github.com/mozilla/pdf.js/pull/3723#issuecomment-145628420, further work on this is blocked on test coverage for the viewer. Hence it's currently not possible to provide any time-line for this.
Once the necessary testing framework is in place, the functionality in this PR would have to be (at least partially) re-implemented from scratch, since the default viewer has changed significantly since this code was written.

[...] is it possible to use that solution until the official release?

I suppose that it's technically possible. However, in its current state, the PR will most likely not work with an up-to-date version of PDF.js. (Please note that it doesn't make sense for me to continue work on this, until such a time as it's actually possible for this feature to land.)

@Snuffleupagus: Is there any chance, that Your PR d81c30b would be working on actual version of pdf.js ? Disregarding tests my team is desperately need this feature.

@Snuffleupagus @michal-drozd I also have a need for this feature. Is there any hope of getting the code working on a current version of pdfjs?

This is already answered in https://github.com/mozilla/pdf.js/pull/3723#issuecomment-155388936.

@timvandermeij Its too bad development of such a crucial feature is hinged on #6505 which seems to be stuck. Until then, I guess I am using 0.8.852 on a production site. Aside from performance drawbacks, the 2 page view implemented in this PR by @Snuffleupagus is excellent.


1.16.5 server crashes when adding this mod

Fabric server with only Fabric API and this mod crashes, here's the latest log:
latest.log

Hi ! Could you use the following bug report template ? It will help me to fix more easily your issue : https://github.com/DevEkode/FabricLockette/issues/new?labels=bug&template=bug_report.md
Thanks !


[Bug] incompatibility of importlib-metadata

Describe the bug
dbt-core has requirement of dbt-semantic-interfaces >=0.7.1,<0.8, and it in turn requires importlib-metadata to be ">=6.0,<7", however, dbt-jobs-as-code requires importlib-metadata to be "^7.2.0", this requirement has been added since 0.6.0
To Reproduce
Steps to reproduce the behavior:

create a pipfile
under packages, add dbt-jobs-as-code = "0.8.1" and dbt-core = ">1.8.0,1.9.0"
run pipenv lock --verbose
See error

Expected behavior
verions have conflicting dependencies will be reported
Screenshots

Desktop (please complete the following information):

OS [e.g. iOS]:
dbt Core Version [1.8.6]:
dbt-jobs-as-code Version [0.8.1]:

Updated in 0.8.2 !


Create React App -> Vite

Closes #842 :rocket:

Uninstalled CRA
Installed vite :star_struck:
Removed all frontend2 testing references (we don't have tests lol)
Removed unnecessary testing GitHub Action
bumped node version for vite compatibility

Side note: it should be really easy to do relative imports now! I may look at that when i get a chance!

@acrantel this almost works it just needs its upgraded eslint to have the rules that the old eslint had i think? was there a systematic way we determined those old rules or some way I could know what exactly we want to have throw an error when running lint?

@acrantel this is done :rocket:


Wappalyzer logo for Chrome extension is wrong

On Chrome, Wappalyzer extension shows logo of first detected technology instead of Wappalyzer logo. This makes it difficult to locate Wappalyzer among all other extensions. For example, in below screenshot, it's showing 'Facebook' logo instead of Wappalyzer logo

There is a setting to turn this off. In the next update it will be off by default.


Warning

what is this ?
how to solve it?
prepare/preprocess_a.py:11: RuntimeWarning: invalid value encountered in true_divide
wav = wav / np.abs(wav).max() * 0.6

this mean the wave file is corrupted.


Record consumer / client ID on metrics

We currently have a bunch of metrics in the arroyo namespace, however they are only tagged with VM / host information, rather than consumer, so it is hard (or impossible) to breakdown metrics properly per consumer.
One example of this would be to try to determine if partitions are balanced evenly across consumers. We have a metric called arroyo.consumer.partitions_assigned.count however we can only break it down by instance-id and similar tags which may include partitions assigned to multiple consumers running on the same node:

Ideally we could break this down by consumer and see if they all have the same number of partitions assigned.

the min_partition tag is a similar case. we want a global tag for the entire consumer, but arroyo itself does not support that. so we had to implement it in the application.
in this particular case of checking for partition balance, I think it is sufficient to check that min == max == avg == p50 == p70 == ... of the metric, the tag breakdown is not needed IMO

Interesting idea, but in practice if I take min - max for partition count it looks like this..


Load fonts and vendor libraries via bower.

Hi,
I noticed you included a lot of fonts and vendor libraries directly into your project. How about loading them via bower?

npm would make more sense wouldn't it? Most are available there too and it needs to be use anyway for the node dependencies.

Am 06.02.2017 um 15:35 schrieb Michael<EMAIL_ADDRESS>Hi,
I noticed you included a lot of fonts and vendor libraries directly into your project. How about loading them via bower?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Yeah sure can use npm too. Personally I like to use bower for frontend stuff only to separate them a little bit.
If you like, I can try to remove some libraries and add them via npm (or bower, what you prefer).

There a related discussion about the vendor directory #592.
Bower is greats for keep externals libs into the a project without tracking the files in version control system.
Why not try a send a Pull Request about this?

If we gonna use a package manager, let's stick to NPM. I don't want to overcomplicate things.
The reason why some things are in the vendor folder is because they are modified versions because of a bug in the current version. This, of course, could use a better solution.


Editor GPU: Render viewCursors with the webgpu renderer

We actually want to use DOM rendering for the foreseeable future here.


Update to A-Frame v0.5.0

No anticipated issues based on the A-Frame changelog. Tests pass and example works without any errors or warnings (Nightly and Chromium).
Would you mind doing a release with the updated version? My packages that depend on this won't build with A-Frame v0.5.0 because of the peer dependency conflict.
Thanks

Looks safe to upgrade, yes. I should be able to cut a new release this weekend.

I saw #23, so, just to be sure, I ran the dist builds on this branch and rechecked the example with them. I'm not seeing any errors or issues with Chrome, FF, Chromium, or Nightly on Windows 10.

Thanks!


in ResourceCollection I want remove links

Laravel Version: 5.5
PHP Version:7.1
Database Driver & Version:mysql 5.7

Description:
in ResourceCollection I want remove links
Steps To Reproduce:
in ResourceCollection I want remove links

Hi there,
Welcome to Laravel and we are glad to have you as part of the community.
Unfortunately this GitHub area is not a support area for general application issues. This is only for issues/bugs with the framework code itself.
Can I suggest closing your issue ticket here? Instead try asking your question on one of the many great community support areas that will likely give you a better answer more quickly:

Laravel Slack (https://larachat.co/)
Laravel.io Forum (https://laravel.io/forum)
Laracasts Forum (https://laracasts.com/discuss)
StackOverflow (http://stackoverflow.com/questions/tagged/laravel)

Thanks in advance.


Add string extension methods for null or empty checks and their unit tests.

This pull request adds two new extension methods for strings: IsNotNullOrEmpty and IsNotNullOrWhiteSpace. These methods extend the string type and return a boolean value indicating whether the string is not null or empty or whitespace. They can be useful for validating user input or checking string conditions.
The pull request also adds unit tests for these methods using Xunit. The tests cover various cases of null, empty, whitespace and non-empty strings. The tests use the [Theory] and [InlineData] attributes to provide multiple test data.

I don't think it is necessary...

I don't think it is necessary...

DRY (Don't Repeat Yourself) requires editing of repetitive structures according to this principle. It is actually a clean code standard. The fact that it has been repeated 5 times now and the use of "!" operator is a bad way of writing in terms of readability.
I don't think it is unnecessary, but of course it is your decision.


Trace-coordinated mode

Hi all, can tell me whether dronecore support trace-coordinated mode, like DJI ?
https://gyazo.com/a724d2ba73a51775cc6c37ed23dc29b1

@dangviethieu-hntv I don't think that's supported because it first would need to be supported by the PX4 Firmware.

@julianoes Thanks you so much !!!


Fixes failing mvn eclipse:eclipse goal.

The ./mvnw eclipse:eclipse goal fails with following error.
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-eclipse-plugin:2.10:eclipse (default-cli)
on project spring-cloud-starter-netflix-archaius: Unable to resolve
resource location:
spring-cloud-starter-netflix-archaius/../../../eclipse/org.eclipse.jdt.ui.prefs
-> [Help 1]

The location of the project root directory is resolved with
<main.basedir> property defined child in poms, however most of the
child poms define incorrect relative paths for the same. i.e.
spring-cloud-starter-netflix-archaius defines
<main.basedir>${basedir}/../../..</main.basedir>, which should instead
be <main.basedir>${basedir}/../..</main.basedir>.
As a fix, removing the main.basedir property from the poms and using
the predefined maven.multiModuleProjectDirectory variable in order to
refer to the project root directory. maven.multiModuleProjectDirectory
is avilable since maven 3.3.1.

Codecov Report

Merging #2952 into master will decrease coverage by 0.1%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master    #2952      +/-   ##
============================================
- Coverage     65.66%   65.55%   -0.11%
+ Complexity     1430     1422       -8
============================================
  Files           182      182
  Lines          6713     6695      -18
  Branches        808      807       -1
============================================
- Hits           4408     4389      -19
+ Misses         2004     2002       -2
- Partials        301      304       +3

Impacted Files
Coverage Δ
Complexity Δ

...x/security/SecurityContextConcurrencyStrategy.java
61.11% <0%> (-16.67%)
5% <0%> (-3%)

...ix/zuul/filters/route/SimpleHostRoutingFilter.java
88.53% <0%> (-0.04%)
41% <0%> (-5%)

Continue to review full report at Codecov.

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

Close due to PR from incorrect branch.


Sidenav: Implicit list of links

The problem
The top level of the Sidenav component contains a set of visually grouped links that are not marked up as part of a list. Screen reader users will perceive the navigation region and then each individual link without giving context to how they are each associated.

The solution
Developers can add <ul> and <li> elements appropriately to give semantic structure to the top level of navigation.
Additional information
The menu items that are part of the collapsible sections do utilize this explicit list structure, the same practice should be used for all sets of grouped links.

We should fix the examples we have both on the Pharos site itself as well as in the story for this component, but the choice of the content is ultimately up to the consumer, so teams will also need to fix this themselves.


update on audio compile scripts

update compile-sounds.sh and compile-voicepack.sh to delete unnecessary generated files

Fixed with https://github.com/webaverse/app/pull/2825


Fix AppNotification contract issues for IsSupported

The AppNotificationManager::IsSupported API along with two enums were incorrectly added without updating the contract version.
This PR correctly adds the enums and IsSupported API by updating the AppNotificationContract in the idl.

/azp run


Incorrect overload selected for Array(Array(T)) vs Array(T)

def foo(a : Array(T)) forall T
  puts "one"
end

def foo(a)
  puts "two"
end

z = [5].as(Array(Array(Int32)) | Array(Int32))
foo(z)

Prints "two" but should print "one". I'm still not exactly sure why this happens.

Without the dependency on Array:
class Gen(T)
end

def foo(a : Gen(T)) forall T
  puts "one"
end

def foo(a)
  puts "two"
end

z = Gen(Int32).new.as(Gen(Gen(Int32)) | Gen(Int32))

foo(z)

Not sure if it's relevant, but the bug appears inconsistent.
def foo(a : Array(T)) forall T
  a.each_with_index do |a, i|
    p "first call for #{a} of class #{a.class}"
    foo(a)
  end
end

def foo(a : T) forall T
  p "second call for #{a} of class #{a.class}"
  p a
end

foo([1, [2, [[3]], [4, [[5]]]]])

"first call for 1 of class Int32"
"second call for 1 of class Int32"
1
"first call for [2, [[3]], [4, [[5]]]] of class Array(Array(Array(Array(Int32)) | Int32) | Array(Array(Int32)) | Int32)"
"first call for 2 of class Int32"
"second call for 2 of class Int32"
2
"first call for [[3]] of class Array(Array(Int32))"
"second call for [[3]] of class Array(Array(Int32))"
[[3]]
"first call for [4, [[5]]] of class Array(Array(Array(Int32)) | Int32)"
"first call for 4 of class Int32"
"second call for 4 of class Int32"
4
"first call for [[5]] of class Array(Array(Int32))"
"first call for [5] of class Array(Int32)"
"first call for 5 of class Int32"
"second call for 5 of class Int32"
5

I'm not enough of a mathematician to do this correctly, but bear with me.
So numbers belong to the set N.
[[3]] and [[5]] belong to the same set or type A for N ⊂ A.
[2, [[3]]] and [4, [[5]]] would also belong to the same set or type B for which (A | N) ⊂ B.
So the array [2, [[3]], [4, [[5]]] is a collection C which is B(N | B). When the compiler sees this pattern it determines that N | B is the unit type T. When calling the first method on C it will call the second method on any B that is not B(B). Because [[3]] is A and is not B, the second method is called. Because [4, [[5]]] is B, the first method is called. For this instance the unit type T is no longer N | B, but rather N | A. Because A is defined as containing N but not itself, N is the unit type T for the first method called on A.
If any of that makes sense and is factual, the compiler's actions are surprising but correct. The expected output would only be possible if the compiler waits to define the unit type T until all possible recursion is done.

It might be a correct guess but there's no recursion going on.
It works wrong because we have a bug in our code.

Recursion might be the wrong term for the algorithm process, but it does seem to have something to do with the recursive union type.
B(A|B) triggers it when C(A|B) does not.

Doing some old-fashioned puts debugging in the compiler and discovered this when I ran it against @stevensonmt's example code:
Crystal::Matches(
 @cover=true,
 @matches=
  [#<Crystal::Match:0x10cf32330
    @arg_types=[Array(Array(Int32))],
    @context=
     #<Crystal::MatchContext:0x10cf52900
      @def_free_vars=["T"],
      @defining_type=main,
      @free_vars={"T" => Array(Int32)},
      @instantiated_type=main,
      @strict=false>,
    @def=
     def foo(a : Array(T)) forall T
  a.each_with_index do |a, i|
    p("first call for #{a} of class #{a.class}")
    foo(a)
  end
end,
    @named_arg_types=nil>,
   #<Crystal::Match:0x10cf32300
    @arg_types=[(Array(Array(Int32)) | Int32)],
    @context=
     #<Crystal::MatchContext:0x10cf52800
      @def_free_vars=["T"],
      @defining_type=main,
      @free_vars={"T" => (Array(Array(Int32)) | Int32)},
      @instantiated_type=main,
      @strict=false>,
    @def=
     def foo(a : T) forall T
  p("second call for #{a} of class #{a.class}")
  p(a)
end,
    @named_arg_types=nil>],
 @owner=main,
 @success=true)

Crystal::Type#lookup_matches_without_parents is correctly matching Array(Array(Int32)) (the [[3]]) to the first method but also lumping it in with Int32 in a second match. I haven't figured out how that match is used yet, but it seems to be choosing the second match somewhere.

Interesting bug, if I try this: https://carc.in/#/r/8t59
def foo(a : Array(T)) forall T
  a.each_with_index do |a, i|
    p "first call for #{a} of class #{a.class}"
    foo(a)
  end
end

def foo(a : Array(Array(Int32)))
  a.each_with_index do |a, i|
    p "first call for #{a} of class #{a.class}"
    foo(a)
  end
end

def foo(a : T) forall T
  p "second call for #{a} of class #{a.class}"
  p a
end

foo([1, [2, [[3]], [4, [[5]]]]])

Then I get this:
"first call for 1 of class Int32"
"second call for 1 of class Int32"
1
"first call for [2, [[3]], [4, [[5]]]] of class Array(Array(Array(Array(Int32)) | Int32) | Array(Array(Int32)) | Int32)"
"first call for 2 of class Int32"
"second call for 2 of class Int32"
2
"first call for [[3]] of class Array(Array(Int32))"
"first call for [3] of class Array(Int32)"
"first call for 3 of class Int32"
"second call for 3 of class Int32"
3
"first call for [4, [[5]]] of class Array(Array(Array(Int32)) | Int32)"
"first call for 4 of class Int32"
"second call for 4 of class Int32"
4
"first call for [[5]] of class Array(Array(Int32))"
"first call for [5] of class Array(Int32)"
"first call for 5 of class Int32"
"second call for 5 of class Int32"
5

Looks like the bug is somewhere in this file. Haven't found it yet. I'll look some more after work today.

The problem is that this is a bug where the problem is not the code. We need to define how we want it to work first.
Here's the code again:
class Gen(T)
end

def foo(a : Gen(T)) forall T
  puts "one"
end

def foo(a)
  puts "two"
end

z = Gen(Int32).new.as(Gen(Gen(Int32)) | Gen(Int32))

foo(z)

The type of z is a union of:

Gen(Gen(Int32))
Gen(Int32)

When the compiler tries to match that union type against Gen(T) it will do this:

Take the first type in the union: Gen(Gen(Int32)). It matches against Gen(T). T becomes Gen(Int32).
The the second type in the union: Gen(Int32). Try to match it against Gen(T). However, we said T is Gen(Int32). So it's matching against Gen(Gen(Int32)). No match.

The only match is the first one, Gen(Gen(Int32)), where T is Gen(Int32).
Then the next overload is considered, and the entire union matches.
That's why we are seeing that behavior.
How it should work? Should T become the union of those types? But if T is Gen(Int32) | Int32 it would mean we had Gen(Gen(Int32) | Int32) in the first place, which is not the case.
We basically need to dispatch the union type to two different instantiations of the same overload. But the code never does that in any place of the compiler.
So this is a huge change, if we want to implement it.
Or... other ideas of how this should match?

This makes me question whether I understand forall. My mental model is that it instantiates a new overload for every single type it was called with, including splitting unions. For example:
def foo(a : T) forall T
end

foo [1, "b"].first

In this example, it seems that there would be 2 overloads for foo — one for Int32 and one for String. Is that correct or is there just one for Int32 | String?

@jgaskins there is just one, for the union type.

Exactly. forall just lets you talk about that T and use it in code later on. But it doesn't change how things match.
That said, in my mind forall should also expand union types and provide one overload for each, but that's not the case. And maybe we shouldn't do it. Should we do it for each subclass of a type hierarchy too?
Another thing to consider:
class Gen(T)
end

def foo(a : Gen(T)) forall T
  p T
end

foo(Gen(Int32).new || Gen(Char).new)

Currently fails:
Error: no overload matches 'foo' with type (Gen(Char) | Gen(Int32))

Overloads are:
 - foo(a : Gen(T))
Couldn't find overloads for these types:
 - foo(a : Gen(Int32))

It's because Gen(Char) matches, T becomes Char, then Gen(Int32) doesn't match and there's no overload to cover that.
The entire situation is very confusing.
My advice is to avoid using forall if not needed. In the example in the forums the T wasn't needed at all.

The type of z is a union of:

Gen(Gen(Int32))
Gen(Int32)

When the compiler tries to match that union type against Gen(T) it will do this:

Take the first type in the union: Gen(Gen(Int32)). It matches against Gen(T). T becomes Gen(Int32).
The the second type in the union: Gen(Int32). Try to match it against Gen(T). However, we said T is Gen(Int32). So it's matching against Gen(Gen(Int32)). No match.

The only match is the first one, Gen(Gen(Int32)), where T is Gen(Int32).
Then the next overload is considered, and the entire union matches.
That's why we are seeing that behavior.
How it should work? Should T become the union of those types? But if T is Gen(Int32) | Int32 it would mean we had Gen(Gen(Int32) | Int32) in the first place, which is not the case.
We basically need to dispatch the union type to two different instantiations of the same overload. But the code never does that in any place of the compiler.
So this is a huge change, if we want to implement it.
Or... other ideas of how this should match?

Thanks for the clear delineation of the problem. I never expected to uncover such an fundamental bug. How important is this corner case?

How important is this corner case?

There's lucky framework, thousand of shards out there. We have a compiler. There's the standard library with a lot of features.
It's a bug but it's not preventing people from creating wonderful things. I think this is a very low priority bug. It's pretty rare to have to match against Array(T) and wanting to get that T. It's a bit leaky. And if you really need to do that, you can do it by doing typeof(array.first) or something like that too. So there are workarounds.

It works exactly the same way without forall. forall doesn't change which instantiations occur, it just increases the expressiveness of type restrictions.

Exactly. forall just lets you talk about that T and use it in code later on. But it doesn't change how things match.

Ahh, okay, similar to the idea of &block vs yield (purposely ignoring the block inlining for yield for this analogy), where they both match the exact same way but the &block version gives you a reference to the block itself but there's only one instantiation of the &block overload?

Another thing to consider:
class Gen(T)
end

def foo(a : Gen(T)) forall T
  p T
end

foo(Gen(Int32).new || Gen(Char).new)

Currently fails:
Error: no overload matches 'foo' with type (Gen(Char) | Gen(Int32))

Overloads are:
 - foo(a : Gen(T))
Couldn't find overloads for these types:
 - foo(a : Gen(Int32))

If we dispatch here, the same can be said about a plain free var restriction:
def foo(x : T) forall T
  p T
end

foo(1 || 'a') # => Int32
foo('a' || 1) # => Char

as dynamic dispatch would generate separate overloads for T = Int32 and T = Char. IMO this is undesirable as it leads to semantic consequences like the following:
def foo(x : T) forall T
  [x]
end

# without dynamic dispatch:
foo(1 || 'a').class   # => Array(Char | Int32)
foo('a' || 1).class   # => Array(Char | Int32)
typeof(foo(1 || 'a')) # => Array(Char | Int32)
typeof(foo('a' || 1)) # => Array(Char | Int32)

# with dynamic dispatch:
foo(1 || 'a').class   # => Array(Int32)
foo('a' || 1).class   # => Array(Char)
typeof(foo(1 || 'a')) # => (Array(Char) | Array(Int32))
typeof(foo('a' || 1)) # => (Array(Char) | Array(Int32))

So I am inclined towards not allowing dynamic dispatch here; when one writes Gen(T) forall T, the static type of the argument must never be a union. Instead there is the following way to perform dynamic dispatch on a static union type:
class Gen(T)
end

def foo_impl(a : Gen(T)) forall T
  p T
end

def foo(x : T) forall T
  {% begin %}
    case x
      {% for t in T.union_types %}
      in {{ t }} then foo_impl(x)
      {% end %}
    end
  {% end %}
end

foo(Gen(Int32).new || Gen(Char).new) # => Int32
foo(Gen(Char).new || Gen(Int32).new) # => Char

foo(1) # Error: no overload matches 'foo_impl' with type Int32

Perhaps we could extract this idiom into a pseudo-method. A regular method probably wouldn't work; if we replace foo_impl(x) with yield x, the static type of the block argument would still be a union of Gens.

Another thing to consider:
class Gen(T)
end

def foo(a : Gen(T)) forall T
  p T
end

foo(Gen(Int32).new || Gen(Char).new)

Currently fails:
Error: no overload matches 'foo' with type (Gen(Char) | Gen(Int32))

Overloads are:
 - foo(a : Gen(T))
Couldn't find overloads for these types:
 - foo(a : Gen(Int32))

If we dispatch here, the same can be said about a plain free var restriction:
def foo(x : T) forall T
  p T
end

foo(1 || 'a') # => Int32
foo('a' || 1) # => Char

as dynamic dispatch would generate separate overloads for T = Int32 and T = Char. IMO this is undesirable as it leads to semantic consequences like the following:
def foo(x : T) forall T
  [x]
end

# without dynamic dispatch:
foo(1 || 'a').class   # => Array(Char | Int32)
foo('a' || 1).class   # => Array(Char | Int32)
typeof(foo(1 || 'a')) # => Array(Char | Int32)
typeof(foo('a' || 1)) # => Array(Char | Int32)

# with dynamic dispatch:
foo(1 || 'a').class   # => Array(Int32)
foo('a' || 1).class   # => Array(Char)
typeof(foo(1 || 'a')) # => (Array(Char) | Array(Int32))
typeof(foo('a' || 1)) # => (Array(Char) | Array(Int32))

So I am inclined towards not allowing dynamic dispatch here; when one writes Gen(T) forall T, the static type of the argument must never be a union. Instead there is the following way to perform dynamic dispatch on a static union type:
class Gen(T)
end

def foo_impl(a : Gen(T)) forall T
  p T
end

def foo(x : T) forall T
  {% begin %}
    case x
      {% for t in T.union_types %}
      in {{ t }} then foo_impl(x)
      {% end %}
    end
  {% end %}
end

foo(Gen(Int32).new || Gen(Char).new) # => Int32
foo(Gen(Char).new || Gen(Int32).new) # => Char

foo(1) # Error: no overload matches 'foo_impl' with type Int32

Perhaps we could extract this idiom into a pseudo-method. A regular method probably wouldn't work; if we replace foo_impl(x) with yield x, the static type of the block argument would still be a union of Gens.

Great analysis, thank you! And I agree with you.

Great analysis, thank you! And I agree with you.

This issue is probably the same as mine, which does not involve generics:
record Child, str : String = "bar"
record Parent, str : String = "foo", nested : Child = Child.new

def serialize(obj : T, de_unionize = false) forall T
  String.build do |io|
    each_ivar obj do |ivar|
      io << (de_unionize ? de_unionize(ivar) : serialize(ivar))
    end
  end
end

def serialize(str : String)
  str
end

def each_ivar(object : O, &) forall O
  {% for ivar in O.instance_vars %}
    yield object.@{{ivar}}
  {% end %}
end

def de_unionize(object : U) forall U
  {% for u in U.union_types %}
    return serialize object if object.is_a? {{u}}
  {% end %}
end

p serialize Parent.new                    # => "foo"
p serialize Parent.new, de_unionize: true # => "foobar"

As @HertzDevil suggested, I did have to implement a method to de-unionize.

This issue is probably the same as mine, which does not involve generics:
record Child, str : String = "bar"
record Parent, str : String = "foo", nested : Child = Child.new

def serialize(obj : T, de_unionize = false) forall T
  String.build do |io|
    each_ivar obj do |ivar|
      io << (de_unionize ? de_unionize(ivar) : serialize(ivar))
    end
  end
end

def serialize(str : String)
  str
end

def each_ivar(object : O, &) forall O
  {% for ivar in O.instance_vars %}
    yield object.@{{ivar}}
  {% end %}
end

def de_unionize(object : U) forall U
  {% for u in U.union_types %}
    return serialize object if object.is_a? {{u}}
  {% end %}
end

p serialize Parent.new                    # => "foo"
p serialize Parent.new, de_unionize: true # => "foobar"

As @HertzDevil suggested, I did have to implement a method to de-unionize.

So if Gen isn't equivalent to Gen(T) forall T in type restrictions, which one should Gen(_) be equivalent to?

We could perform dispatch over free variables only when the usual unification fails. More specifically, suppose we have:
def foo(x : Array(T), y : Array(T)) forall T
end

If a type like Array(Int32) | Array(String) is used then unification will fail. In this case, we expand each restriction to a fictitious Union of copies of the original restriction, with the free variables in each copy renamed:
def foo(
  x : Array(T_11) | Array(T_12) | Array(T_13) | ... ,
  y : Array(T_21) | Array(T_22) | Array(T_23) | ...
) forall T_ij...
end

These Unions are matched against the argument types and every T_*j produces a different overload to be dispatched, with the additional requirement that if the same free variable is used in multiple parameters, only the common matches that appear on all such parameters (i.e. T_1* & T_2* & T_3* & ...) count as successful substitutions:
# T_1* = {Int32}
# T_2* = {Int32}
# T = {Int32}
foo([1], [1]) # note that normal unification should also succeed here

# T_1* = {Int32, String}
# T_2* = {Int32, String}
# T = {Int32, String}
foo([1] || [""], [1] || [""])

# T_1* = {Int32, Char}
# T_2* = {Int32, String}
# T = {Int32}
foo([1] || ['a'], [1] || [""])

# T_1* = {Int32 | String}
# T_2* = {String}
# T = ø
foo([1 || ""], [""])

def bar(x : Array(T), y : Array(U)) forall T, U
end

# T_1* = {Int32, String}
# U_1* = {Int32, String}
# T × U = {(Int32, Int32), (Int32, String), (String, Int32), (String, String)}
bar([1] || [""], [1] || [""])

# T_1* = {Int32 | String}
# U_1* = {String}
# T × U = {((Int32 | String), String)}
bar([1 || ""], [""])

At this stage any bare free variable restrictions expand union types to their power sets:
def foo(x : T, y : Array(T)) forall T
end

# T_1* = {NoReturn, Int32}
# T_2* = {Int32 | String}
# T = ø
foo(1, [1 || ""])

# T_1* = {NoReturn, Int32, String, Int32 | String}
# T_2* = {Int32 | String}
# T = {Int32 | String}
foo(1 || "", [1 || ""])

# T_1* = {NoReturn, Int32, String, Int32 | String}
# T_2* = {Int32}
# T = {Int32}
foo(1 || "", [1])

These unions and power sets are only needed for a formal definition; the compiler probably won't create them.
I would like to add that the following should unify normally for any pairs of argument types (it currently doesn't):
def foo(x : T, y : T) forall T
  T
end

foo(1, "") # => Int32 | String

The standard library, to my knowledge, doesn't do this outside the Atomic primitives, but these also have Pointer(T) restrictions so matching would remain unaffected.

Hm, I'm wondering if this would actually be correct.
I would interpret def foo(x : T, y : T) forall T that both arguments are supposed to have identical types. And not that the compiler should construct a union type to fit different types.
On the other hand, you can also just cast both arguments to Int32 | String explicitly. Maybe having the compiler do that implicitly wouldn't be too bad. But it still seems unintuitive.
What's the point in restricting both arguments to the same type then, if any pair of types would be acceptable?

Revisiting this issue and you're probably right that T should restrict exactly to the argument type. In that case we have:
def foo(x : T, y : Array(T)) forall T
end

# T_1* = {Int32}
# T_2* = {Int32 | String}
# T = ø
# missing overloads for everything
foo(1, [1 || ""])

# T_1* = {Int32 | String}
# T_2* = {Int32 | String}
# T = {Int32 | String}
foo(1 || "", [1 || ""])

# T_1* = {Int32 | String}
# T_2* = {Int32}
# T = ø
# missing overloads for everything
foo(1 || "", [1])

# T_1* = {Int32 | String}
# T_2* = {Int32, String}
# T = ø
# missing overloads for everything
foo(1 || "", [1] || [""])


core/front data_source_id migration

Description
Migrate all core data_sources.data_source_id to using a random id (coherent with core new_id()) and update front's associated data_source.dustAPIDataSourceId.
The migration also checks that we don't have any dangling data source one side or the other.
We create a revert SQL file.
Test to run in dev:

[ ] run migration
[ ] check data sources are funcitonal

Risk
Errors at upsert (retried) and in conversation theoretically possible during the LIVE migration but probability is low.
We create revert sql files to revert the migration at any time.
Deploy Plan

deploy prodbox
run migration

Will tweak and merge/apply tomorrow :+1: thanks for the review


make full results table sortable

The full result table is not sortable at the moment. It would be user-friendly if the results could be sorted by clicking on headings (small arrows up and down for ASC/DESC, see https://support.rstudio.com/hc/en-us/article_attachments/201725247/viewer.png)

In my opinion, sorting by cases found is sufficient. If we have a large (> 50) number of biobanks participating, I would rather add additional filtering capability by biobank. At the end, the user has to mark all biobanks to negotiate with, which isn't doable with large amounts of biobanks and sorting certainly doesn't help here.

The addition of filter options to sorting options would be even more user-friendly.


If Relationship Type is changed, the reciprocal relationship should update to match new Type.

Thread.
Replicated. When Type is 'Mother' for example, reciprocal relationship is 'Daughter' as it should be. When Type on original record changed to a different value, the appropriate linked Type is not updated on the reciprocal and should be.

**lurch: add

Tracking W-018746

Prob my fault. :-(

Nope, it's ours in that we didn't catch the regression in our testing.


proposal: kiln plugins

Should work similarly to how behaviors, decorators, and validators work. Allows people's Clay installs to change the editing experience itself. Useful for things like spaces and word counts.
We could set this up similarly to how behaviors, decorators, and validators work. Basically an array of objects, with each containing some functions/hooks into kiln. Some ideas:
init - function that runs on page load, after kiln has run its controllers. can be used to add things to selectors, toolbar, etc.
onSave - function that gets called after any component saves
Alternatively, we could set this up with some kind of eventing system plugins could hook into, but there might be situations where we want to pause Kiln execution until a plugin has finished running.

onFocus for when highlighting a component?

Also, I think the init function needs to actually have multiple steps/hooks. One for hooking into the selectors, one for hooking into the toolbar, one for a controller to be added. I'm wondering if someone might make a plugin which has both a selector level interaction and a toolbar interaction.

@jonwinton focus and select are different in kiln 😅
focus is when an editable element is clicked, and it usually opens a form (and selects the component)
select is when any part of a component is clicked, and it shows the component selector

Hmmm more to think about: what/home do we expose as services available to plugins? Can every plugin access the progress or do we keep control outside of the hooks?

In working with the spaces component I'm finding services that need to be exposed for a plugin to take advantage of:

creating a new component
adding a component to a component list
retrieving the data of a component from a uri
being able to specify a component to select/focus on
updating the selector of a component
providing a different template for a selector (maybe?)


Change Chado loading code to handle genotype-genotype interactions . (genetic interactions)

The needs doing before we go live with pombase/canto#1915

The code for this is now done and the tests pass.  I'm doing some local test loads on my desktop.  Still need to do pombase/website#1348 before we can try this out on the server.

I'm doing some local test loads on my desktop.

That didn't go well.  I hadn't thought through all the cases properly.  I've tried a few options but I can't see a sensible way to store genotype-genotype interactions that have phenotypes in Chado.  It just not flexible enough.  I'll go back to the drawing board.

;(

I hadn't thought through all the cases properly. I've tried a few options but I can't see a sensible way to store
genotype-genotype interactions that have phenotypes in Chado.

I'm still not sure how to do this.  To make some progress I think we should keep Chado the same for now.  My suggestion is that we change the Chado loader to understand genotype-genotype interactions but (for now) discard the allele and genotype information and store a gene-gene genetic interaction exactly as we currently do.
That's not too much work and it will allow us to update the PomBase Canto to the genotype-genotype interaction version (like the test Canto).  And everything downstream, like the website code and exporting to BioGRID will continue to work.

I've had an initial attempt at this.  It all seems to work fine for the data from the test Canto server.  Tomorrow I'll:

make a local copy of the main PomBase Canto database
upgrade that database to the new genotype-genotype interaction database format
export the sessions to a JSON file
do a full Chado load on my desktop including that JSON file

At that point I'll be able to compare the result of usual nightly load with my test.  My hope is that the output will be the same but we'll see.

Tomorrow I'll:

It worked pretty well.  In particular the number of genetic interactions in Chado is the same before and after changing Canto to genotype-genotype interactions.  I'm doing some deeper checking now.

Postponed until https://github.com/pombase/canto/issues/2301 is complete.

Based on our current discussion, these changes will need to be undone.

I'm going to try a local load with the new code tomorrow to see how far I get.

After a few attempts and a few fixes, I think it's all OK now.

I've merged this code into the main branch so that it can be tested in the overnight load.  There are no genotype interactions yet but I want to make sure nothing else has been broken by the change.


Error with install torch by requirement.txt. ModuleNotFoundError: No module named 'torch.distributed.algorithms'

I was installing your repo(to see whether I can make it converse) on GG cloud T4.

Resolve by reinstall torch :
pip3 install torch==1.8.1+cu111 torchvision==0.9.1+cu111 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html and it works
I have not check the 1.7 version but it is possible that torch.distributed.algorithms is not exist in torch 1.7
Btw installing torch inside the requirement.txt file is not stable. Because it ignore the system parameter(cud version, etc). Can you consider to move it outside?

Hi @egochao , thank you for the report. Actually I met the same problem but it turned out to be my local env conflict which is solved by re-installing from the python. For now, I'm still using torch 1.7. I'll back to your suggestion after debugging major parts, or you can PR first.


IsActive is not correct if game started while window not active.

The situation happening:

GameHost get Window.Focused and false is returned.
GameWindow.Run starts.
WinGLNative HandleActivate and Focused is set to true. OnFocusedChanged is invoked. Window.Focused is now true.
But this is before NativeWindow.Events is set to true and event listeners are not registered. The event is not reaching to NativeWindow and osu.Framework.
GameWindow.Run calls ProcessEvents and NativeWindow.Events is set to true. Now GameWindow can receive window events but it is too late.

I'm not sure what is the best way to fix this. I'm thinking of either:

Delay first get of Window.Focused (how late?).
Register event handlers (set Events to true) earlier. I'm not sure about the impact of doing this.

Still having this problem with the newest release using Ubuntu 18.10.


ECONNREFUSED when Redis Sentinel is down

I am testing Redis Sentinel and ioredis at the moment. My setup is as follows: three Debian 11 VMs and Redis v7.
        this.clientHandle = new redis({
            sentinels: [
                { host: "<IP_ADDRESS>", port: 26379 },
                { host: "<IP_ADDRESS>", port: 26379 },
                { host: "<IP_ADDRESS>", port: 26379 }
            ],
            name: "our-cluster",
            failoverDetector: true,
            password: password,
            connectionName: clientName,
            db: database,
            sentinelRetryStrategy(times) {
                console.log("sentinelRetryStrategy")
                return 5000;
            },
            retryStrategy(times) {
                console.log("retryStrategy")
                return 5000;
            },
            maxRetriesPerRequest: null,
            reconnectOnError(err) {
                console.log("reconnectOnError")
                return true;
            },
            sentinelReconnectStrategy(times) {
                console.log("[%s] sentinelReconnectStrategy", new Date())
                return 5000;
            },
            commandTimeout: 50000,
            lazyConnect: true,
            showFriendlyErrorStack: true
        });

        this.clientHandle.on('error', err => {
            console.log("[%s][%s][%s]", this.clientName, new Date(), err);
        })

        this.clientHandle.on('connect', () => {
            console.log('[%s][%s] Connection establied.', this.clientName, new Date());
        })

        this.clientHandle.on('ready', () => {
            console.log('[%s][%s] Connection is ready.', this.clientName, new Date());
        })

        this.clientHandle.on('close', () => {
            console.log('[%s][%s] Connection is closed.', this.clientName, new Date());
        })

        this.clientHandle.on('reconnecting', () => {
            console.log('[%s][%s] Reconnecting.', this.clientName, new Date());
        })

        this.clientHandle.on('end', () => {
            console.log('[%s][%s] Connection ended.', this.clientName, new Date());
        })
    }

Once a stop one of the three Redis Sentinel instances with systemctl stop redis-sentinel, e. g. on the third VM with IP .75, I continuously get the following messages in the console after five seconds:
[ioredis] Unhandled error event: Error: connect ECONNREFUSED <IP_ADDRESS>:26379
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1187:16)
[2022-06-09T06:19:20.818Z] sentinelReconnectStrategy
[ioredis] Unhandled error event: Error: connect ECONNREFUSED <IP_ADDRESS>:26379
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1187:16)
[2022-06-09T06:19:25.824Z] sentinelReconnectStrategy
[ioredis] Unhandled error event: Error: connect ECONNREFUSED <IP_ADDRESS>:26379
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1187:16)
[2022-06-09T06:19:30.826Z] sentinelReconnectStrategy

Is there any way to catch or silence them?

I too had the same problem. Based on this comment, I managed to silence the errors by adding a listener on error events.
Even empty callback function is enough, like client.on('error', () => {}).

@tukusejssirs I attached the error event listener and silentEmit started working. But its only working first time before the connection. I was doing the regression testing on this and found a case when you let the ioredis to connect to sentinels at the start and then kill the sentinel instances. After ~1 min the same silentemit doesn't detect the attached eventlisteners. It continues to return false and eventually execute the code unhandled error event.


Create sync between local filesystem and source on cluster

As a user, when I start a gitops run and pass a file path then all yaml files I create within that folder should be synced with my cluster.  I.e. if I were to create a config map, deployment, and service within the specified file path then I will see those appear on the cluster.  I will also see a Kustomization that shows a source.  That source is what syncs with the local file system.
Acceptance Critera
Given I have the gitops beta run ./my-path running

When I add a new manifest file such as a config map in my local directory ./my-path.  I should see that config map appear on the cluster.
When I add a GitRepository manifest file such as for pod info in my local directory ./my-path.  I should see that source appear on the cluster.
When I add a Kustomization manifest file such as for pod info in my local directory ./my-path.  I should see that automation appear on the cluster.
When I update the config map from step 1 with additional values, I should see that the config map is replaced on the cluster and that the additional values now appear.

Out of scope: "raw" helm charts. If you're managing your application with helm, you'd need to template the chart first. As in, I can't run gitops beta run ./charts/gitops-server for weave-gitops.
Right?


Created Statistics Page

Added Statistics Page

Hey Meg, looks good! :) Just that you might wanna consider separate the javascript and the html (From the guide: Note: For simplicity we've put the HTML and JavaScript all in one file. You probably want to split these out into their own files - I missed it the first time round too haha). I think the merge conflict should go away once you pull origin and then put in the functions again.

Thank you @jiangyue12392 and @Reine0017 for your help and inputs!! :)

I have made the changes. Please help review it again! :)

Looks great! :)


Allow kubectl expose to be polymorphic to the source of the selector

Allows exposing new resource types to be exposed (OpenShift deployment
controllers, copying services, and other resources that will have
pod label selectors).
Also fixed a bug where the selector wasn't exposed because of parameter
defaulting.

LGTM. Trappable is green, nit inconsequential. Merging.


swagger-gradle-plugin generates empty file

I'm on the way of migrating to spring boot 2.2 and found that springfox is not working for me.
So I'm switch to springdoc-openapi backed by swagger-core 2.1.1
I'm use swagger-gradle-plugin v2.1.1
my build.gradle looks like
plugins {
    id "io.swagger.core.v3.swagger-gradle-plugin" version "2.1.1"
}
resolve {
    outputFileName = 'swagger'
    outputFormat = 'JSONANDYAML'
    prettyPrint = 'TRUE'
    classpath = sourceSets.main.output + configurations.compileClasspath
    resourceClasses = ['com.example.TestController']
    outputPath = file("${project.buildDir}")
}

Output for json is
{
  "openapi" : "3.0.1"
}

and for yaml
openapi: 3.0.1
I've created a repo where my issue reproduces - https://github.com/eugenekainara/swagger-gradle-plugin-repro
p.s. when I'm starting my app with ./gradlew bootRun - api-docs is accessible via http://localhost:8080/v3/api-docs

I have the same problem. Do you solved? @eugenekainara

I'm facing the same issue, any news on this?

@mijailr still facing empty file. Will work on it on next week

Have you found any solution?


Refactor rollup config to use Embroider addon dev

This requires the changes in https://github.com/embroider-build/embroider/pull/1106 in order to work.

woo woo thanks!


Add Image Data Extraction Capability using OCR

Integrate a feature into the "AI Chat Assistant" tool that allows users to extract text data from image files using Optical Character Recognition (OCR) technology. This will enable the chatbot to process and analyze text content embedded in images, such as scanned documents, photographs of text, and more.
I am Participating in GSSOC'24.

Please assign this issue to me.


[Folding] Could vscode support #region and #endregion in PHP ?

Could vscode support #region and #endregion in PHP ?
( # is also a PHP comment, so we can use C# folding mark )
PHP supports 'C', 'C++' and Unix shell-style (Perl style) comments
Thank you.
Follow: #12146

Technically yes, but I don't know that I would want to implement a brand new folding construct for PHP in vscode. Does any other editor respect that in PHP?

PhpStorm has folding comment //region and //endregion
Visual Studio style folding
Personaly, I use #region and #endregion in my PHP code.
(I also writing C# code, so I use VS style folding comment)
I saw the new 'Folding regions' feature in v1.17.1 release log, I think maybe vscode can support this feature in PHP.
If this feature request is unnecessary, you can close this issue. :)


support arrow function in umd

What kind of change does this PR introduce?
fixes #15545

Did you add tests for your changes?
yes

Does this PR introduce a breaking change?
no

What needs to be documented once your changes are merged?
nothing

Thanks


Bug - Continuation After Prompt to Link Work and Social Accounts

When signing into an account, I am prompted to share between work and personal accounts.

When I select "Don't connect" I am brought to a blank page and nothing renders on the screen.

This sounds like MS's problem. Do you have the same problem on Edge?

Feel free to reopen the issue if the issue persists.


Add environment variables to define Android keystore information

These make it possible to specify keystore information without storing it into export_presets.cfg. When used, this makes export_presets.cfg safely checkable into version control. This should make setting up continuous integration significantly easier.
The variables are:

GODOT_ANDROID_KEYSTORE_PATH: Absolute path to the keystore file
GODOT_ANDROID_KEYSTORE_USER: Keystore username
GODOT_ANDROID_KEYSTORE_PASSWORD: Keystore password

These will be used when exporting in both debug and release modes. If a variable isn't set, the old behavior will apply.
I'm marking this as a draft as it needs testing (cc @Myran) and better signalling in the editor GUI (if it's set before starting the graphical editor). Right now, if one of those variables is set, the editor Export dialog will still display the keystore properties as usual, even though it won't use their values. Any suggestions? I'd like to have the variables used in both headless and non-headless versions, as it's more consistent and can be useful to avoid storing the release keystore in the project files when working with version control.
This closes #2759. This partially addresses https://github.com/godotengine/godot-proposals/issues/1156. See also https://github.com/github/gitignore/pull/2827 and https://github.com/godotengine/godot-demo-projects/issues/329.

@Myran and others, you can use this Linux headless binary for testing: https://0x0.st/iiHW.zip (link will expire in late 2020)

@Myran and others, you can use this Linux headless binary for testing: https://0x0.st/iiHW.zip (link will expire in late 2020)
It was built on Ubuntu 16.04.

Unfortunately I use MacOS currently due to focus on both iOS and Android (A headless option for mac would be nice since you cant supress the window like on windows).
While this is good there are other parts of the export_preset.cfg that needs to be exposed in other cases. Maybe a more general solution for the whole export_preset is viable?
Example: Currently to deploy new apk/ipa:s to testflight and play store, the version needs to be incremented each build. I use fastlane for iOS and there is support for incrementing the builds trough xcode however for apk:s I had to create this script:
extends SceneTree

func _init():
	var export_config = ConfigFile.new()
	var export_config_path = "res://export_presets.cfg"
	var config_error = export_config.load(export_config_path)
	print("Current version value:",export_config.get_value("preset.1.options","version/code"))
	var arguments = {}
	for argument in OS.get_cmdline_args():
		# Parse valid command-line arguments into a dictionary
		if argument.find("=") > -1:
			var key_value = argument.split("=")
			arguments[key_value[0].lstrip("--")] = key_value[1]
	var version = arguments["export_android_version"]
	print("Set version to:",version)
	export_config.set_value("preset.1.options","version/code",version)
	export_config.save(export_config_path)
	quit()

And run this before export.
godot.osx.opt.tools.64 --path project -s update_android_version.gd --export_android_version=$CI_PIPELINE_IID

Its currently very rough and I was planning to clean it up and generalize it to all settings when need arises (keystore being one of them) but if its possible to handle it internally it would be great.

Unfortunately I use MacOS currently due to focus on both iOS and Android (A headless option for mac would be nice since you cant supress the window like on windows).

There is one, but you need to build Godot from source to use it. Just build Godot with platform=server as you'd do on Linux; it will give you a macOS headless binary.

(A headless option for mac would be nice since you cant supress the window like on windows).

There is one, but you need to build Godot from source to use it. Just build Godot with platform=server as you'd do on Linux; it will give you a macOS headless binary.

I tried to build this a while ago but server wouldnt show as an option for platforms and it was implied somwhere that it was only for linux. But now it works without problems, thanks!

Are there any blockers with this? I think what it accomplishes is good enough to solve the CI problem for pc/android.
Let me know if there's anything I can help with.

@Calinou Hi, how can I help get this shipped? I can resolve the merge conflict and push to your repo if you want me to.

@idoby I just rebased it. Note that the master branch is currently undergoing refactoring, so getting this PR merged may take a while.

I need it for my CI process too and I don't want to build Godot during CI.
I'd like at least some indication in the UI in case things stop working because I've set the env vars and I have to start figuring out why, but I agree this PR should get merged before that.
Thanks for your work, friend!

@idoby In the meantime, you can use sed commands to replace text in export_presets.cfg before exporting the project. It's not pretty, but it works :slightly_smiling_face:
There are some examples of this in the wild, such as https://github.com/dbrova15/godot-ci-android-bakz/blob/master/.gitlab-ci.yml#L53.

Thanks, but looks like I won't be able to get away with vanilla Godot anyway, since we need some modifications.
But anyway this is way off topic. Feel free to @ me if you need help with this PR or any other!

I remade the pull request from scratch for the new Android exporting code.
The UI now uses a different error message if the keystore path was specified using the environment variable.

I remade the pull request from scratch for the new Android exporting code.
The UI now uses a different error message if the keystore path was specified using the environment variable.

I don't consider this a fix of https://github.com/godotengine/godot-proposals/issues/1156. From what I see, keystore passwords are still stored in plain text when configured through the editor and are by default committed to git repositories. I would argue this is a critical security flaw.

No, this is fully superseded by https://github.com/godotengine/godot/pull/76165.


create-dist.py report error

I'm trying to create an RPM package for Centos 7 based on your spec file (https://build.opensuse.org/package/view_file/home:zcbenz:atom-shell/atom-shell/atom-shell.spec?expand=1)
after
git clone --branch v0.21.3 https://github.com/atom/atom-shell.git
cd atom-shell/
./script/bootstrap.py
./script/build.py
everthing is fine, then :8ball:
./script/create-dist
report me this:
Downloading symbols for libchromiumcontent 103778aa0ec3772f88e915ca9efdb941afdc85cf...
http://gh-contractor-zcbenz.s3.amazonaws.com/libchromiumcontent/linux/64bit/103778aa0ec3772f88e915ca9efdb941afdc85cf/libchromiumcontent-symbols.zip
.............................................................................................................................................................................................................................................................................................................................................................................
Extracting...
Traceback (most recent call last):
File "./script/create-dist.py", line 223, in
sys.exit(main())
File "./script/create-dist.py", line 93, in main
create_dist_zip()
File "./script/create-dist.py", line 193, in create_dist_zip
make_zip(zip_file, files, dirs)
File "/root/test/atom-shell/script/lib/util.py", line 100, in make_zip
zip_file.write(filename, filename)
File "/usr/lib64/python2.7/zipfile.py", line 1114, in write
st = os.stat(filename)
OSError: [Errno 2] No such file or directory: 'libgcrypt.so'
but libgcrypt is already install, so where is the problem, i can t understand

You can remove the line that contains libgcrypt.so in create-dist.py to work around this. This script copies some system libraries to the distribution but doesn't count the situation when the library doesn't exist.

ok so this will work :
git clone --branch v0.21.3 https://github.com/atom/atom-shell.git
cd atom-shell
./script/bootstrap.py
./script/build.py -c Release
sed '71d' /script/create-dist.py
./script/create-dist.py
but if i change version it won t of course.So can you think about it in your next commit?
my RPM is still building, it will inform you in case of fail

RPM work but if i want to upgrade atom-shell's version, i will have to redo some of the work because of this, so could you resolve this problem quick please?

Thanks a lot


Hard to Polyfill useMeasure

What is the current behavior?
useMeasure is exported as a noop function when window.ResizeObserver is undefined.
This happens even when window.ResizeObserver is polyfilled by the time useMeasure would be called.
See this line.
Steps to reproduce it and if possible a minimal demo of the problem. Your bug will get fixed much faster if we can run your code and it doesn't have extra dependencies other than react-use. Paste the link to your JSFiddle or CodeSandbox example below:
import { useMeasure } from 'react-use';

window.ResizeObserver = MyResizeOberverPolyfill;

useMeasure() // Doesn't use MyResizeOberverPolyfill

What is the expected behavior?
The above code should work as expected.
A little about versions:

OS: all
Browser (vendor and version): all
React: all
react-use: 17.3.2 (but probably earlier versions too)
Did this worked in the previous package version? Yes. This was changed by this commit

I would suggest fixing this by moving the typeof (window as any).ResizeObserver !== 'undefined' check into the useMeasure function body to ensure that existing code which relies on this code is not broken.
Happy to submit a PR :)


WIP: Add block exchange

Pull Request Test Coverage Report for Build 205

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 47.544%

Totals

Change from base Build 199:
0.0%

Covered Lines:
542

Relevant Lines:
1140

💛  - Coveralls


Deployable version of our front end product

Using PyInstaller we need to create a version of our code that others will be able to utilize on their computer in a simple manner.
--MACOS
--Windows

Windows version is completed by pull request #113


FileNotFoundError: [Errno 2] No such file or directory: 'paraphraser_gpt2_large/training_args.bin'

Could you please help with fixing the following error when trying to run "demo_paraphraser.py"?
 FileNotFoundError: [Errno 2] No such file or directory: 'paraphraser_gpt2_large/training_args.bin'

Thanks a lot!

Hi @OliveS9, you would need to download the model / args file from the Drive folder link in README (https://drive.google.com/drive/folders/1RmiXX8u1ojj4jorj_QgxOWWkryDIdie-?usp=sharing). Let me know if you have any further questions.


Hackebrot integrate pytest in setup

I implemented a PyTest command class in setup.py similar to http://pytest.org/latest/goodpractises.html#integration-with-setuptools-test-commands
Currently python setup.py test still uses unittest which means some of the re-implementations are not run at all. By changing this the documentation changes to CONTRIBUTING.rst of #310 are correct again.
Additionally I removed pytest.ini to address #333. It stopped us from running only specific tests as for instance py.test tests/test_generate_file.py. More importantly the suite is not executed twice any longer and the coverage is not calculated when running tests only.
Your feedback is highly appreciated! :kissing_closed_eyes:

Conflicts.

Resolved :wink:

LGTM.
:+1:


Add a way to report whether Vty is shutdown or not

This is way less needed after https://github.com/jtdaugherty/vty/issues/159, but it would be nice in some circumstances to have an isShutdown :: IO Bool field on Vty.
I realize this would be a breaking change, but I'm curious what you think about it (and would be happy to make a PR if you do want it).

How would it be a breaking change?

I was thinking that the only way to implement it would be adding a field to Vty, and that adding fields is a breaking change. Either of those assumptions might be wrong though:)

I'm inclined to think that adding a field should be fine here, because nobody should be pattern-matching on the fields of a Vty value. In other words, I think the risk of breakage is extraordinarily small. Still, bumping the version to 5.25 is cheap enough that it would be fine to do that, too.

As far as the actual proposal here, I'd be fine with the change you describe and it would just close over the TVar I added in the previous patch. If you want to submit a patch, that's great; otherwise I can get to it later today.

Absolutely! (force-pushed)

Thanks!

This is now released in 5.25.


Generated route param types should include param matchers guard checks

Describe the problem
Typed route param types do not match ones provided from params/* match functions.
Consider following setup
// params/fruit.ts

import type { ParamMatcher } from '@sveltejs/kit'

const fruits = ['apple', 'banana', 'cherry'] as const
type Fruit = typeof fruits[number]

export const match = ((param): param is Fruit =>
	fruits.includes(param as Fruit)) satisfies ParamMatcher

Match function is strictly typed using type guard, so typescript knows that function only returns true when param is a fruit.
Now trying to access it inside page using it gives you incorrect type
// routes/[slug=fruit]/+page.svelte

Fruit

{slug}

Describe the proposed solution
Generated route $types.d.ts should take into account match function guard checks, so instead of generated output of
type RouteParams = { slug: string }

it should be
type RouteParams = { slug: 'apple' | 'banana' | 'cherry' }

if using guard types it could even exclude undefined from final type since it would never match it too.
Alternatives considered
No response
Importance
nice to have
Additional Information
No response

I had the same thought the other day — this would be a cool addition

@dummdidumm what if page was imported from something like ./$stores? Would that work?
import { page } from "./$stores";
$page.params.slug // string

We can infer which values would pass the match function using the following generic:
const fruits = ['apple', 'banana', 'cherry'] as const
type Fruit = typeof fruits[number]

export const match = (param : string) : param is Fruit => fruits.includes(param as Fruit)

//If there is a typeguard specified, use that
//otherwise fallback to string
type ValidParams<T> = T extends (param: string) => param is (infer U) ? U : string;

// ValidParams<typeof match> = 'apple' | 'banana' | 'cherry' - Gets inferred from typeguard

I actually get a red squiggly on the infer U bit in my IDE, but it still works so 🙃


Need to determine how to handle i18n instances with new certs

Because the new JS cert is immediately taking place of the old one, and is not translated, it creates the appearance that the other super blocks are also no longer translated:

We should discuss how we want to better implement this CTA.

We could wrap the CTA inside the superblock link as an article with border/similar styling to indicate the CTA belongs only with that superblock:

But...Ahmad styles it

So then we'd need that CTA on every superblock?

Only if there are no neighbours also needing translations. That is, we could group untranslated neighbours together under/with the same border.

Lets do this @sidemt !


Connection message missing in Realtime-API documentation

According to #205 the documentation lacks of informations about the connection message

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

@Davide95 thanks for your contribution!


Question about scalability

Can anyone help me with ideas what's the best approach to use workerman but making scalable? Something like a farm server. Not sure if this posible but let's read the following example:
Server 1 the main server
Server 2 secondary server
Server 3 secondary server
Server 1 can handle db interactions and send message from server 2 to server 3 and the otherwise way around.
Not sure if you understand my point but any idea about this topic is welcome. Thanks in advance.

@lpadillae
I think this link is useful for you http://doc.workerman.net/components/channel.html or https://github.com/walkor/channel
And you can follow rpc https://github.com/walkor/workerman-jsonrpc
Good luck!


add directions for pre-existing .zshrc files

Currently if you already use zsh, there is nothing to say that you need to rename your pre-existing .zshrc file for installation to work.

There is something that grml zsh does that I like.
From https://github.com/grml/grml-etc-core/blob/master/etc/zsh/zshrc#L14 :
If you are using this file as your ~/.zshrc file, please use ~/.zshrc.pre
and ~/.zshrc.local for your own customisations. The former file is read
before ~/.zshrc, the latter is read after it.

Your previous zshrc can conflict with Prezto. There are also many Zsh configuration file, and Prezto adds another one: zpreztorc.

@hugdru The grml zshrc is huge and dangerous to modify. It make sense to have a pre and post in that case. The Prezto zshrc is tiny, safe to modify in place.


[PE-D][Tester E] Example in User Guide for 'Add' Command

Description
The example provided for adding a contact includes a placeholder for a phone number ("1234567") which does not conform to the valid format for Singapore. Since users in Singapore are accustomed to an 8-digit phone number format, this may lead to confusion and incorrect phone number entries.
Steps to Reproduce

Navigate to the section of the user guide for adding a contact.
Observe the example provided for entering a phone number.

Expected Behaviour
The example phone number should be in an 8-digit format consistent with Singapore's phone number standards to prevent any confusion for the users.
Suggested Changes

Update the placeholder phone number in the documentation and example to reflect the standard 8-digit format.
Ensure that all example phone numbers in the documentation and application adhere to the local standards for the Singapore region.

Labels: severity.Low type.DocumentationBug
original: raysonchia/ped#1

Cannot change since this is a change in feature


Upmerge 1.9.x to master

@nicolasnoble FYI, I have left out the "Revert  #13932" out of this upmerge

****************************************************************

libgrpc.so

     VM SIZE                                                                                FILE SIZE
 ++++++++++++++ GROWING                                                                         ++++++++++++++
   +17%    +448 src/core/ext/filters/max_age/max_age_filter.cc                                     +448   +17%
      [NEW]    +388 max_idle_timer_cb                                                                  +388  [NEW]
      +195%    +160 decrease_call_count                                                                +160  +195%
      +286%    +103 increase_call_count                                                                +103  +286%
      +2.1%     +16 init_channel_elem                                                                   +16  +2.1%
      +2.1%      +3 [Unmapped]                                                                           +3  +2.1%
  +0.1%     +16 src/core/ext/filters/client_channel/client_channel.cc                               +16  +0.1%
       +13%     +11 pick_callback_done_locked                                                           +11   +13%
      +1.8%      +5 [Unmapped]                                                                           +5  +1.8%
  +0.1%     +16 src/core/lib/surface/call.cc                                                        +16  +0.1%
      +6.8%     +16 publish_app_metadata(grpc_call*, grpc_metadata_batch*, int) [clone .isra.5]         +16  +6.8%

 -+-+-+-+-+-+-+ MIXED                                                                           +-+-+-+-+-+-+-
  -0.0%     -24 [None]                                                                          +1.17Ki  +0.0%

  +0.0%    +456 TOTAL                                                                           +1.64Ki  +0.0%

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

https://github.com/grpc/grpc/issues/14354