hub pr conflicts with git alias pr = pull-request

Just updated hub to the latest version 2.3.0, from I believe 2.2.9 (recently ran brew cleanup and 2.2.9 is the only other version I have on my machine at the moment).
I see that a hub pr command was added. Unfortunately, I had already added an alias to my ~/.gitconfig that set pr = pull-request, and since it's not possible to override internal git commands with an alias, I will now have to go back to using the full pull-request or come up with another alias (git cpr just doesn't have the same intuitiveness) or resort to a shell alias (gitpr).
The damage is already done, and I don't expect this to be changed on my account, but it seems odd to have two commands for working with pull requests, instead of just adding the new pr subcommands to the existing pull-request command, which is how git commands are typically organized -- even those that have a default operation without a subcommand, but other behavior when a subcommand is provided , e.g. git branch, git remote, et al.
Hub is amazing and I make it a standard part of the toolkit for all of my teams, but this change was definitely a violation of POLA, at least for me.
Cheers

Thanks for letting us know!
Unfortunately, the only way to never violate anybody's aliases is to never ever add new commands to hub. This will not happen because hub wants to grow. And now that hub pr is here, I can't remove it just to make your alias work again—the command is here to stay and will gain more features and subcommands over time.
You have two options:

Don't alias hub as git (this is what I do). This way, you can use git for regular git stuff, and hub for hub-only functionality. That way you can keep your git pr alias.
Implement a shell function to handle your aliasing needs, such as one suggested in https://github.com/github/hub/issues/1536#issuecomment-392895328.

Closing because I'm not sure what actionable item there is from your report. I can't delete hub pr, and I can't make git pr alias work while hub pr exists and hub is aliased to git.

@mislav There were no actionable items, so closing is expected.
If pr is to replace pull-request in the near future (including getting the ability to create PRs) than I have something to look forward to. I will use the shell function shared in the other issue thread (thanks for linking to that) as a work around until such time that pull-request is replaced by or deprecated in favor of pr.
Cheers

pull-request works fine, if I want it shorter I can add my own alias.

The better solution for this would have been to not have created a hub command which was this short.  People are significantly less likely to have an alias of pull-request.  They are significantly more likely to have an alias of pr.  There was no reason to make the hub command this short when, should people choose, they could have created pr as an alias.

The pr subcommand looks like sloppy planning, IMO. There are two commands for working with pull requests, and the word pr doesn't line up with the already existing convention of fully spelled-out git subcommands (with the exception of rm and mv). In fact, it's the only hub subcommand that's abbreviated... and the full name already exists in a different subcommand that works on the exact same GitHub resources.
The implementation of pull-request and pr should have been done the way release is done, and like I said this just looks like it was done by two different people and they didn't talk to each other. Check out the help:
   pr             List or checkout GitHub pull requests
   pull-request   Open a pull request on GitHub
   release        List or create GitHub releases

I feel like the following would have been more consistent, discoverable, and user-friendly:
   pull-request   List or create GitHub pull requests
   release        List or create GitHub releases

@particledecay You're right, it wasn't well-thought through.
I made a call to call the pr command the way I did because pull-request already existed in a form that doesn't accept subcommands, and I wanted a PR command that has a number of subcommands. I also wanted people to have less to type. There were tradeoffs with each potential approach, and this issue describes one such tradeoff.

@mislav would it be too much to ask to plan the next major version (3.x, breaking change) to behave this way?
It wouldn't affect anyone sticking to the 2.x version.

@particledecay In which way, exactly?

@mislav consolidating both subcommands into a single pull-request command


In theme, define color name once

A color name should be defined once and other types should be constructed from that.
https://github.com/este/este/blob/9d529032cdffa2e9f5201693f7bce07359f08515/themes/types.js
Hope https://twitter.com/calebmer will help us again.

Not yet https://twitter.com/estejs/status/907272756789760000

Hmm.


Jit + Optional argument have slightly surprising behavior

The following code works as intended, but I was very surprised it works:
import jax.lax as lax
def f(logits, x_in):
  if x_in is None:
    return logits
  else:
    return logits + x_in

h = jax.jit(f)
a = np.random.randn(10).astype("float32").reshape([1, -1])
print(h(a, 1.0))
print(h(a, None))

The main reason is that here x_in is not a static_argnum but it seems that it is treated like one. The actual reason is that None is treated like a different pytree node and jit uses the pytree to hash. As a result I think this should be documented somewhere a bit better so that people do not get confused by this behavior.

Does the control flow section in the "common gotchas" notebook render this less surprising? The notebook section is also linked to by the main README.

here x_in is not a static_argnum but it seems that it is treated like one

Note that the type of the second argument changes when going from 1.0 to None, not only its value.

I think the fact that the type changes here, together with the fact that JAX API-level functions handle Nones, is the answer for why this works.
I'm going to close this because I think the mystery is dispelled.


Limit amount of pull requests displayed

Is your feature request related to a problem? Please describe.
If there're lots of pull requests scrolling can be a pain.
Describe the solution you'd like
Either limit the amount of pull requests or add paging.

There doesn't seem to be a need for this. The issue could be reopened if requested.


Add all browser bundles (for master)

Fixes #53 and #24
#55 is against current release branch. This is against master.
I'm not sure how to handle such things :confused:
I defer to @vrde

Codecov Report

Merging #56 into master will increase coverage by 15.12%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##           master      #56       +/-   ##
===========================================
+ Coverage   50.53%   65.66%   +15.12%
===========================================
  Files          21       21
  Lines         279      300       +21
===========================================
+ Hits          141      197       +56
+ Misses        138      103       -35

Impacted Files
Coverage Δ

...saction/serializeTransactionIntoCanonicalString.js
100% <0%> (ø)
:arrow_up:

src/baseRequest.js
75% <0%> (+21.42%)
:arrow_up:

src/format_text.js
36.36% <0%> (+27.27%)
:arrow_up:

src/connection/index.js
64.7% <0%> (+36.58%)
:arrow_up:

src/stringify_as_query_param.js
90% <0%> (+60%)
:arrow_up:

src/sanitize.js
73.68% <0%> (+63.15%)
:arrow_up:

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 678a4d5...8a0fcd3. Read the comment docs.

This is me currently: http://classicprogrammerpaintings.com/post/142586036029/junior-programmer-learns-git-rebase


Dynamically adjust number of example table columns

I was scrolling through the README, and noticed the Mobile examples section could be improved.

This adjusts the number of columns in the example tables based on how many examples exist.
This should improve the look of the tables when there are fewer than 3 examples in a single category.
Specifically, instead of
| 🥇 | 🥈 | 🥉 |
| :---:         |     :---:      |          :---: |
|NativeScript (Angular)

it will render
| 🥇 |
| :---:         |
|NativeScript (Angular)

In the event that two examples exist, it will render
| 🥇 | 🥈 |
| :---:         |     :---:      |
|NativeScript (Angular) |Another (Example)

In the event that there are 3+ examples, it will render normally.

Thanks, @sambostock!
Apologies for the delay in reviewing your PR, the maintenance team had very limited availability and we've recruited new members to help with the project.
Your PR is very nice but it didn't fix a more important issue, which is the size of the implementation logos. When there are less than 3 implementations in a table, the logos are displayed bigger than they should be.
I fixed this issue in #597. It is still imperfect, but it is an improvement. 😄

Thanks, @sambostock!
Apologies for the delay in reviewing your PR, the maintenance team had very limited availability and we've recruited new members to help with the project.
Your PR is very nice but it didn't fix a more important issue, which is the size of the implementation logos. When there are less than 3 implementations in a table, the logos are displayed bigger than they should be.
I fixed this issue in #597. It is still imperfect, but it is an improvement. 😄


compiler restriction for mocktracer are too strict

https://github.com/opentracing/opentracing-cpp/blob/359bafe4f5e026400620827c23e8e571ad875c02/mocktracer/3rd_party/nlohmann/include/opentracing/mocktracer/nlohmann/json.hpp#L67
see https://github.com/nlohmann/json#supported-compilers
I believe a library like opentracing-cpp cannot be as strict in supported compilers as mentioned here, IMHO the line should be c++11, which is AFAIU gcc 4.8.5 (with certain cpu architectures excluded).
So, either this check is wrong, or this component is not a good dependency.

I put in #54 that changes to do only serialization and uses manual code instead of a library.
I removed the deserialization code since that can always be done by the code testing against the mocktracer.


[FEATURE] Use cache for caching depedencies

We are going to start to use caching for github actions, instead of the current method of caching

we did it!


Reset (close connection) on periodic reconnect attempts, cleaning up SSL context

This PR causes the RabbitMQ transport to reset on every periodic reconnect attempt, which includes closing the current connection (if any).

Increasing timer delay works as expected:
{"timestamp":"2015-07-27T14:35:21.459168-0700","level":"warn","message":"reconnecting to transport"}
{"timestamp":"2015-07-27T14:35:23.461922-0700","level":"error","message":"[amqp] Detected TCP connection failure"}
{"timestamp":"2015-07-27T14:35:27.463015-0700","level":"error","message":"[amqp] Detected TCP connection failure"}
{"timestamp":"2015-07-27T14:35:33.463843-0700","level":"error","message":"[amqp] Detected TCP connection failure"}
{"timestamp":"2015-07-27T14:35:41.464729-0700","level":"error","message":"[amqp] Detected TCP connection failure"}
{"timestamp":"2015-07-27T14:35:51.465622-0700","level":"error","message":"[amqp] Detected TCP connection failure"}
{"timestamp":"2015-07-27T14:36:03.466616-0700","level":"error","message":"[amqp] Detected TCP connection failure"}
{"timestamp":"2015-07-27T14:36:17.467391-0700","level":"error","message":"[amqp] Detected TCP connection failure"}
{"timestamp":"2015-07-27T14:36:33.468257-0700","level":"error","message":"[amqp] Detected TCP connection failure"}
{"timestamp":"2015-07-27T14:36:51.469070-0700","level":"error","message":"[amqp] Detected TCP connection failure"}
{"timestamp":"2015-07-27T14:37:11.469965-0700","level":"error","message":"[amqp] Detected TCP connection failure"}
{"timestamp":"2015-07-27T14:37:31.470853-0700","level":"error","message":"[amqp] Detected TCP connection failure"}
{"timestamp":"2015-07-27T14:37:51.471471-0700","level":"error","message":"[amqp] Detected TCP connection failure"}
{"timestamp":"2015-07-27T14:38:11.489587-0700","level":"info","message":"reconnected to transport"}


Update Twitter API URL and docs URL

Update Twitter API URL and API docs URL because:

Twitter API has been updated to v1.1
Twitter API docs URL has been changed

LGTM!


Update to work with Lite XL 2.0

The mod-version tag needs to be changed but that's not enough.
When closing the documents the console remains with a broken layout.
We may also consider upgrade the plugin to use "reproc" to create processes.

@Guldoman wondering if you may want and have time to work on this.

I'll check it out.


HD Stone Pattern

Replaces the ugly stone pattern with a modified jagged_stone_tile

This one I'm kind of torn on personally. I'd like to hear what others think. Here's the vanilla texture for reference:

I think the only issue with this texture is it looks very clean

It looks a little bit too much like a floor texture to me I think, like the rock tiles aren't part of the structure.

It looks a little bit too much like a floor texture to me I think, like the rock tiles aren't part of the structure.

yeh maybe we can make one with smaller stones


Does Zvfh imply Zve32f?

This came up in the context of some LLVM ISA string handling discussions https://reviews.llvm.org/D138807.  I haven't actually looked super closely, but a few of us got to chatting while reading the ISA spec and I've managed to confuse myself again.
The spec says
The Zvfh extension requires a standard vector extension with single-precision floating-point support (currently, Zve32f, Zve64f, Zve64d, or V)

which is different than the corresponding Zfh language
The Zfh extension depends on the single-precision floating-point extension, F.

or the D language
The D extension depends on the base single-precision instruction subset F.

That's kind of a subtle difference and I'm not sure how to interpret it.
As some context: We've been assuming Zfh implies F.  Specifically riscv64-unknown-linux-gnu-gcc -march=rv64izfh will generate instructions like fadd.s.  As of GCC 11 we also have D imply F (ie, riscv64-unknown-linux-gnu-gcc -march=rv64id emits fadd.s).
There's two things I'm having trouble interpreting here:

Is there a meaningful difference between requires and depends on, or is it just a prose thing?
Why are multiple extensions listed?

That second one is kind of tripping me up here, as from reading the spec it's not quite clear why multiple  are listed.  The table (reformatted a bit here for text, so sorry if I'm breaking something) says
| Extension | Minimum VLEN | Supported EEW |  FP32 | FP64
| Zve32f    | 32           | 8, 16, 32     |   Y   |  N
| Zve64f    | 64           | 8, 16, 32, 64 |   Y   |  N

which to me seems to indicate that Zve32f is a subset of Zve64f.  In that case I'd expect the Zfh to just say something like The Zvfh extension depends on the standard vector extension for single-precision floating-point support Zve32f. and some additional dependencies between the extensions.
I'm not sure if I'm just reading too much into the wording here, or if there's some difference in behavior that I'm missing?

There are several relations on the set of ISA extensions: containment/inclusion, dependence, requirement, implication, in/compatibility/preclusion. These relations affect the interpretation of the ISA-naming strings as defined in the ISA spec, and the march strings (being) defined in the toolchain-conventions doc. I think these relations need to be clarified more broadly, outside the V-extension spec.
I don't know the answer to the question in the title. My strategy as a developer is to specify both V (or an appropriate Zve*) and Zvfh in the march string. In the case of Zve32f with Zvfh, perhaps the latter implies the former, so my march has some redundancy, but I have bigger fish to fry.

I've seen reference to several relations on the set of ISA extensions: containment/inclusion, dependence/requirement, implication, in/compatibility/preclusion. These relations affect the interpretation of the ISA-naming strings as defined in the ISA spec, and the march strings (being) defined in the toolchain-conventions doc. I think these relations need to be clarified outside the scope of the V-extension spec.

Yep, there's a bunch of different terminology used and it frequently gets confusing which results in these sorts of posts ;)

I don't know the answer to the question in the title. My strategy as a developer is to specify both V (or an appropriate Zve*) and Zvfh in the march string. In the case of Zve32f with Zvfh, perhaps the latter implies the former, so my march has some redundancy, but I have bigger fish to fry.

I definitely agree that the way to deal with this as a user is to just side-step any possible ambiguity by specifying exactly the extensions you want.

The Zfh chapter follows the convention in the unprivileged ISA spec that if extension Foo depends on extension Bar, then Foo implies Bar, and therefore Foo and Foo_Bar are equivalent ISA substrings.  I would support adding explicit text to the unpriv spec that the verb "depend" in this context is an "implies" relation, but that would just be a clarification.
There are cases where an "implies" relation is not possible.  If Foo requires either Bar or Baz, and neither Bar nor Baz is a superset of the other, then Foo can't imply either--you've got to write either Foo_Bar or Foo_Baz (or Foo_Bar_Baz if Bar and Baz are non-conflicting).  In such cases, we should use the verb "requires".
That concern doesn't apply here, though.  Because Zve32f is a subset of each of Zve64f, Zve64d, and V, it is unambiguous to say "Zvfh implies Zve32f".  We can rewrite that sentence without changing the meaning of the spec.  I'll make a PR.
The Zfh chapter is already saying the right thing (that Zfh and F_Zfh are equivalent), and so no change is necessary there.


Updated help output to reflect required args.

Proposed fix for Issue#945
Help output messages should now properly reflect whether args are required.
I didn't find any Options which seemed to take optional arguments; they all look like they require args OR require zero args.
Another pair of eyes would be great to double-check!

Sure thing! I'll do some digging around and get those updated as well.

Okay! Not sure how I missed the man/ directory the first time around haha.
The four man files in that directory have now been updated.

@spark-c Thank you!


Correct Windows MSYS2 paths

Add bin to Windows MSYS2 paths.  I just edited the files for now...

Oops, good catch, thanks for the fix!

FWIW, the dist file is generated by yarn run package

JFYI, code that's part of RubyInstaller2 ('RI2') requires 'devkit', which sets the path for the MSYS2 bin folders.  This is done automatically when installing an extension gem.
But, many repos don't load devkit in their build scripts for CI.
I may have a look at adding it via mkmf.rb, and there's also some mswin issues...

JFYI, code that's part of RubyInstaller2 ('RI2') requires 'devkit', which sets the path for the MSYS2 bin folders. This is done automatically when installing an extension gem.

Right, that's why it worked when trying to install json (and that failed without MSYS2, I checked).

But, many repos don't load devkit in their build scripts for CI.

Seems fine to me for now to add those directories to PATH.

I'm sorry, I was trying to explain my point of view for placing OS specific 'adjustments' in the code here.
Two main issues, the first is packages, and how to install them, especially problems like OpenSSL.  As mentioned, I released msys2-actions for that.
The second is the path problem.  RubyInstaller2 hooks into RubyGems with rubygems/defaults/operating_system.rb, but that doesn't help when using mkmf.rb in CI.  There's also some issues with mswin builds. I may make some changes and do a PR in ruby/ruby.
Thanks for all your work on this.  It will be interesting to see how it moves forward with GitHub, along with the Windows virtual environment MSYS2 issue...


Navbar toggle of bootstrap 4 showing on 1091px instead of showing on 991px on imac chrome. How to fix?

You're likely running into rounding issues; there are other duplicate issues regarding this. No plans to fix it in the core as it's largely a zoom/display issue.


Not working with Angular2/Typescript?

I'm trying to use this plugin in an angular 2 typescript project.
I added the plugin via the tns plugin add command and imported it with var mapbox = require('nativescript-mapbox');  in my component.ts file.
In the angular 2 ngOnInit event i call mapbox.show({        accessToken: '...'      }); but i'm getting the following error:
Uncaught (in promise): TypeError: Cannot read property 'mapboxsdk' of undefined
Any idea how to solve this?

Are u referencing mapboxsdk anywhere ?

I do have the same in plain javascript as well

iOS or Android, and are you doing this before application.start(); perhaps?

I'm doing it in the constructor without issues. Might want to try moving it there, although I tried with ngInit and it worked fine there as well.

I'm having the same issue  on Android only with plain javascript:
JS: Error in mapbox.show: TypeError: Cannot read property 'mapboxsdk' of undefined

uninstall the application from device
remove and add the plugin again
build the application
Run it.

It worked for me, and it works for most of the plugin with such issues.

Got it. I think the problem was that I forgot to add
<service android:name="com.mapbox.mapboxsdk.telemetry.TelemetryService" />

to my AndroidManifest.xml.


Optimize file size for 512px Android favicon

Used ImageAlpha and ImageOptim (through ImageOptim-CLI) to squeeze out all the bytes.
Was:
8.745kb
Now:
4.358kb
Savings:
4.387kb (49.83%)

Sorry, but it's already optimized the best way possible losslessly. Everything else changes color depth etc.

Actually, I just triple checked and it's the only one I missed converting to 8-bit.
That being said, unless I can reproduce the file changes, I cannot merge.

All right, there are 2 more PNGs plus I'm getting better results my way using zopflipng too so I'm gonna close this and make a new PR.
Thanks for bringing it into my attention.

My pleasure! And thanks for introducing me to zopflipng 👍
Sent with GitHawk


slight changes to aabb-segment-sweep1.js

The changes contained in this pull request have proven necessary for aabb-segment-sweep1.js to work properly, especially when used to collide and slide an aabb against multiple segments. Changes are as follow:

the value of the PADDING constant (it's much lower)
the resulting contact delta is set from hit normal rather than from the normalized initial sweep delta

looks good, thanks!


AWS "credentials not set" in test environment when using SSM

Checklist

[ x] Upgrade Jets: Are you using the latest version of Jets? This allows Jets to fix issues fast. There's a jets upgrade command that makes this a simple task. There's also an Upgrading Guide: http://rubyonjets.com/docs/upgrading/
[x ] Reproducibility: Are you reporting a bug others will be able to reproduce and not asking a question. If you're unsure or want to ask a question, do so on https://community.rubyonjets.com
[x ] Code sample: Have you put together a code sample to reproduce the issue and make it available?  Code samples help speed up fixes dramatically. If it's an easily reproducible issue, then code samples are not needed. If you're unsure, please include a code sample.

My Environment

Software
Version

Operating System
MacOS 11.6

Jets
3.0.22

Ruby
2.7.1p83

Expected Behaviour
SSM replacement or access to necessary AWS resources even in test.
Current Behavior
When global .env references SSM variables Jets errors when running tests.
Step-by-step reproduction instructions
# .env
SOMEVAR=SSM # gets expanded to /app-name/jets-env/SOMEVAR

Run a test
bundle exec rspec

An error occurred while loading spec_helper.
Failure/Error: Jets.boot

Aws::Errors::MissingCredentialsError:
  unable to sign request without credentials set

...

# /Users/spencer/.rvm/gems/ruby-2.7.1/gems/aws-sdk-ssm-1.126.0/lib/aws-sdk-ssm/client.rb:6230:in `get_parameter'
# /Users/spencer/.rvm/gems/ruby-2.7.1/gems/jets-3.0.22/lib/jets/dotenv/ssm.rb:43:in `fetch_ssm_value'
# /Users/spencer/.rvm/gems/ruby-2.7.1/gems/jets-3.0.22/lib/jets/dotenv/ssm.rb:15:in `block in interpolate!'
# /Users/spencer/.rvm/gems/ruby-2.7.1/gems/jets-3.0.22/lib/jets/dotenv/ssm.rb:13:in `each'
# /Users/spencer/.rvm/gems/ruby-2.7.1/gems/jets-3.0.22/lib/jets/dotenv/ssm.rb:13:in `map'
# /Users/spencer/.rvm/gems/ruby-2.7.1/gems/jets-3.0.22/lib/jets/dotenv/ssm.rb:13:in `interpolate!'
# /Users/spencer/.rvm/gems/ruby-2.7.1/gems/jets-3.0.22/lib/jets/dotenv.rb:15:in `load!'
# /Users/spencer/.rvm/gems/ruby-2.7.1/gems/jets-3.0.22/lib/jets/dotenv.rb:5:in `load!'
# /Users/spencer/.rvm/gems/ruby-2.7.1/gems/jets-3.0.22/lib/jets/application.rb:75:in `load_default_config'
# /Users/spencer/.rvm/gems/ruby-2.7.1/gems/jets-3.0.22/lib/jets/application.rb:15:in `setup!'
# /Users/spencer/.rvm/gems/ruby-2.7.1/gems/jets-3.0.22/lib/jets/booter.rb:12:in `boot!'
# /Users/spencer/.rvm/gems/ruby-2.7.1/gems/jets-3.0.22/lib/jets/core.rb:18:in `boot'

Solution Suggestion
Currently, Jets::AwsInfo#account returns a fake value if the environment is test. Optionally allow test environment to use AWS account like other environments.
This would allow:

SSM replacement during tests
Access to custom AWS Resources or polymorphic lambda functions needed during testing
Better integration tests across AWS infrastructure

Ideally, I feel like being able to specify which AWS resources should use stub vs real accounts would be nice. However, a simple solution might be to allow override via ENV['JETS_AWS_ACCOUNT'] if present.
lib/jets/aws_info.rb
    def account
      return ENV['JETS_AWS_ACCOUNT'] || '123456789' if Jets.env.test?

      # ensure region set, required for sts.get_caller_identity.account to work
      ENV['AWS_REGION'] ||= region
      begin
        sts.get_caller_identity.account
      rescue Aws::Errors::MissingCredentialsError, Aws::Errors::NoSuchEndpointError, Aws::STS::Errors::InvalidClientTokenId
        puts "INFO: You're missing AWS credentials. Only local services are currently available"
      rescue Seahorse::Client::NetworkingError
        puts "INFO: No internet connection available. Only local services are currently available"
      end
    end
    memoize :account

Commenting out ENV['HOME'] in spec_helper.rb seems lets SSM interpolation happen. It may affect default test behavior, but appears to be an acceptable workaround for my needs.
spec/spec_helper.rb
ENV['JETS_TEST'] = "1"
ENV['JETS_ENV'] ||= "test"
# Ensures aws api never called. Fixture home folder does not contain ~/.aws/credentails
# ENV['HOME'] = "spec/fixtures/home"

bundle exec rspec
SSM Params are available!


Omnia/feature/28 create nova resource flexday

#28

create Nova resource FlexDay
register Nova resource FlexDay in FlexSchedulingServiceProvider

In Model FlexDay line 56
if (date('w', $this->date->getTimestamp()) == 1) { ... }
this gets the day of the week 'w' (0-6) from the column date-timestamp
You may want to take in consideration of timezones, not sure if it is.


delete unnecessary preallocated

There is no need to exceed the memory allocation.
Because more items can be added than you have allocated.
It is misleading.

+1

safe to merge

+1 checked, works locally


Make sure every test pass before publishing new versions

We should use npm's prepublish hook to ensure tests are passing before publishing any new version to the registry.

Done in 2cda780eefb7fdd4a1d6393be2f1aa7b164967dd


check illegal or empty comments

Can we check illegal or empty comments?
thank you.

Hi kaibadash. Can you please clarify your problem or provide some example code?

module Module {
    /**
     * Sample Code
     */
    export class Calc {
        // Sample1: empty comment.
        public mul(n1: number, n2: number): number {
            return n1 * n2;
        }

        /**
         * Sample2: lack of param and return.
         * @param n1 number 1
         */
        public sum(n1: number, n2: number): number {
            return n1 + n2;
        }

        /**
         * Sample3: illegal params.
         * @param hoge1 hoge1
         * @param hoge2 hoge2
         * @param hoge3 hoge3
         * @return result
         */
        public div(n1: number, n2: number): number {
            return n1 / n2;
        }
    }
}

Here is example code.
I want to recieve warnings.

Warnings for mismatched parameters would be excellent (w/option to fail)--so we can fix spelling issues. Maybe TSLint could be used to do this, not sure. Another style-check would be the option to force comments for public members.

I've started to have some code for this feature (nothing committed at the moment)
From my hack and checking Calc sample from @kaibadash, I've got a plugin which can easily detect empty comments. Missing return statement should be too.
Invalid params is a bit more difficult.

My code is here for the moment, https://github.com/fforjan/typedoc/blob/CommentChecker/src/td/output/plugins/CommentCheckerPlugin.ts
And this is the result from @kaibadash sample:
Warning: kaibadash-github.ts(1,14) : Element 'Module' does not have comment.
Warning: kaibadash-github.ts(26,19) :Parameter 'n1' does not have comment.
Warning: kaibadash-github.ts(26,19) : Parameter 'n2' does not have comment.
Warning: kaibadash-github.ts(7,19) : Element 'mul' does not have comment.
Warning: kaibadash-github.ts(15,19) : Parameter 'n2' does not have comment.
I have no idea at the moment why my code is not catching the div related issues

That's a great starting point!
You are currently listening to the renderer, I think it would make more sense to attach your events to the converter. The converter offers the resolve event which will be dispatched for every reflection of the project, see http://typedoc.io/api/classes/td.converter.converter.html#event_resolve.
I've created a basic example for a plugin, see https://github.com/sebastian-lenz/typedoc-plugin-template. As we are in the process of moving to TypeScript 1.5, the template already requires the latest version of TypeScript.
You can create a fork of the template on your user's namespace or if you like to I can create a repository within the TypeDoc namespace and invite you.

I will create a fork of the template and move my code into it ;)
I might need to push for minor changes to your main branch - Logger should be also counting warnings as some of the messages are warnings and my code is counting them for testing purpose - not the best at the moment but I don't think there is any harm in that change :)
I will try to send individual push request for those little modifications so you can accept it (or not!).
BTW, I'm off to Japan for a week (business trip) leaving this Saturday so do not expect activity from me for the next 10 days.


setm does not save properly

When using setm, Costpoint takes a while to switch rows after filling out one row. This causes the second input to be ignored. Also, when saving, the browser closes immediately without waiting for the POST request to finish properly?

Fixed in https://github.com/aaronang/costpoint/commit/040a481d1437833e70a619bb48230ee402095f37.


does not support that?

My device was recognized and added to Alexa devices but when i say "Alexa, turn on mirror" the response i get is "mirror does not support that". Any recommendations?

Hi, whats your mirror device? Have you tested other devices? I asked because it's necessary that the mirror runs to control anything. So if the mirror isn't running it's not possible to control anything. It's with my module impossible to start your mirror.


How to detect on an image using C# language

Thanks for your good source code.
I am a C# engineer. I don't want to use the predict.py file . I know tensorflowsharp but it doesn't have C# api of keras. How to detect on an image using C# language.
What is the best way to solve it? Any suggestions will be greatly appreciated.

Hi @smartyfn. You should extract .pb file using TF and then use it in opencv. Another option is ONNX. Use can extract ONNX and use it.


Sidebar Anchors

This PR adds nested anchors to the Sidebar for easier navigation.
@bebraw @oliverturner had some time to fiddle around with this... it's still a WIP but this should do the trick until we get something more solid in place. I should be able to put some final touches on the styling tomorrow.

This is safe to merge? I'm going to cut a release here in the next hr.


Improve Parkour Available commands

Currently in the Help section everything is built into one massive if / else statement.
The plan is to create a json file containing all commands which will be used to lookup descriptions / permissions when needed.
This will include building the AutoTabCompleter.
The json should be 1-to-1 with all available "/pa cmds" so there are no missing help messages.

This has been achieved in the latest commits.
In resources is a file named parkourCommands.json containing each of the available Parkour commands with details of each.
"/pa help (command)" will lookup the matching entry and display the details.
"/pa cmds (group)" will display a quick usage summary of each of the matching group.
The json is copied into the docs project as part of the build and will be used to display all the available Parkour commands on the website..


Try out Runic formatting

Hopefully doesn't break everything
Will have to update the files again after https://github.com/fredrikekre/Runic.jl/issues/15 is addressed

Try again with<EMAIL_ADDRESS>and Runic master? Probably have to reset the commit first because Runic will not revert some of these changes once they are in the source.


Couple feature requests

First off thank you so much for this library.

Option for outputting the payload during verify

try {
  await JWT.verify(authToken, JWT_TOKEN)
  jwt = await JWT.decode(authToken)
} catch(err) {
  throw {status: 401, message: `Invalid or expired authorization token`}
}

INTO
try {
  jwt = await JWT.verify(authToken, JWT_TOKEN)
} catch(err) {
  throw {status: 401, message: `Invalid or expired authorization token`}
}

Validate exp keys during verify

Support for Buffer secrets

JWT.verify(authToken, Buffer.from(JWT_TOKEN, 'base64'))

Support for es6 import destructuring syntax

import { verify } from '@tsndr/cloudflare-worker-jwt'

If you're feeling really ambitions support verifying complex JWSs like what is being sent back from the Android safetynet attestation. https://developer.android.com/training/safetynet/attestation 😬

I'm glad you like my library and it's really cool to hear that you've been able to save space using it.

I think there's a slight misunderstanding regarding the functionality of the verify method. In my (slightly janky) documentation under verify it says:

Verifies the integrity of the token and returns a boolean value.

So in order to verify the signature, you should do something like this:
try {
    if (!await JWT.verify(authToken, JWT_TOKEN))
        throw
    jwt = await JWT.decode(authToken)
} catch(err) {
    throw {status: 401, message: `Invalid or expired authorization token`}
}

Otherwise unverified payloads will be accepted by your script, which kind of defeats the purpose of having JWTs 😅

I'm not quite sure what you mean by exp keys, can you elaborate?

I'm not sure if this is really necessary, but I'll look into it.

I guess it doesn't hurt to support ES module syntax so I'll put it on my TODO list.

I think this might be beyond the scope of this library, but I'll look into it.

Oof. I'm dumb. Have updated on my end. I'm torn though on if modern programming and especially the way other JWT libraries work if it should be a boolean false or throw. Any other library I've used, especially if it's promisified would throw rather than return false. Something to think about and research maybe.

JWT is a whole standard and exp is a timestamp claim for ensuring a token can be invalidated after exp: {future date in seconds}. Additionally another important one to validate is nbf which ensures a token cannot be used until a specific data. There are others but these two are the most widely used and critically important to verify. Additionally another important claim you should likely be setting if it's not already included in the payload is iat which is just the seconds date the token was generated. This is done by any other JWT library I've used and many folks will be relying on this claim being set. All of these can be set manually but many libraries set iat by default to now. Finally regardless of who sets these, if any time related claims are included they should be considered when asking if a token is valid.

Fair enough. Not a big deal especially if you'd just take a Buffer and string it. A lot of folks however with other libraries will be passing in Buffers so will make swapping out things like jsonwebtoken for your library easier.

🙏

Yeah probably. I have something working but I'm not very well versed in SubtleCrypto syntax so I'm a bit clueless if what I have is actually a secure method for verifying a SafetyNet token 😝

Most of my feedback revolves around existing incumbent libraries and beefing up your feature parity and also ensuring folks aren't thinking your verify method is doing more than the jsonwebtokens verify method is.

Here's the helper I'm using as a wrapper around your library. Could help with any future improvements or feel free to include it in the README or an examples just to guide people into the concept that this is not a method for method replacement for other JWT libraries.
import JWT from '@tsndr/cloudflare-worker-jwt'
import moment from 'moment'

export async function verify(token, secret) {
  const jwt = await JWT.decode(token)

  if (
    jwt?.nbf
    && moment.utc(jwt.nbf, 'X').isAfter()
  ) throw 'Token too early'

  if (
    jwt?.exp
    && moment.utc(jwt.exp, 'X').isBefore()
  ) throw 'Token too late'

  const isValid = await JWT.verify(token, secret)

  if (!isValid)
    throw 'Token is invalid'

  return jwt
}

export async function sign(payload, secret) {
  if (
    payload?.sub
    && !payload?.iat
  ) payload.iat = moment.utc().format('X')

  return JWT.sign(payload, secret)
}

No worries man. This project is only loosely inspired by the jsonwebtoken library and I'm not the biggest fan of using exceptions unless something really breaks to be honest, although this is a personal preference. To me an if is cleaner than a try-catch.

 Obviously, this is something I should absolutely add and a huge oversight on my part. This goes right to the top of my TODO list and I'll try to add it later today.

Maybe I should add it. Options are good, right? 🤔

While I'm already in there, I might add it today as well.

Thank you for the workaround, even though it shouldn't be necessary anymore once I finished my work on2..

All done. Added nbf and exp claims. It will be available from v1.1.0 onwards.

Still on the list ;)

So a really good reason to do a try-catch block vs true-false is that you can denote why the JWT is invalid which is important for delivering helpful feedback back to the user. Knowing if the secret, content, nbf, or exp were the culprit are all important items to denote. So unfortunately the update, while helpful, doesn't remove the need for maintaining my existing helper and initial validation of at least the date based scopes so I can help my users out with what the JWT error actually is. An expired JWT is a very different kind of error to a not before error.

Since we've sorted everything out in discord I'm gonna go ahead and close this issue :)


Call out serialization support in README

Also adds headings to the Deserialization section.

:+1: once the Travis checks are happy.

Ooh, and may be worth referencing #129

:+1: from me as well. I had to dig around to figure this out originally.

@mdmathias I have a [fixes #129] in the body of the second commit message, but we've tagged it from this PR discussion now, too, so this should be very discoverable from there.

Aha, so you do.  Cool beans.  :)


Add bech32 support

Fixes #53

cc @TheBlueMatt

Did you mean Fixes #53 ?

Lol yes, thanks

Blocked on https://github.com/rust-bitcoin/rust-bech32-bitcoin/pull/9 or something similar

Merged rust-bitcoin/rust-bech32-bitcoin#9 and pushed 0.5.0 to Crates.io.

@clarkmoody  oops, I also need https://github.com/rust-bitcoin/rust-bech32-bitcoin/pull/10 :)

@apoelstra 👍

@TheBlueMatt fixed unwrap issue


Which tool/method you used to compute FLOPs?

The file levit.py calculates the number of FLOPs when the network is created, i.e.
https://github.com/facebookresearch/LeViT/blob/9d8eda22b6f6046bedd82d368d4282c82e5530ef/levit.py#L115

Thank you for your quick response!


Add full license text

The MIT license is not valid and the code is unlicensed (thus cannot be used anywhere and by anyone else) unless it contains a copy of the full license text.
When this gets merged, a new version of the library should be released to npm.

@ljharb I believe that isn't legally sufficient. The MIT license itself says that I need to have the copyright notice in any copies. It's a requirement of the license. There would be no copyright notice without the full license and thus render the license invalid:

Copyright (c) Javier Blanco
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

The LICENSE file would need to be published within the NPM package so that the copies of it (such as when I npm install path-parse I'd have the copyright notice in the LICENSE file).

Yes, i understand that’s the text of the license; I’m saying that when actually tested in court, i believe it would hold up easily with or without including the text.

Yes, i understand that’s the text of the license; I’m saying that when actually tested in court, i believe it would hold up easily with or without including the text.

Perhaps, but that could vary a lot country to country in different legal systems. Unfortunately a lot of lawyers will error on the side of caution blocking use of this library for me at least.

I noticed that the maintainer of this library isn't watching it so not getting any notifications. Will just mention @jbgutierrez so he is aware of the PR.


sql: store ballots and blocks in sqlite database

Motivation

related: https://github.com/spacemeshos/go-spacemesh/issues/2918
Changes

Test Plan

TODO

[ ] Explain motivation or link existing issue(s)
[ ] Test changes and document test plan
[ ] Update documentation as needed

DevOps Notes

[x] This PR does not require configuration changes (e.g., environment variables, GitHub secrets, VM resources)
[x] This PR does not affect public APIs
[x] This PR does not rely on a new version of external services (PoET, elasticsearch, etc.)
[x] This PR does not make changes to log messages (which monitoring infrastructure may rely on)

bors try

wow! super happy to move to relational database for data integrity. a couple high level questions

do you observe any performance degradation?
in one of my previous project we ported geth to use sqlite because we need multi-threaded read and leveldb doesn't support that. my recollection was that there was a performance penalty due to the sheer amount of data.

wrt to go version, why not go straight to 17? the tidy bug seems to be fixed at that version.

do you observe any performance degradation?

i observed an improvement with more data, and small degradation when there is very little data.
for example for loading 10 000 layers
benchmark                             old ns/op       new ns/op       delta
BenchmarkRerun/Verifying/10000-16<PHONE_NUMBER>5<PHONE_NUMBER>8     -13.71%

but relative improvement will be much larger than -13.71% when encoding will be replaced, as xdr wastes a lot of time.
with 100, 1000 layers leveldb is slightly faster, but i think this is less relevant.
i actually expected sqlite to be faster, as leveldb data structure is write-optimized. @countvonzero do you remember if database/sql was used in the previous project or a thin wrapper? there are some explanations why database/sql is not a good choice for sqlite, as sqlite is very different from other databases (https://turriate.com/articles/making-sqlite-faster-in-go, https://crawshaw.io/blog/go-and-sqlite).

wrt to go version, why not go straight to 17? the tidy bug seems to be fixed at that version.

@noamnelke was against updating versions if we are not using new features, so i decided not to rush with 1.17.  anyway i think we will want to use 1.18 in near future, as it introduces significant improvements to the language (fuzzing support in stdlib, and generics)

do you remember if database/sql was used in the previous project or a thin wrapper?

yes. we were. we didn't explore other libraries further because core geth devs did not support the change.

bors merge

bors merge


Using Address Instead Of Longitude And Latitude With react-native-maps

I want to provide address to  component instead of latitude and longitude. Is it possible ?

@sami718  You can use Google Geocoding API to convert address string ->  coordinates

Yep, this is out of scope of the library. Use https://github.com/devfd/react-native-geocoder


Update header.client.view.html

Changed navbar to include the layout in the wireframes.

you misspelled assessment


C# ref local and returns are not allowed on async methods

Fixes #1803

@rpetrusha Sure thing!
@svick Look good to you?

@svick ... I'm going to go ahead and shoot this in. If there are additional probs, let's open a new issue to address.

@GuardRex Sorry, yeah, looks good to me.
(In general, I might not always reply quickly, so feel free to not wait on me.)


WIP: PoC to integrate matrix auth with epcon using matrix-synapse-rest-password

This is a PoC to authenticate Matrix users in our epcon website using: https://github.com/ma1uta/matrix-synapse-rest-password-provider
It requires to reconfigure matrix: https://github.com/EuroPython/ep-matrix/blob/ep2021/docs/configuring-playbook-rest-auth.md
diff --git a/inventory/host_vars/matrix.europython.eu/vars.yml b/inventory/host_vars/matrix.europython.eu/vars.yml
index 7f678820..ce6beece 100644
--- a/inventory/host_vars/matrix.europython.eu/vars.yml
+++ b/inventory/host_vars/matrix.europython.eu/vars.yml
@@ -45,3 +45,12 @@ matrix_synapse_container_additional_volumes:
 matrix_synapse_configuration_extension_yaml: |
   third_party_event_rules:
     module: "epmatrix.SuperRulesSet"
+
+
+# rest_auth_endpoint in epcon.
+matrix_synapse_ext_password_provider_rest_auth_enabled: true
+matrix_synapse_ext_password_provider_rest_auth_endpoint: "http://<IP_ADDRESS>:8888"
+matrix_synapse_ext_password_provider_rest_auth_registration_enforce_lowercase: false
+matrix_synapse_ext_password_provider_rest_auth_registration_profile_name_autofill: true
+matrix_synapse_ext_password_provider_rest_auth_login_profile_name_autofill: false
+matrix_synapse_password_config_localdb_enabled: false

Example log in my local from the Matrix server:
epcon_1  | b'{"user": {"id": "@testuser:europython.eu", "password": "tujavie"}}'
epcon_1  |
epcon_1  |
epcon_1  |
epcon_1  |
epcon_1  |
epcon_1  | [08/May/2021 22:40:53] "POST /_matrix-internal/identity/v1/check_credentials/ HTTP/1.1" 200 148

The user was created:

Problems to solve:
Matrix is sending the "username" and we don't have usernames. we use e-mail. I think we have to learn how to config it. It has to be something related to 3PIDs
The URL used by the plugin is not using a slash at the end. Our Django is configured to expect one: https://github.com/ma1uta/matrix-synapse-rest-password-provider/blob/master/rest_auth_provider.py#L50
Of course it's just a test, we have to check that the user has a ticket. and we can maybe do some extra work after (like adding to a channel if the user is a speaker, etc)
I didn't investigate it but we can maybe just create our version of the rest_auth_provider

Maybe just simpler if we implement our own provider --> https://github.com/matrix-org/synapse/blob/master/docs/password_auth_providers.md

Closing because it was just a PoC


Acronym exercise

add's another exercise (interestingly - the bulk of this one was written on an iPad - just hand editting tonel as I didn't have a laptop handy)
There are some doc changes I noticed when I was browsing

This felt like a natural follow on from reverse-string (although the other tracks seemed to follow on from two-fer which feels very weird to me) - in my mind its a similar kind of problem with a bit more complexity?

@macta Looks good. I'm getting more used to Iceberg so I pulled this branch and ran the tests on my image. All green. Merge when your happy.


gcc: if isM68k, look for libgcc_s.so.2 (instead of .so.1)

Description of changes
Closes #243613
Currently verifying the fix.
Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

@ofborg build pkgsCross.m68k.stdenv

pkgsCross.m68k.stdenv on x86_64-linux — Success Details


Unexpected footer text on page

Describe the bug
Unexpected footer text on this page: https://docs.dapr.io/developing-applications/building-blocks/service-invocation/service-invocation-overview/

Steps to reproduce
Steps to reproduce the behavior:

Go to https://docs.dapr.io/developing-applications/building-blocks/service-invocation/service-invocation-overview/
Scroll down to the bottom of the page
See unexpected footer

Expected behavior
The merge pull request... should not exist.

the footer just shows the latest commit that has been pushed into the live branch - I don't think we can control what the latest commit is.


Reserved Keywords

These are objects that are defined by the end2 framework and the tester can decide to use them in a test or not; it is optional. We current have to objects that are created by end2: logger and package_objects. Python has a concept called named kwargs, which means the end user has to define the name of the parameter or it cannot be used.
def func(a, * b):
    pass

func(1, 2)  # This fails because 2nd arg is not named; should be func(1, b=2)

Make these named kwargs optional, by doing an inspect at runtime on the test function and seeing which named kwargs are defined. The ones that are defined will be passed in the func at run time
examples:
def test_1():
   pass  # no test parameters and no reserved word parameters

def test_2(a):
   pass  # 1 test parameter and no reserved word parameters

def test_3(a, * logger, package_object):
   pass  # 1 test parameters and 2 reserved word parameters

def test_4(* logger, package_object):
   pass  # only reserved word parameters

def test_4(* a):
   pass  # will fail because 'a' is not a reserved word

def test_4(**kwargs):
   pass  # will have however many test parameters their are and all of the reserved words

def test_4(logger):
   pass  # will fail because this causes a conflict with the reserved word "logger"; create a new exception around naming conflict

Or possibly do just 1 reserved word. Maybe call it test and this test_object will hold all the reserved end2 words:

logger
package_object
done (a callback to wait for test to be done; for event passed clients)
step (a callback to record the steps taken, takes a descriptive step name, callback and callback args, assertion Callback; this will also save start, end, duration time  of step)

Might add:
"step (a callback to record the steps taken, takes a descriptive step name, callback and callback args, assertion Callback; this will also save start, end, duration time of step)"
in another ticket


Allow multiple labels

Sometimes I find that I want multiple labels attached through the same filter. GMail doesn't support that, but we could issue the same filter repeatedly for each label.

I have now made #27 to support better filter chaining. Feel free to test that branch out - I'll leave the PR open for a while and cut a new release if it doesn't break for you (:

#27 is merged now - I'd still love to hear any feedback you have on it (:

Apologies for the late reply. I'll check out the new branch and .also and will report any issues.

I tried the recent HEAD and the generated filters are the same as the previous version I had used (736078d).


DRDT- css optimization

Visual regression test failed!

Lighthouse test passed! The score of 61 isn't less than the acceptable score of 17 (5 less than the score of 22 on the master branch)
View the full Lighthouse performance report for pull/23 and compare it to the Lighthouse performance report for the master branch

Visual regression test failed!

Lighthouse test passed! The score of 62 isn't less than the acceptable score of 16 (5 less than the score of 21 on the master branch)
View the full Lighthouse performance report for pull/23 and compare it to the Lighthouse performance report for the master branch

Visual regression test failed!

Lighthouse test passed! The score of 60 isn't less than the acceptable score of 16 (5 less than the score of 21 on the master branch)
View the full Lighthouse performance report for pull/23 and compare it to the Lighthouse performance report for the master branch

Visual regression test failed!

Lighthouse test passed! The score of 60 isn't less than the acceptable score of 19 (5 less than the score of 24 on the master branch)
View the full Lighthouse performance report for pull/23 and compare it to the Lighthouse performance report for the master branch


how to use gpt-4-32k

Hey all... I'm trying to use gpt-4-32k with this but can't seem to get it to work. I've adjusted the types/openai.ts with this:
export enum OpenAIModelID {
  ...
  GPT_4_32K = 'gpt-4-32k',
}

export const OpenAIModels: Record<OpenAIModelID, OpenAIModel> = {
  ...
  [OpenAIModelID.GPT_4_32K]: {
    id: OpenAIModelID.GPT_4_32K,
    name: 'GPT-4-32K',
    maxLength: 24000,
    tokenLimit: 26000,
  },
};

I still don't see GPT-4-32K in the ui though and no console errors... what else am I missing?

GPT-4 isn't available in OpenAI's API yet.

You can apply to https://openai.com/waitlist/gpt-4-api. Regards.


Stores cannot be used before lifecycle hooks

Reproduction
Maybe it is my misunderstanding of how stores work and it's by design but currently Vue throws a warning when I use lifecycle hooks and declare them after declaring a store. I would like to declare stores at the beginning of setup() method and then use them within my hooks.
I modified the sandbox to include the warning, if you move the lifecycle hook at the top of setup method it goes away.
https://codesandbox.io/s/pinia-vue-3-demo-forked-85iy9?file=/src/App.vue
Warning thrown:
onBeforeMount is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup(). If you are using async setup(), make sure to register lifecycle hooks before the first await statement.
Is this behavior ok? If so, am I supposed to instantiate store every time inside hooks?
Expected behavior
I would expect using stores with hooks to be without any restrictions.
Actual behavior
I have to declare lifecycle hooks before declaring stores as if they were await calls.

Yeah, this is a limitation that needs to wait for https://github.com/vuejs/rfcs/pull/212. For now, it's necessary to call the useStore function at the end of setup or call pinia.store(useStore) for each store in your main.js file (it will also remvoe the code splitting)

I am wondering whether there is an easier way to call pinia.store for all stores. Currently this feels like the biggest issue for me as moving things around setup function does not make it readable or maintainable. Also not always possible and required multiple instances of pinia stores around one setup function.
In some compiled language I would use reflection to register stuff like that within an assembly.

It's annoying for me too. The easiest workaround is to import all stores in your main.js file and call pinia.store(useStore) to instantiate them.
The RFC will go through a way or another because there is a need for it

Thanks I will end up doing that. Generally is this the same reason why this is happening?
const firstInstance = getCurrentInstance(); //resolves properly
const userEditStore = useSomeStore();
const secondInstance = getCurrentInstance(); //always null

This seems to be the reason why useVuelidate which is internally calling getCurrentInstance is failing. I wanted to bind vuelidate directly to my store state so I will just import all stores at start like you mentioned.

yes, it breaks current instance because it creates one itself to outlive component scoped for the state, but creating it outside of a component, by calling useStore for the first time, doesn't break any current instance 🙂

I use pinia^2.0.13 in vue2, and postinstall npx vue-demi-switch 2, alll ok.
but when i use onBeforeMount or others Lifecycle, how can i resolve it?


No component icon in Simplicity

Invisible enable icon makes it unusable

Is this a default or custom palette?  The "Header" palette color needs to
be semi-transparent to function/display correctly due to how Unity layers
this region.
On Wed, Apr 19, 2017 at 2:10 AM, mic-code<EMAIL_ADDRESS>wrote:

Invisible enable icon makes it unusable
[image: 1]
https://cloud.githubusercontent.com/assets/26720201/25167459/2a2962c0-2512-11e7-827d-192db88cb36e.png
[image: 2]
https://cloud.githubusercontent.com/assets/26720201/25167460/2a2c2ba4-2512-11e7-8cc0-b88353acb417.png
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/zios/unity-themes/issues/23, or mute the thread
https://github.com/notifications/unsubscribe-auth/AEz-rarYb-0eY-xAPdSPk2RC7gOwlP7aks5rxbNsgaJpZM4NBSIz
.

--
~ Brad Smithee

That fixed it, thanks


Uncaught TypeError: Cannot set property 'noise' of undefined

Something's up with the way 'global' is passed into the IIFE? Can't run this lib at all.

There was some problem with my tooling setup + this, not sure what. May be good to make this a more modern module though.

Hey there, any input on how you fixed this?


Not all media query types appear in useMedia hook

Description
Expect an media query values added to the config under mediaQueries appear typed in the useMedia hook
CodeSandbox/Snack link
/
Steps to reproduce

Add values to the mediaQueries section of the gluestack-ui.config.ts file e.g:

  mediaQueries: {
      base: '@media screen and (min-width: 0) and (max-width: 399px)',
      xs: '@media screen and (min-width: 400px) and (max-width: 479px)',
      sm: '@media screen and (min-width: 480px) and (max-width: 767px)',
      md: '@media screen and (min-width: 768px) and (max-width: 991px)',
      lg: '@media screen and (min-width: 992px) and (max-width: 1279px)',
      xl: '@media screen and (min-width: 1280px)',
    },

Use the useMedia hook and try and use the xs value.
You should see a TypeScript error Property 'xs' does not exist on type 'Partial<{ readonly base: boolean; readonly sm: boolean; readonly md: boolean; readonly lg: boolean; readonly xl: boolean; }>'

gluestack-ui Version
<EMAIL_ADDRESS><EMAIL_ADDRESS>Platform

[X] Expo
[ ] React Native CLI
[ ] Next
[X] Web
[X] Android
[X] iOS

Other Platform
No response
Additional Information
No response

@jordmccord Thanks for reporting this. We'll have a look.


Updated HelloWorld Sample Project

Added a constexpr constructor to OnBoardLed() with initializer list
Fixed warning in OnBoardLed::GetStates()
HelloWorld no merely counts in binary on the LEDs.

I was looking at this code to see how you fixed that warning in onboard_led.hpp. I was going to ask you how you got that warning to stop appearing. I think the way you did it was pretty great and I hope it doesn't give us any further problems. However, I saw that the delay is outside the for loop though in your main.cpp. I think you meant to put it inside that for loop.

@Adam-D-Sanchez Can you make a PR with just the warning fix added? That would be great!

Codecov Report

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

@@           Coverage Diff           @@
##           master     #187   +/-   ##
=======================================
  Coverage   81.94%   81.94%
=======================================
  Files          32       32
  Lines        1257     1257
=======================================
  Hits         1030     1030
  Misses        227      227

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 c2c960b...ea61680. Read the comment docs.


ImportError: cannot import name 'horner' from 'chemicals.utils'

Some versions of thermo have an import in the file joback.py:
from chemicals.utils import to num, horner, exp

It appears that this is dependent on a specific version of chemicals.utils since recent versions don't define horner in horner/utils/init.py.  Chemicals, in turn, imports horner from fluids.numerics. I see that the latest version of thermo in master uses fluids.numerics, too. But my requirements are tying me to an earlier version of thermo, which apparently requires an earlier version of chemicals.
Any advice on versions to get this working would be greatly appreciated!

Hi Richard,
The error you experienced should only have happened if incompatible versions of fluids and chemicals were installed. The setup.py file is configured to depend on the correct version of fluids; and pip should follow it although it can be flaky from time to time.
Regardless, I've updated the libraries and the error will go away if you upgrade to fluids 1.0.24 and chemicals 1.1.4 and thermo 0.2.25.
Sincerely,
Caleb

Thanks for indicating the compatible versions. A possibly related problem (in that it wasn't present previously) is that I now have multiple pint unit registries. My app is using thermosteam, thermo, chemical, and fluids. Thermosteam creates its own unit registry (which IMO is incorrect behavior for a library). The other three pkgs do
from pint import _DEFAULT_REGISTRY as u

which also bypasses the application registry. This uses the initial, statically allocated registry, but if the app sets an application registry, these two will be incompatible. I think this would work better:
from pint import application_registry as u

which is an object that stores the registry via set_application_registry() and returns it via get_application_registry().
The pint docs suggest that libraries call pint.get_application_registry() so the app (e.g., my code) can create one and call pint.set_application_registry(x) which will then be used by all the libraries, ensuring that values will all be commensurable.
Maybe there's a better way, but this seems right to me.


Better consistency in courses pt-BR

What does this PR do?
Minor edits to achieve better consistency in courses pt-br (#4579)

Thanks, and welcome to free-programming-books!


error.json + loading.json support

file://loading.json automatically shows up when view first loads (until the real view finishes loading)
file://error.json automatically shows up when the initial view url fails to load

Both file://loading.json and file://error.json are full fledged views and can be customized and used like a normal view, including the use of templates.

I'll give this a try tonight, this will be very useful.

@darenr I just updated the documentation, hope it helps http://docs.jasonette.com/offline/

thanks - I could guess most of it, but what I've seen so far is that I get (randomly) the offline screen even though it's not, if I kill the app it restarts perfectly but that's what I see but so far not been able to narrow it down to any set of circumstances. I'll have to run connected to Xcode to see if there's any logs generated.


ci: add GitHub-based login to web UI

TODO:

[x] Add some kind of policy to say which GitHub users should be allowed to use the CI

Not sure if access policy works with private repositories. Will check once I get approval from test org.


Add missing quotes to docs

Hi! There are a couple quotes missing in the example here for the schema property, breaks the run atleast for me:
"$schema": https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#,
should be
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",

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

ID: f2e1f0e8-ebe5-3946-ea1b-69b56b1fee16
Version Independent ID: e52f76b1-731f-2b2e-9fa0-b6ef39c53b26
Content: [Quickstart: Create a cluster with Terraform

Azure Cosmos DB for MongoDB vCore](https://learn.microsoft.com/en-us/azure/cosmos-db/mongodb/vcore/quickstart-terraform)

Content Source: articles/cosmos-db/mongodb/vcore/quickstart-terraform.md
Service: cosmos-db
Sub-service: mongodb-vcore
GitHub Login: @gahl-levy
Microsoft Alias: gahllevy

@2mas
Thanks for your feedback! We will investigate and update as appropriate.

@2mas
Thanks for reporting this! We have created a PR for this issue and the changes should go live soon.


Question

Thanks for the sample code - I had a question on this
q_table.ix[S, A] += ALPHA * (q_target - q_predict)  # update
Why subtract q_predict from q_target. The q_target should be good enough. I am confused about the use of q_predict in the above formula.
Should something like this not suffice?
q_table.ix[S, A] += ALPHA * (q_target)

Hi, think in the following way may help. If we have a positive value for q target, the q table will also add some value at the end. So the values in q table will somehow explode.

Do you mean large positive values or just positive values. If the values are between 0 to 1, then it may not.
But later I saw that you confirmed to Qdash(S,A) - Q(S,A).
In the very example q_table.ix[S, A] += ALPHA * (q_target) is working well and converges faster. Would be interesting to understand when you could end up in blow out.
Thanks for responding to the question though.

It will show the right behaviours in this example, but it will never coverge. Actrally, no matter the value's sign, any value will give you an unconverged but right behaviour result.
If you keep running the script in your way, you will find your q table will exceed its capacity to hold one values, it may show NaN at the end


Create a database based on a diagram

In this branch we have implemented the following requirements:

[ ] Created a file named schema_based_on_diagram.sql where we implement the database from the diagram.
[ ] Created joined table medical_history_treatment.
[ ] We have added the FK indexes.

Hi @Gambit142,
Thanks for your good feedback and approval.😍😍

Hi @AbdusSattar-70, you are welcome 😄


Making cmake pick up xtlConfig.cmake location automatically on windows

On windows I have to pre-build both xtl, and xtensor (in that order) to get  *Config.cmake files
And then specify xtl_DIR, xtensor_DIR manually
set(
    xtl_DIR
    ${CMAKE_CURRENT_SOURCE_DIR}/xtl/build
    CACHE STRING "" FORCE
)
set(
    xtensor_DIR
    ${CMAKE_CURRENT_SOURCE_DIR}/xtensor/build
    CACHE STRING "" FORCE
)

like so to get both xtensor and xtensor-blas to build.
These method are pretty cumbersome and anti-modern-cmake, is there a better way to do this?

Also specifying cmake_install_prefix, cmake_path_prefix and installing them all to one location also doesn't work because *Config.cmake is buried deep inside specified install folder
[specified prefix path]/lib/cmake/[module name]/[module name]Config.cmake

The tests
https://github.com/QuantStack/xtensor/blob/master/azure-pipelines.yml
https://github.com/QuantStack/xtensor/blob/master/.appveyor.yml
Suggests these can be alleviate by using miniconda. But how to do it in plain windows + cmake?

Is this failure related?
$ cmake -DBUILD_TESTS=ON ..
-- Building for: Visual Studio 15 2017
-- Selecting Windows SDK version 10.0.17763.0 to target Windows 10.0.18362.
-- The C compiler identification is MSVC 19.16.27032.1
-- The CXX compiler identification is MSVC 19.16.27032.1
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Building xtensor v0.20.10
CMake Error at CMakeLists.txt:33 (find_package):
  By not providing "Findxtl.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "xtl", but
  CMake did not find one.

  Could not find a package configuration file provided by "xtl" (requested
  version 0.6.7) with any of the following names:

    xtlConfig.cmake
    xtl-config.cmake

  Add the installation prefix of "xtl" to CMAKE_PREFIX_PATH or set "xtl_DIR"
  to a directory containing one of the above files.  If "xtl" provides a
  separate development package or SDK, be sure it has been installed.

-- Configuring incomplete, errors occurred!
See also "C:/Users/tomtz/Documents/dev/clones/xtensor/build/CMakeFiles/CMakeOutput.log".

@ravenwater you are not specifying an any prefix where dependencies such as xtl ought to be found.

Also specifying cmake_install_prefix, cmake_path_prefix and installing them all to one location also doesn't work because *Config.cmake is buried deep inside specified install folder
[specified prefix path]/lib/cmake/[module name]/[module name]Config.cmake

This is the standard search path for cmake config files and cmake will find these files automatically.

@undefined-behavior you do not need to set these *_DIR variable. Specifying the prefix should suffice.
Xtensor and other projects of the stack are following the standard and latest practices in that regard. I recommend reading up about installation prefix.

Is this failure related?
$ cmake -DBUILD_TESTS=ON ..
-- Building for: Visual Studio 15 2017
-- Selecting Windows SDK version 10.0.17763.0 to target Windows 10.0.18362.
-- The C compiler identification is MSVC 19.16.27032.1
-- The CXX compiler identification is MSVC 19.16.27032.1
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Building xtensor v0.20.10
CMake Error at CMakeLists.txt:33 (find_package):
  By not providing "Findxtl.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "xtl", but
  CMake did not find one.

  Could not find a package configuration file provided by "xtl" (requested
  version 0.6.7) with any of the following names:

    xtlConfig.cmake
    xtl-config.cmake

  Add the installation prefix of "xtl" to CMAKE_PREFIX_PATH or set "xtl_DIR"
  to a directory containing one of the above files.  If "xtl" provides a
  separate development package or SDK, be sure it has been installed.

-- Configuring incomplete, errors occurred!
See also "C:/Users/tomtz/Documents/dev/clones/xtensor/build/CMakeFiles/CMakeOutput.log".

Yes


Separate MKL's FFT from FFTW?

MKL is a rather large dependency and it would be nice to not ship it to the half of the ecosystem that pulls in FFTW in some form (okay, half is an overstatement but it's a pretty large amount). It's not even a default:

Alternatively, the FFTs in Intel's Math Kernel Library (MKL) can be used by running FFTW.set_provider!("mkl"). MKL will be provided through MKL_jll. This change of provider is persistent and has to be done only once, i.e., the package will use MKL when building and updating. Note however that MKL provides only a subset of the functionality provided by FFTW. See Intel's documentation for more information about potential differences or gaps in functionality. In case MKL does not fit the needs (anymore), FFTW.set_provider!("fftw") allows to revert the change of provider.

So why is it shipped by default? I think it really should be a separate package, MKLFFT.jl or something of the sort, so that those who want to use the MKL FFT can add the MKL FFT, and those who want the FFTW one (with a substantially smaller artifact and less issues, i.e. https://github.com/JuliaMath/FFTW.jl/issues/227) can just use that.
If it makes sense to have the developmental locality, then I would propose using a subpackage like how https://github.com/JuliaGPU/KernelAbstractions.jl has subpackages for its CUDAKernels, AMDGPUKernels, etc. https://github.com/JuliaGPU/KernelAbstractions.jl/tree/master/lib. That makes it 4 packages in one git repo, easy to maintain, but you don't have everyone install the Intel GPU drivers by virtue of having KernelAbstractions.jl

So why is it shipped by default?

It isn't. Pkg doesn't have optional packages, so we can't optionally depend on MKL_jll (unless you want to use Requires.jl), but the artifact isn't actually installed unless you opt into using MKL as provider.

Okay interesting, it must've installed on my machine from some experiment long ago and never uninstalled with a ]gc --all.


[BUG] ERC20 deposit to the new minter contract 0x18901044688D3756C35Ed2b36D93e6a5B8e00E68 failed

Possibly due to that the new contract split the deposit  function into two differect functions - Deposit Erc20 and Deposit Eth, while Oisy is still using the single Deposit function call.

Hi @nai2283, we will look into this right away, and will provide a fix as quickly as possible.
I'll get back to you with further infos shortly.

Thanks for the report @nai2283! I can reproduce. I reached out the team to figure out what's happening.

Good catch, it's indeed an inherited issue as we are loading the addresses automatically from the minter.
The cross-chain team is working on a fix 👉 https://forum.dfinity.org/t/cketh-a-canister-issued-ether-twin-token-on-the-ic/22819/227?u=peterparker

The issue was handled as an important incident and was resolved through proposal 134344. I just tried to convert ETH -> ckETH in OISY and everything worked out. Thanks again for reporting the issue.


Token Tracker WIP

This is WIP to track tokens ownership.

Should we close this one in favor of https://github.com/keep-network/keep-core/pull/2350 ?

Closing in favor of https://github.com/keep-network/keep-core/pull/2350


Adsk Contrib - Refactor 3D LUT.

This is part of achieving CLF reading support.

Create new Lut3DOpData class. Keep the old Lut3D struct for some file format loading. Once loaded Lut3D is converted into Lut3DOpData to create Lut3D ops. These will be refactored in a later PR.
Introduce the Array class used by Lut3DOpData. This class will also be used by other types such a Lut1D and Matrix.
Add new CPU renderer (and tests to compare with legacy computation).
Add support for Lut3D inversion.
Add tetrahedral interpolation support on GPU.
Add several unit tests (further tests will be added once CLF will be implemented).

This looks great guys, thanks! I'm excited to try out the LUT inversion in particular.

Create new Lut3DOpData class. Keep the old Lut3D struct for some file format loading. Once loaded Lut3D is converted into Lut3DOpData to create Lut3D ops. These will be refactored in a later PR.

Just curious, any further explanation of the choice to revert back to Lut3D temporarily?

Keeping the legacy Lut3D struct allows us to:

minimized the changes for that PR.
keep the legacy computation functions and compare them to the new ones.
The legacy struct is only used for file loading. When operators are created the structure is converted to Lut3DOpData.

Summarizing from #621, a later PR will change the "invStyle" naming to "inversionQuality", and this will NOT be exposed to config authors; only at the op level, which means it could be used for baking LUTs, but for actual rendering, CPU and GPU are coherent in only supporting the FAST method.
Please if anyone has time, give this a review.


APIGOV-27081 - update elastic/beats

not that I think it'll cause issues, but should we wait to merge this until after we release?


content of validation message is invalid

-[x] in customer page while merging the content of validation message is  wrong
oening was  written instead of opening

[ ] same issue occur while vendor merging

bug solved


fix: add observable context subscribe API

Description
Add context value subscribe observable pattern
Changes

[x] Add observable API to context value

Checklist

[x] This PR has updated documentation
[x] This PR has sufficient testing

Comments

Making getState async vs dispatch

:tada: This PR is included in version 0.5.2 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


FormRequest's withValidator() $validator->after(...) does not seem to be called for each rule

Laravel Version: 5.4.27
PHP Version: PHP 7.1.4-
Database Driver & Version: pgsql 9.5

Description:
I just tried to write a function that will log form validation results on the fly (inside class that extends FormRequest). The following code:
public function withValidator($validator)
{
	$validator->after(function ($validator) {
		foreach($validator->failed() as $field => $rules) {
			foreach(array_keys($rules) as $rule) {
				Log::warning("NO: ".$field.' ['.$rule.']');
			}
		}
		$passed = array_diff(array_keys($validator->getData()), array_keys($validator->failed()));
		foreach($passed as $pass) {
			Log::info("OK: ".$pass);
		}
	});
}

Will execute for each rule only if a 'required' rule is placed at the end.
So for given examples:
  1.  'cat_name'	=> 'numeric|min:2|unique:category|required',
  2.  'cat_name'	=> '|min:2|required|numeric|unique:category',
  3.  'cat_name'	=> 'requirednumeric|min:2|unique:category',

It will print logs for rules:
1. numeric, min, unique, required
2. min, required
3. required

Steps To Reproduce:
Insert this code into some custom request class, and check logs

It's called on every request, also after is called, but looks like you're not passing anything to the validator so only when you pass required it fails.


Create an OrType for T.any(Shape, Shape)

Close #4489
The existing implementation does create OrType for T.any(Shape, NonProxyType) and T.any(Tuple, NonProxyType).
I don't know that there's a reason for not creating an OrType for T.any(Shape, Shape), when the two shapes are not compatible so that's what was done.
Edit: as I'm learning more about the implementation I'm recognizing a set of cases where this PR is incomplete., e.g.
sig { params(x: T.any({a: Integer, b: String}, {a: Numeric, b: Object}, {b: String})).void }
def foo(x)
  T.reveal_type(x) # error: Revealed type: `T.any({a: Numeric, b: Object}, {b: String})`
end

foo({a: 1, b: "too"})
foo({a: 1.5, b: Object.new})
foo({b: "too"})
foo({b: Object.new}) # error: Expected `T.any({a: Integer}, {b: String})` but found `{b: Object}` for argument `x`

Added a third commit that reuses a supertype instead of adding to an OrType.
I think that commit should be split out, as it also handles supertype detection of TupleType, e.g.
sig { params(x: T.any([Integer, String], [Numeric, Object])).void }
def bar(x)
  T.reveal_type(x) # error: Revealed type: `[Numeric, Object])`
end

bar([1, "too"])
bar([1.5, Object.new])
bar([Object.new, "bad"]) # error: Expected `[Numeric, Object]` but found `[Object, String("bad")]` for argument `x`

It also needs to be extended to apply to a tree of OrType/AndType, and I'm just getting to see where this happens. I saw distribute* names, but also undesired behaviour as in #4203 and sorting it out.
Motivation
Issue https://github.com/sorbet/sorbet/issues/4489 T.any(Shape, Shape) degenerates into T::Hash[T.untyped, T.untyped]
Test plan
See included automated tests.
Note: errors reported when running on a large codebase may actually be type problems in the source as the existing implementation doesn't accurately test against declared types, i.e. only checks against T::Hash[T.untyped, T.untyped].

I'm very new to the codebase, and had a question about lub in general. It's how Any/Or gets implemented, and I'm guessing the name (used?) to mean 'least-upper-bound' which if we think of up as super, then would apply for computing underlying types. The computation for the union is more involved than that for the underlying as it reduces less (maintains more granularity). So my question is how can we accurately compute both the union and the underlying type with a recursive, single-return value function? It seems that the historical implementation including the present often favours making the union result match the underlying, rather than preserving distinct union cases.

This PR looks jez-shaped.  I'm not entirely sure of the history behind not constructing OrType for or-ing shapes together.  My guess is that the idea was to prevent types from growing unreasonably large in the presence of many small but different shape types, but that's only a guess.