Proposal: Optimize render tree build & diff with lazy RenderFragments

Summary
I noticed that components that produce a lot of HTML elements tend to become noticeably slow.
You can observe this on the linked page if you click on the button at the bottom a few times : https://unicode-browser.azurewebsites.net/blocks/CJK Unified Ideographs
What you should observe is that at some point, even the spinner takes time to appear.
(Likely because Blazor is re-rendering the whole table for each small update)
Rationale
Today, it seems we are able to separate updates of the DOM by enclosing parts of the application in a component.
However, splitting a page in many small components only for the purpose of rendering optimization tends to be very tedious, and maybe not doable at all in some cases.
The idea here is to provide a way for avoiding to re-render semi-static content everytime the BuildRenderTree is called.
Proposal
I propose that Blazor would provide a mechanism in-between RenderFragment and BlazorComponent.
Let's say that we provide to RenderTreeBuilder a RenderFragment that is tagged with a unique string ID (e.g. a GUID string in some cases).
The API could look like this:
class RenderTreeBuilder
{
    // …
    public void AddLazyContent(int sequence, string id, RenderFragment fragment) { /* … */ }
    // …
}

The idea is that you generate a unique ID so as to let the render tree diff builder to identify your specific fragment (and detect addition/removal of said fragment), but the lazy fragment is only rendered once, when it is newly added in the render tree.
(NB: It may be rendered subsequently if it is removed, then added back later)
Caveats
Developers would have to stay aware that the lazy content will be evaluated outside of the BuildRenderTree method (hence its lazyness), and remember to be careful about closures.
However, it might not be that different from RenderFragments generated outside of the BuildRenderTree method.
Advantages
For Razor codegen
Code generation for cshtml could take advantage of this in cases like these:

            Foo
            Bar

        @foreach (var item in Items)
        {

<EMAIL_ADDRESS>        }

There, the codegen could determine that table > thead, unlike table > tbody, is purely static content and generate a lazy fragment (with a statically generated string ID) that would span the whole thead tag and would only be evaluated once.
Thus, when the developer requests the page to refresh, the whole markup for the table header wouldn't have to be re-generated, and only the parts related to the dynamically-generated tbody would be rebuilt. (That obviously includes the enclosing table element, which contains the tbody, itself containing the dynamic content)
For manually generated components
Developers could use lazy content for parts of the document that are dynamic, at their own risk, thus avoiding the cost of rebuilding the whole render tree when they only need to update a small part of a document.
Going furher
For manually generated components
It might be even better if lazy fragments could be forcefully re-rendered, thus blurring the lines with components even more.
I am not sure how this would be best achieved, however. Maybe by calling a method based on the string ID ?
For components
It would be great if there was a way to indicate that an element should be treated as lazy, even tough it contains fragments of C#. (Maybe something like a blazor-lazy attribute ?)
This would allow more flexibility in the design of pages/components, without having to resort to manually built render trees.

We also have massive performance problems when rendering many components. (not 100% sure, if there's a true causality between performance and component-count)

Here's part of Chrome's debug log of a page rendering 107 Elements with each around 5 sub-elements (none of them are doing CPU-intense work).
Maybe it helps hunting this issue:
WASM: Mono: GC_MINOR: (Nursery full) time 4.30ms, stw 4.40ms promoted 934K major size: 4784K in use: 4021K los size: 2048K in use: 1618K - MonoPlatform.ts:195
[Violation] 'setTimeout' handler took 3109ms - mono.js:1
WASM: BASE(Browse) ENTER: True - ShouldRender @ ComponentBase.cs:102 - MonoPlatform.ts:195
WASM: 107 x Returning cached DbSpecificWithAuth - ExecuteAsync @ CommunicationService.cs:92 - MonoPlatform.ts:195
[Violation] 'click' handler took 7107ms
WASM: Mono: GC_MINOR: (Nursery full) time 1.80ms, stw 1.90ms promoted 452K major size: 7344K in use: 6577K los size: 2048K in use: 1775K - MonoPlatform.ts:195
WASM: 9 x BASE(ElementFrame) ENTER: True - ShouldRender @ ComponentBase.cs:102 - MonoPlatform.ts:195
[Violation] 'setTimeout' handler took 1504ms - mono.js:1
WASM: Mono: GC_MAJOR_SWEEP: major size: 10640K in use: 20719K - MonoPlatform.ts:195
WASM: Mono: GC_MAJOR: (LOS overflow) time 9.10ms, stw 9.20ms los size: 2048K in use: 52K - MonoPlatform.ts:195
WASM: 98 x BASE(ElementFrame) ENTER: True - ShouldRender @ ComponentBase.cs:102 - MonoPlatform.ts:195
[Violation] 'setTimeout' handler took 8870ms - mono.js:1

The json serializer? I've noticed this also.. above a few 100 entries it seems to get slow indeed.. up to a 100 its fast.

@floreseken Yes. Deserializing in non-wasm environment of our test-json takes about 10ms, the same code runs about 120ms in blazor. If you have a lot of components each deserializing a lot of JSON, it really gets ugly.

Yes. But i'm pretty sure there must be room for improvement.. so I'm confident it will be fixed in the future..

I suppose AoT will speed it up a lot.
We can only hope that Blazor leaves the experimental status soon.

Thanks for the suggestion, @GoldenCrystal!
This is a pretty cool idea. As it happens, however, we already have a plan that will hopefully provides the same benefits this offers without the complication of another thing that developers need to learn about:

For large blocks of static HTML, we plan to change the compiler to collapse it all into a single node. So you can have arbitrarily much static HTML without any extra per-element render cost. This will greatly reduce the number of rendering operations per typical component.
For dynamic content where you really want the "render only once" behavior mentioned here, the built in system already exists, which is to factor it out into a separate component. Having to pass params into it forces the developer to be aware of exactly what data constitutes the input for the rendering process, and guarantees that it re-renders when those specific properties change.

However, splitting a page in many small components only for the purpose of rendering optimization tends to be very tedious, and maybe not doable at all in some cases.

To make it easier and faster, the ultimate goal is to have very simple IDE refactorings that let you highlight a block of markup and choose Extract component, just like you can Extract method from a block of C# source.
I'll close this because I think we already have this covered in the plan. Hope that's OK!

@GoldenCrystal I have checked your example app and noticed that it works reasonably fast in Firefox and Edge but it is much slower in Chrome.


Add humidity support to MTS200

Add humidity support to HomeAssistant integration for MTS200 thermostat. Humidity shows up in the Meross app and on the device so if it comes through the integration could we add a humidity entity to support it in HA?
Diagnostic file uploaded.
meross_lan-56d5af3392b093744ba1ff6e001a66a3-Cabin Living Room-e0d7040ec1004cab7bc62cf576b0c619.json
NOTE: It appears this shows up as "humi" in the attached file, and that it is 10x the actual value on the thermostat (I could be wrong here).

Is this supported on all MTS200 thermostats? I own 6 mts200b thermostats but none of them shows the humidity. Maybe a missing firmware update? There‘s none available, though. 🤔

The trace posted by @swerb73 indicates its device is an mts200-us with hw 7.0.0 fw 7.6.7

Appliance.Control.Sensor.Latest is missing unfortunately, although the hw is 7.0.0 and fw is 7.6.10. Maybe this will be added in a future fw update.

Since there are a couple of slightly different mts200 on the market (mts200 vs mts200b - eu vs us - boiler/water vs underfloor heating - don't know which is which...) they might have slightly different hw and so we're not sure if the humidity sensor is there or not..also the fw might still not support it for yours.


Quiz Correct Answer Explanation

Testing Instructions

For each lab, complete the quiz.
Review the correct answers and the associated explanation
Test that all of the explanations are there, and test that the explanation makes sense

[x ] No discrepancies across browsers. Eg. chrome vs safari
[x ] Pages pass W3C Validation for HTML (https://validator.w3.org)
[ x] CSS (https://jigsaw.w3.org/css-validator/)
[x ] Google sign-in is operational
[ x] Accessibility functions
[x ] Pages can scale without distorting page
[ x] No dead links
[x ] Navbar is consistent across the site
[x ] Pages are screen-reader accessible
[x ] Contrast meets standards for accessibility
[x ] Pages are keyboard accessible
[ x] Passes WAVE Evaluation Tool chrome extension

For those that include data, I wonder if we should reference the source. Thoughts?


Use case: Islandora view to show objects that are missing derivatives

Overview of Use Case
Following the ingest of a collection, there isn't a way to determine via the Islandora/Drupal interface (that I'm aware of) whether all expected derivatives have been generated for the objects in that collection.
Title (Goal):
Islandora view to show objects that are missing derivatives
Primary Actor:
Collections Manager
Story:
As a repository manager I want to check whether derivatives have generated for a new ingest to my repository. Especially if the ingest is large and the derivatives don't appear in a standard collection view (it can be easy to tell if thumbnails haven't generated), it isn't feasible for me to check the media page for every object in the collection to determine if OCR, service files, or FITS files, for example, are present where they should be; for paged content, thumbnails are also not necessarily easy to check from a standard collection view. If I want to use the Islandora/Drupal interface rather than a script, I need a view that will allow me to see which objects do not have the necessary/expected derivatives. Ideally I would be able to apply this view for a specific collection, and/or for a specific kind of derivative -- my photograph collection probably won't need OCR, but my newspaper collection will; both will need thumbnails.
This would also be helpful for migration QC.

From the Tech Call: Leaving this open for a while since it's not exactly meeting the use case yet:

it might be good for the filter to be exposed
there's no view available "out of the box" (in Defaults)

Needs follow-up...


Pesto: Consider parallax scrolling the image of a recipe

Open the gallery, go into pesto, then a recipe. Scroll up.
Expected: the recipe image parallax scrolls up as well, under the recipe text.
Actual: the recipe text scrolls over a static image.

cc @mpcomplete

We've hidden Pesto


Prepare or Initialise hook?

I'm using GetIt for dependency injection. Is there a prepare/initialise method I could hook in to configure the DI or should I do this in the function body of each @CloudFunction()?
Thanks

Hey @jimmyff!
I just wanted to share a partial solution to Di in Dart Functions Framework using GetIt. We wrote an extension on the GetIt instance to register a singleton if not already set:
/// Extension on GetIt to register a singleton if not alreay set
extension RegisterIfNotSet on GetIt {
  /// Registers a singleton for type T if it doesn't already exist.
  /// Creates singleton with `create` function.
  Future<T> registerIfNotSet<T extends Object>({
    required FutureOr<T> Function() create,
  }) async {
    if (!GetIt.I.isRegistered<T>()) {
      GetIt.I.registerSingleton<T>(await create());
    }

    return GetIt.I.get<T>();
  }
}

You still have to create a new instance in your function code, but you do so like this:
final secretClient = await GetIt.I.registerIfNotSet<SecretClient>(
    create: () => SecretClient(),
  );

This is super nice for testing because you can mock a dependency using something like mockito (although I prefer mocktail these days), then in your test code register it as a singleton.
final SecretClient secretClient = MockSecretClient();
when(...).thenAnswer(...); // stubing methods as needed
GetIt.I.registerSingleton<SecretClient>(secretClient);

Then when your test code runs the actual function, it won't create a new dependency and instead will use the mocked one! Super handy!
I'd love to know if you have any feedback or similar ideas to this. I'd love if as a community we could build some best practices together around using this package as we're all doing some testing and as it inevitably grows. 😄

Wow this is great, thanks @mtwichel. I will definetly gibe your solution a try. I also use GetIt for the same reasons - it makes testing much easier. I'll have a go implementing this and let you now how I get on.
It would be quite nice to have something in the functions_framework to do this kind of thing, something along the lines of:
@Prepare()
void prepare(RequestContext context) { ... }

I imagine most people would not use it but if you do include it then it gets called right before your @CloudFunction()

Just to throw in my 2c - I think the service locator pattern works really well here where we often want global state to cache expensive objects across function invocations, and lazy initialization to maximise cold start performance.
Personally I prefer to just add a simple Locator class rather than add an extra dependency.
There are of course good reasons not to use global state and I think that should probably be part of the conversation, but I'll just link to a good resource that discusses that:
https://gameprogrammingpatterns.com/service-locator.html#when-to-use-it
Thanks!


OpenCore bootloader not loading

hey, thank you for guide! it work with clover(almost) on a similar hardware, but opencore bootloader not work. when i boot from usb - i see only EFI shell, and even when i manually load BOOT file, it throw error 'OC: nested ReRun is not supported'
ps. i just copy&paste your opencore configs to my EFI partition of usb disk, because hardware very similar, and motherboards identical.

I don't know exactly what the problem is.
This link may help:
https://www.insanelymac.com/forum/topic/338516-opencore-discussion/?page=88


NineSlicePlane in canvas renderer has little gap on it

As you can see here, NineSlicePlane has some little gap on it when using CanvasRenderer. Any work around can fix this issue?

does
roundPixels: true
help when creating the renderer?

It does help when the scale of the mesh is 1.
Problem still exists when scale > 1

Closing as was fixed in 4549


Feature Request: Adding Meta Data to Results

I really like the work you've been doing on this project, as this seems to be the easiest to use Postgres library for Swift so far that also works beautifully on my iOS app.
Now to my request: I'm currently trying to build a new app that would allow the user to type in SQL queries himself on a custom database (so I don't know the schema upfront). The user can use that feature to generate custom reports, charts, ..., and there needs to be a way of naming things and do some introspection of query results.
I do agree with your FAQ saying that one shouldn't use name based indices to retrieve values, but would it be possible to somehow retrieve the name of a column and it's type?
Think about a query like this (that the user will input into a text field of the running app):
SELECT count(*) AS population, born_at
FROM people
GROUP BY born_at

I would like to display the label population in the graph, effectively giving the user the possibility to steer everything about the graph/report with SQL (also finding out that born_at is a date, and therefore correctly displaying it in the UI).
Any hints or directions on this?

This is similar to #12.
This information is available from the server.  Currently PostgresClientKit doesn't ask for it, for the reasons outlined in the FAQ.  Also, fetching this data requires an extra server request & response.
As an enhancement, PostgresClientKit could allow the caller to indicate they wish this metadata, and only perform the extra request in that case.

Some of this metadata is also available in the information_schema, which could be queried without enhancement to PostgresClientKit.  But this would require at least partially parsing the SELECT statement (for example, to extract the table name).

Thank you for the response. Parsing it is quite hard (just thinking of cross table joins, functions and all the fancy stuff a user could potentially do to create a select statement). I changed the app architecture now to require a server side component that does the processing and then publishes the content via graphQL. It's a step back in my opinion as I would have liked to keep the app server free, but it works.

Re-opening because it would be a nice enhancement to implement someday.

Thanks for making PostgresClientKit. Really useful. :-) I'd like to throw my +1 in here, at least for column names. I get that this would be an extra request, and if that's a problem then perhaps I could specify wanting to get metadata back in the statement?

Added a new parameter, retrieveColumnMetadata, to Statement.execute(...), defaulting to false.  If true, result metadata is retrieved and can be accessed through the new columns property of Cursor.  The result metadata includes the name and data type of each column in the results (plus some other stuff).


Improve the Chimoney Website login page design typography

command buttons such as the sign up and textboxes need a uniformity of shapes such as similar sized edges to improve the aesthetics

feedback


Use relative path for dxr.config

Some of the tests already used relative paths; I went ahead and inserted it for the others. Also fixed a typo at the top of the plugin file.

Thanks!


Hello, does the project still exist?

Hello, does the project still exist?

Solution in https://stackoverflow.com/questions/36901803/gettimeofday-not-declared-in-this-scope-cygwin/46685671


Update COUNTER contact email address

The COUNTER contact email address<EMAIL_ADDRESS>is no longer working, it has to be replaced with<EMAIL_ADDRESS>The email address in the COUNTER_SUSHI API Specification also has to be fixed.

Fixed for COUNTER_SUSHI API Specifiction with commit f7fdd5a43f66b4107482b5489432c8540705c23a.


Fix PIN authorization

Problem
Links to this issue https://github.com/twitter/twurl/issues/95.
twurl athorize fails when it attempts to gets to perform pin authorization like so:
/Users/profile/.rvm/gems/ruby-2.3.2/gems/twurl-0.9.3/lib/twurl/oauth_client.rb:138:in `gets': No such file or directory @ rb_sysopen - cvKmdC4vvK98ZXsrBKXYwWYqs2tG5xybebJGct4P76Wix (Errno::ENOENT)
	from /Users/profile/.rvm/gems/ruby-2.3.2/gems/twurl-0.9.3/lib/twurl/oauth_client.rb:138:in `gets'
from /Users/profile/.rvm/gems/ruby-2.3.2/gems/twurl-0.9.3/lib/twurl/oauth_client.rb:138:in `perform_pin_authorize_workflow'
	from /Users/profile/.rvm/gems/ruby-2.3.2/gems/twurl-0.9.3/lib/twurl/oauth_client.rb:125:in `rescue in exchange_credentials_for_access_token'
from /Users/profile/.rvm/gems/ruby-2.3.2/gems/twurl-0.9.3/lib/twurl/oauth_client.rb:122:in `exchange_credentials_for_access_token'
	from /Users/profile/.rvm/gems/ruby-2.3.2/gems/twurl-0.9.3/lib/twurl/authorization_controller.rb:6:in `dispatch'
from /Users/profile/.rvm/gems/ruby-2.3.2/gems/twurl-0.9.3/lib/twurl/abstract_command_controller.rb:7:in `dispatch'
	from /Users/profile/.rvm/gems/ruby-2.3.2/gems/twurl-0.9.3/lib/twurl/cli.rb:38:in `dispatch'
from /Users/profile/.rvm/gems/ruby-2.3.2/gems/twurl-0.9.3/lib/twurl/cli.rb:21:in `run'
	from /Users/profile/.rvm/gems/ruby-2.3.2/gems/twurl-0.9.3/bin/twurl:4:in `<top (required)>'
from /Users/profile/.rvm/gems/ruby-2.3.2/bin/twurl:22:in `load'
	from /Users/profile/.rvm/gems/ruby-2.3.2/bin/twurl:22:in `<main>'
from /Users/profile/.rvm/gems/ruby-2.3.2/bin/ruby_executable_hooks:15:in `eval'
	from /Users/profile/.rvm/gems/ruby-2.3.2/bin/ruby_executable_hooks:15:in `<main>'

After some poking around and googling there was  an incorrect usage of gets in the function that handled the PIN prompt. There is also another similar, but correctly handled prompt in the codebase here:
https://github.com/raethlo/twurl/blob/7eb9a1364cbc9e8ee30a81cf36db384eb363e0af/lib/twurl/cli.rb#L128
Solution
Using STDIN.gets() instead of Kernel.gets() fixes the issue.
Extra:
Needed to fix rake build to work because README.md was incorrectly referenced in gemspec.
Result
The PIN auth prompt will work as expected. And as a side-product rake build was fixed as well.

@smaeda-ks @andypiper what's the status here? I see you have referenced the issue in #113 as being the resolution a while ago but it is still not approved nor reviewed. The link to Travis no longer works (I vaguely recall there were some failed tests on some versions of ruby I didn't have time to look into back when I pushed this PR) so I can't see what the current CI status is. If there are still requirements  to be completed before we can merge is it in maintainers capacity to finish them? It'd be great if we could close this. Thanks

@raethlo Thanks for the follow-up on this. I just submitted another PR that includes CI setting changes and seems it's working well, so I'm hoping to get this merged sometime soon.
https://github.com/twitter/twurl/pull/119

@smaeda-ks neat, I'll watch the PR then and rebase when it gets merged so we can merge this one as well.

@raethlo I've merged https://github.com/twitter/twurl/pull/119 so this should passed the test once you have updated your branch. Could you please merge master into your branch? Thanks

@raethlo Just pushed a commit to your folk repo and confirmed it passed the tests. Merging this PR into master. Thanks again!


TypeError: Cannot read property 'values' of undefined

TypeError: Cannot read property 'values' of undefined
version: material-ui 1.0 beta

Please follow the issue template, then reopen the issue. Thanks.


Consider pinning version for WTForms, Flask-WTF, flask-security

Migrated from GitLab: https://gitlab.com/meltano/meltano/-/issues/3051
Originally created by @aaronsteers on 2021-11-08 18:11:06

@edgarrmondragon - Logged this per your comment below.
@tayloramurphy - FYI.
The following discussion from !2414 should be addressed:

[ ] @aaronsteers started a discussion:  (+1 comment)

@edgarrmondragon - As far as you can tell, was this caused by our release or was it just a version bump that happened to occur at the same time?

Edgar replied:

@aaronsteers I think this was caused by a recent release of WTForms. And the fact that we don't pin Flask-WTF in our fork of flask-security.

View 4 previous comments from the original issue on GitLab

Closing as stale.


"Pending Promise Deallocated" started in 4.4.0

PromiseKit version: 4.4.0

Code that used to work for 1.5 years is now failing to return a callback because a promise gets deallocated somewhere. All was still well in branch swift4-beta1 (which, unfortunately, is no longer available).
If it helps to know, the failing callback is for patchCurrentUser inside reloadAndPatchCurrentUser (pardon my barbarian wrapping of promises in oldskool completion callbacks):
    func reloadUser(_ completion: ((_ success: Bool, _ error: Error?) -> Void)? = nil) {
        userRequest.getUser().then { user -> Void in

            completion?(true, nil)

        }.catch { error in

            if let error = error as? KOError, error.statusCode == 401 {
                self.logOut()
                return
            }

            completion?(false, error)
        }
    }

    func reloadAndPatchCurrentUser(_ completion: ((_ success: Bool, _ error: Error?) -> Void)? = nil) {
        reloadUser { (success, error) in

            if success {

                self.patchCurrentUser { (success, error) in
                    completion?(true, nil)    // We don't care if the "update" fails
                }

            } else {

                completion?(false, error)
            }
        }
    }

    func patchCurrentUser(_ completion: ((_ success: Bool, _ error: Error?) -> Void)? = nil) {

        guard let user = session.user,
              let firstName = user.firstName,
              let lastName = user.lastName,
              let email = user.email else {

                completion?(false, nil)
                return
        }

        self.userRequest.updateUser(
            firstName: firstName,
            lastName: lastName,
            email: email,
            company: user.company).then { user in

                completion?(true, nil)

            }.catch { error in

                completion?(false, error)
        }
    }

Well, now after some pod reinstallations and rebuilds it seems to work again (in 4.4.0).

Yeah, none of this code has changed for years. For serious.

Please check our Troubleshooting guide regarding this warning. It is serious and the fact you saw it probably means that some part of your code does not handle all completion paths. If a path is not handled it will result in non terminating chains that to the user will look like a “task” that never completes.

Thanks, your Troubleshooting guide sure helped me to understand the issue. Deep in the codebase I found this piece that was the culprit:
if let error = error {
    reject(error)
} else if let json = json {
    fulfill(json)
}

(And the real reason why it appeared now was my JSON parser's changed behavior and newly introduced failabilities.)


Support for running on Mac OS

Currently nni only supports running on Linux, but running on Mac is also important.

encountered following error when running nnictl create --config examples/trials/mnist/config.yml
[2018-11-19 00:28:22] DEBUG (mnist_AutoML) {'dropout_rate': 0.562259326513507, 'conv_size': 2, 'hidden_size': 124, 'batch_size': 8, 'learning_rate': 0.01}
[2018-11-19 00:28:22] WARNING (tensorflow) From mnist.py:151: read_data_sets (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.
Instructions for updating:
Please use alternatives such as official/mnist/dataset.py from tensorflow/models.
[2018-11-19 00:28:22] WARNING (tensorflow) From /Users/test/Library/Python/3.6/lib/python/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:260: maybe_download (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.
Instructions for updating:
Please write your own downloading logic.
[2018-11-19 00:28:22] WARNING (tensorflow) From /Users/test/Library/Python/3.6/lib/python/site-packages/tensorflow/contrib/learn/python/learn/datasets/base.py:252: _internal_retry.<locals>.wrap.<locals>.wrapped_fn (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.
Instructions for updating:
Please use urllib or similar directly.
[2018-11-19 00:28:22] ERROR (mnist_AutoML) <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841)>
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 1318, in do_open
    encode_chunked=req.has_header('Transfer-encoding'))
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1239, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1285, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1234, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1026, in _send_output
    self.send(msg)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 964, in send
    self.connect()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1400, in connect
    server_hostname=server_hostname)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 407, in wrap_socket
    _context=self, _session=session)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 814, in __init__
    self.do_handshake()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 1068, in do_handshake
    self._sslobj.do_handshake()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 689, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "mnist.py", line 228, in <module>
    main(params)
  File "mnist.py", line 151, in main
    mnist = input_data.read_data_sets(params['data_dir'], one_hot=True)
  File "/Users/test/Library/Python/3.6/lib/python/site-packages/tensorflow/python/util/deprecation.py", line 306, in new_func
    return func(*args, **kwargs)
  File "/Users/test/Library/Python/3.6/lib/python/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py", line 260, in read_data_sets
    source_url + TRAIN_IMAGES)
  File "/Users/test/Library/Python/3.6/lib/python/site-packages/tensorflow/python/util/deprecation.py", line 306, in new_func
    return func(*args, **kwargs)
  File "/Users/test/Library/Python/3.6/lib/python/site-packages/tensorflow/contrib/learn/python/learn/datasets/base.py", line 252, in maybe_download
    temp_file_name, _ = urlretrieve_with_retry(source_url)
  File "/Users/test/Library/Python/3.6/lib/python/site-packages/tensorflow/python/util/deprecation.py", line 306, in new_func
    return func(*args, **kwargs)
  File "/Users/test/Library/Python/3.6/lib/python/site-packages/tensorflow/contrib/learn/python/learn/datasets/base.py", line 205, in wrapped_fn
    return fn(*args, **kwargs)
  File "/Users/test/Library/Python/3.6/lib/python/site-packages/tensorflow/contrib/learn/python/learn/datasets/base.py", line 233, in urlretrieve_with_retry
    return urllib.request.urlretrieve(url, filename)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 248, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 223, in urlopen
    return opener.open(url, data, timeout)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 526, in open
    response = self._open(req, data)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 544, in _open
    '_open', req)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 504, in _call_chain
    result = func(*args)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 1361, in https_open
    context=self._context, check_hostname=self._check_hostname)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 1320, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841)>

known possible issues for running examples/trials/mnist on Mac:
tensorflow/tensorflow - Mac + Python 3.6.1: Attempting to download mnist data results in CERTIFICATE_VERIFY_FAILED error
fix: run
/Applications/Python\ 3.6/Install\ Certificates.command

supported in https://github.com/Microsoft/nni/releases/tag/v0.4


[doc] clarify meaning of term "currency type"

As it's not a term of art everyone is familiar with.

@swift-ci Please smoke test


[BUG] A lot of Pal disappear in GUI

Thank for your awesome Editor！
But i found a bug，after use this editor(v0.6.1)，then in game the "action_skill_none" skill will appears on most of my Pals.If i use this editor again, it will no longer be able to find those pals.

Same bug. When I first editing the save file, it's OK. After I launch the game I saw the skill "action_skill_none" in Pal's skill list, and when I try to re-edit the same save file, I meet the same bug.

Experiencing the same issue where pals vanish from the in-game palbox, yet those in my party or actively working in my base remain unaffected. Interestingly, the disappeared pals are still visible in the PalWorld Server Tool (link: https://github.com/zaigie/palworld-server-tool).


fix: mixin support for classes without root element

Describe the change
Added a check if the class is annotated as a root element, to know whether or not to generate the buildXmlElement() and toXmlElement() functions in the mixin.
Current behavior
The buildXmlElement() and toXmlElement() functions are generated indiscriminately, preventing the use of the mixin on classes that are not annotated as root elements.
New behavior
The buildXmlElement() and toXmlElement() functions will now be generated only on classes annotated as root elements.
Additional context
Nothing more to say

Thank you for your contribution, I will aim to add some unit tests into the fork to cover this fix, then merge and release.


Creating daily rule error message

I'm having trouble listing daily occurrences with the following code:
require 'ice_cube'

start = Time.local(2011, 10, 21)
schedule = IceCube::Schedule.new(start)
schedule.rrule IceCube::Rule.daily

schedule.occurrences_between(start, Time.local(2012, 12, 1)).each do |o|
  p o
end```

This returns this error message:

/Library/Ruby/Gems/1.8/gems/ice_cube-0.6.14/lib/ice_cube/rules/daily_rule.rb:9:in `in_interval?': private method `to_date' called for Fri Oct 21 00:00:00 -0700 2011:Time (NoMethodError)
	from /Library/Ruby/Gems/1.8/gems/ice_cube-0.6.14/lib/ice_cube/rule_occurrence.rb:61:in `succ'
	from /Library/Ruby/Gems/1.8/gems/ice_cube-0.6.14/lib/ice_cube/rule_occurrence.rb:79:in `find_occurrences'
	from /Library/Ruby/Gems/1.8/gems/ice_cube-0.6.14/lib/ice_cube/rule_occurrence.rb:15:in `between'
	from /Library/Ruby/Gems/1.8/gems/ice_cube-0.6.14/lib/ice_cube/schedule.rb:241:in `occurrences_between'
	from /Library/Ruby/Gems/1.8/gems/ice_cube-0.6.14/lib/ice_cube/schedule.rb:240:in `each'
	from /Library/Ruby/Gems/1.8/gems/ice_cube-0.6.14/lib/ice_cube/schedule.rb:240:in `occurrences_between'
	from cube.rb:8

Are you using Ruby on Rails? if I remember correctly, RoR implements Time#to_date, it's not in the Ruby core.
Try copying their version: http://as.rubyonrails.org/classes/ActiveSupport/CoreExtensions/Time/Conversions.html#M000182
I guess ice_cube should check if Time responds to to_date and implement it's own to_date if it doesn't?

Thanks for the quick response - Ah you're right -- this runs correctly when executed inside of rails -- thanks a lot.

This issue is fixed in the v0.7 branch of ice_cube, which will be merged
into master in the next few days.
It should work currently in Ruby 1.9 also
On Fri, Oct 21, 2011 at 4:17 PM, Alex Kroman <
<EMAIL_ADDRESS>
I'm having trouble listing daily occurrences with the following code:
require 'ice_cube'

start = Time.local(2011, 10, 21)
schedule = IceCube::Schedule.new(start)
schedule.rrule IceCube::Rule.daily

schedule.occurrences_between(start, Time.local(2012, 12, 1)).each do |o|
 p o
end```

This returns this error message:

/Library/Ruby/Gems/1.8/gems/ice_cube-0.6.14/lib/ice_cube/rules/daily_rule.rb:9:in
`in_interval?': private method `to_date' called for Fri Oct 21 00:00:00
-0700 2011:Time (NoMethodError)
       from
/Library/Ruby/Gems/1.8/gems/ice_cube-0.6.14/lib/ice_cube/rule_occurrence.rb:61:in
`succ'
       from
/Library/Ruby/Gems/1.8/gems/ice_cube-0.6.14/lib/ice_cube/rule_occurrence.rb:79:in
`find_occurrences'
       from
/Library/Ruby/Gems/1.8/gems/ice_cube-0.6.14/lib/ice_cube/rule_occurrence.rb:15:in
`between'
       from
/Library/Ruby/Gems/1.8/gems/ice_cube-0.6.14/lib/ice_cube/schedule.rb:241:in
`occurrences_between'
       from
/Library/Ruby/Gems/1.8/gems/ice_cube-0.6.14/lib/ice_cube/schedule.rb:240:in
`each'
       from
/Library/Ruby/Gems/1.8/gems/ice_cube-0.6.14/lib/ice_cube/schedule.rb:240:in
`occurrences_between'
       from cube.rb:8

--
Reply to this email directly or view it on GitHub:
https://github.com/seejohnrun/ice_cube/issues/37


Divisional Tracking Due Dates - Notifications

As a Ministry user
I want to know when my division's responses are due with a notification
so that I know when I need to follow up with them

Assumptions & Scope
This is a user feedback related story - Ministry coordinators may find value in receiving notifications when certain stages of divisional tracking approach their due dates.
Divisional tracking notifications will only be sent to the Ministry coordinators assigned to a request, as either a watcher or primary assignee.
What is IN scope?
Notifications - specifically for divisional tracking stages that have a due date
Acceptance Criteria
Scenario 1: Gathering Records - Due Tomorrow

GIVEN a Ministry user is assigned to a request
AND the request has a division in the gathering records stage
WHEN the date is one business day prior to the saved due date for that stage
THEN all assigned Ministry users shall receive a notification with the message "[Division] records are due tomorrow"

Scenario 2: Gathering Records - Due Today

GIVEN a Ministry user is assigned to a request
AND the request has a division in the gathering records stage
WHEN the date is the same as the saved due date for that stage
THEN all assigned Ministry users shall receive a notification with the message "[Division] records are due today"

Scenario 3: Pending Sign-Off - Due Tomorrow

GIVEN a Ministry user is assigned to a request
AND the request has a division in the pending sign-off stage
WHEN the date is one business day prior to the saved due date for that stage
THEN all assigned Ministry users shall receive a notification with the message "[Division] sign off is due tomorrow"

Scenario 4: Pending Sign-Off - Due Today

GIVEN a Ministry user is assigned to a request
AND the request has a division in the pending sign-off stage
WHEN the date is one business day prior to the saved due date for that stage
THEN all assigned Ministry users shall receive a notification with the message "[Division] sign off is due today"

Scenario 3: Awaiting Harms - Due Tomorrow

GIVEN a Ministry user is assigned to a request
AND the request has a division in the awaiting stage
WHEN the date is one business day prior to the saved due date for that stage
THEN all assigned Ministry users shall receive a notification with the message "[Division] harms are due tomorrow"

Scenario 4: Awaiting Harms - Due Today

GIVEN a Ministry user is assigned to a request
AND the request has a division in the Awaiting Harms stage
WHEN the date is one business day prior to the saved due date for that stage
THEN all assigned Ministry users shall receive a notification with the message "[Division] harms are due today"

Dependencies? What is the impact of this dependency? (If so, link dependency in the ticket, make it visible in a team´s backlog)
Validation Rules? (If yes, list here)
Design
@xxx - please link the Design here
Definition of Ready

[ ] Is there a well articulated User Story?
[ ] Is there Acceptance Criteria that covers all scenarios (happy/sad paths)?
[ ] If there is a user interface, is there a design?
[ ] Does the user story need user research/validation?
[ ] Does this User Story needs stakeholder approval?
[ ] Design / Solution accepted by Product Owner
[ ] Is this user story small enough to be completed in a Sprint? Should it be split?
[ ] Are the dependencies known/ understood? (technical, business, regulatory/policy)
[ ] Has the story been estimated?

Definition of Done

[ ] Passes developer unit tests
[ ] Passes peer code review
[ ] If there's a user interface, passes UX assurance
[ ] Passes QA of Acceptance Criteria with verification in Dev and Test
[ ] Confirm Test cases built and succeeding
[ ] No regression test failures
[ ] Test coverage acceptable by Product Owner
[ ] Ticket ready to be merged to master or story branch
[ ] Developer to list Config changes/ Update documents and designs
[ ] Can be demoed in Sprint Review
[ ] Tagged as part of a Release
[ ] Feature flagged if required
[ ] Change Management activities done?

story per discussion with educ today re: Divisional tracking due date notifications. Leaving as incomplete AC, as I'd like to check with ECON sector team/Carrie to confirm how often they want reminders (ie: just day before and day of sufficient?)
Though I think we could still refine this, since at most we'd just be updating a value or adding another scenario if a third reminder is needed.
cc: @lmullane @KaraBeach @arielleandrews @JHarrietha-AOT

Heard back from ECON and EDUC - they are good with reminders day of and day before

@m-prodan We send reminder notifications on the day of expiry and the previous business day. Could you please confirm this as the "day before" scenario ?

Hi @sumathi-thirumani-aot - yes, that is correct, this would be the day before scenario.

@m-prodan  At what stage of FOI Request,  do we need to send notifications ?
References:

CFR due reminder is send only on Call For Records state
Legislative due reminder is sent on all stages except (Unopened, Intake in Progress, Redirect, On Hold, Closed, Archived)

I don't think it needs to be tied to state - the condition should be the divisional stage itself - for example:
Divisional stage = Gathering Records with a Due Date assigned = notification on
Divisional stage = Records Received = notification off
Basically any of our divisional stages that have a due date would trigger notification, I think I covered all the possibilities with the scenarios. (Gathering Records, Pending Sign-Off, and Awaiting Harms)

Migration script associated with this task "d1503b142889_.py"

Per discussion at standup - notifications will not trigger when in intake in progress, unopened, on hold and closed

As per discussion with @m-prodan ; the state condition of legislative due date will hold good for division due date.

For testing - EDU-2022-22221 has all scenarios staged with due dates on Oct 24th, and 25th

all scenarios passed - closing ticket.


typo fix - LCD_JDI_BLUE0_PIN

https://github.com/dialog-semiconductor/BLE_SDK10_DA1470x_examples/blob/77b439232b1d2a5f92e58bf9080e097484bafeec/features/watch_demo_lvgl/config/peripheral_setup.h#L274
Should be LCD_JDI_BLUE1_PIN instead

Most likely yes.

@blauret this demo was provided by the APPs team.  I've never tested that demo. Nevertheless, that should be a typo and should be fixed.


Add rubocop to CircleCI builds

Enforce style guide programmatically
We should also add some "before you submit a PR..." info to the README. e.g.

Run tests: bundle exec rails spec (or is bundle exec rake still preferred?)
Run linting: bundle exec rubocop
Anything else?

Hi! I can pick this up whilst I'm waiting on input for issue 65 🙂
Ha, never knew there was a chore tag on Github!

Can create custom labels :) do you need anything from us to be able to set
this up, or are you able to test it locally?
On Sat, Apr 11, 2020 at 4:36 AM Shen<EMAIL_ADDRESS>wrote:

Hi! I can pick this up whilst I'm waiting on input for issue 65
https://github.com/helpwithcovid/covid-volunteers/issues/65 🙂
Ha, never knew there was a chore tag on Github!
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/helpwithcovid/covid-volunteers/issues/143#issuecomment-612367478,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAAO35BETWLKQPFDYHZDTLRMATXZANCNFSM4MFRWEMA
.

--
@jamiew https://twitter.com/jamiew | https://jamiedubs.com
https://www.jamiedubs.com/

Ah, in that case I didn't know cutom labels existed :)
I've added rubocop to the circleci config and updated the readme. I've use the circleci CLI tool to check that the new config is still valid. Other than that, I don't think there is much more I can do to test this locally, right? ie the only way to see if this works as expected is to merge with master and see if it passes with no errorso on CircleCI..?

@shen-sat fixed this one, ty!

With #156


Verifying multiple calls with check function logs assertion error

Hi,
I'dont now if this is a bug. I'm trying to verify two arguments by using check {}. Of course I can use an argument capture, but I'm expecting this should working too.
import com.nhaarman.mockitokotlin2.check
import com.nhaarman.mockitokotlin2.mock
import com.nhaarman.mockitokotlin2.verify
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.mockito.internal.verification.Times

class Tweet(val id: Int, val text: String)

interface TweetRepository {
    fun persist(tweet: Tweet)
}

class TweetTest {

    @Test
    internal fun `verify multiple perists`() {
        val repositoryMock = mock<TweetRepository>()

        repositoryMock.persist(Tweet(1, "first tweet"))
        repositoryMock.persist(Tweet(2, "second tweet"))

        verify(repositoryMock, Times(1)).persist(check {
            assertThat(it.id).isEqualTo(1)
            assertThat(it.text).isEqualTo("first tweet")
        })
        verify(repositoryMock, Times(1)).persist(check {
            assertThat(it.id).isEqualTo(2)
            assertThat(it.text).isEqualTo("second tweet")
        })
    }
}

is green but logs assertion errors
org.opentest4j.AssertionFailedError:
Expecting:
 <2>
to be equal to:
 <1>
but was not.
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

Context

mockito-kotlin version: 2.2.0
OS: OSX
Kotlin version: 1.3.60
JDK version: 11
JUnit version: 5.5.2
AssertJ version: 3.13.2
Type of test: unit test

You should take a look at this.

Hmm, but I want to verify id and text of Tweet.kt.

Use Mockito.eq(). I believe it's mentioned in the issue I referred to.

Maybe you can refactor my code above? argThat only verifies one attribute at all.

I could, but I'm not going to.

Ok :/ I did not see the trick.

Then create your own TweetMatcher


fix #512

this is a simple syntax error when using arrow function
you need to use return when using {} in arrow function
see http://es6.ruanyifeng.com/#docs/function#箭头函数 for syntax reference

yes， you are right, thanks for your request, please see my latest pr: https://github.com/Chatie/wechaty/pull/514
It can works well now.

@FlyingBlazer Good catch!
Thank you for pointing this out and make the PR.


Rendering process stops for high number of geometries

Hi all,
I am trying to render an image with around 65000 cylinders and 20000 spheres and I noticed that the .exe stops right before the renderer is called to render a single frame . However, if I reduce the total number of primitives to around 15000 the .exe runs until the end and I get the .ppm file with all the 15000 gometries.
In the documentation https://www.ospray.org/documentation.html#geometries it is stated that the maximum number of primitives is 2^32, and because of that I was not expecting the aforementioned problem. Is there another threshold parameter that has to be modified to work with a higher number of rendered geometries?

Indeed, this should work. I tried successfully with ospExamples.exe choosing the random_spheres scene with 100k spheres (by using below patch)
diff --git a/apps/common/ospray_testing/builders/RandomSpheres.cpp b/apps/common/ospray_testing/builders/RandomSpheres.cpp
index 7de355161..4414bcac4 100644
--- a/apps/common/ospray_testing/builders/RandomSpheres.cpp
+++ b/apps/common/ospray_testing/builders/RandomSpheres.cpp
@@ -33,7 +33,7 @@ void Spheres::commit()
 {
   Builder::commit();

-  numSpheres = getParam<int>("numSpheres", 100);
+  numSpheres = getParam<int>("numSpheres", 100000);
 }

 cpp::Group Spheres::buildGroup() const
@@ -46,7 +46,7 @@ cpp::Group Spheres::buildGroup() const
   std::mt19937 gen(randomSeed);

   utility::uniform_real_distribution<float> centerDistribution(-1.f, 1.f);
-  utility::uniform_real_distribution<float> radiusDistribution(0.05f, 0.15f);
+  utility::uniform_real_distribution<float> radiusDistribution(0.0005f, 0.015f);
   utility::uniform_real_distribution<float> colorDistribution(0.5f, 1.f);

   // populate the spheres

Some questions:

The cylinders and spheres are each a single geometry (with thousands of primitives)?
With "stop" you mean crashing? Or execution halts?
If crashing, do you have a debugger stack trace where it is happening?
Is is possible to get a reproducer, or see the relevant snippets of code setting of the Geoemtries / World?


Symbol Swapper Library not Working

There is a problem since ver. 0.15, Symbol Swapper Library is not working.
I don't use local symbol, all profile is link to library, when i want to swap from A library to B library, it can't work. But i try Swap Selection, it can work.
I like this plugin very much and use it very often, wish you can fix this problem.
Thank you. #

Me too 😢

插眼等更……

@HsiehYulin, @Luciea, @uwings thank you for bringing this to my attention, sorry you are having issues with the plugin. I just published an update which might fix the issue, could you please download and try version 0.17?

＠sonburn thank you for repairing this problem, i already update to version 0.17 and it works, it means a lot to me!!


Not Persisting Data

I cannot get the deconz container to store the data where specified. It will always create a new volume regardless of whether it's mapped to a volume or a directory. Here is my config. Hoping someone can point me in the correct direction.
https://pastebin.com/HC1b3GsH
version: '2' services:     zigbee2mqtt:       container_name: deconz       image: marthoc/deconz       restart: always       environment:         - PUID = 1001         - PGID = 1001          - TZ=America/Chicago         - DECONZ_VNC_MODE=1         - DECONZ_VNC_PORT=5900         - DECONZ_VNC_PASSWORD=******       volumes:         - /apps/deconz:/root/.local/share/dresden-elektronik/deCONZ \       devices:         - /dev/ttyACM0       network_mode: host

remove the \ at the end of your volumes mount.
It should look like this:
volumes:
    - /apps/deconz:/root/.local/share/dresden-elektronik/deCONZ

Embarrassing! I can't believe I missed that. I thought I was going insane. Thanks for the help.


JSfy paths.coffee

Appreciate any kind of testing against this.

Are we doing decaffeination? I didn't get any answer here: https://github.com/JunoLab/atom-julia-client/issues/715 or in Slack group.


Dev/fix-daily-release

Should fix an issue where the auto-tally causes empty bundle releases.
Also updates pre-commit which hadn't been done yet it seemed.  I kept everything the same for now, with notes for future linting of things to fix in the new .pylintrc disable list.

The critical changes are in adabot/circuitpython_bundle.py

Fixes https://github.com/adafruit/Adafruit_CircuitPython_Bundle/issues/432


Documentation & Spellcheck - Also fix issue #4

Clean up and overhaul the README.md file a bit.
Add another example
Spell check everything
Fix issue #4 (out of date documentation)

Also, could you please update the NPM module? It's still running 0.10.0


Cannot import name 'ReflectionDefaults'

What would you like to share or ask?
while running "from taipy import Gui" I am getting the below error,
ImportError: cannot import name 'ReflectionDefaults' from 'sqlalchemy.engine.reflection'
Can anyone please help me sort this out?
Code of Conduct

[X] I have checked the existing issues.
[X] I am willing to work on this issue (optional)

Did you create an entirely new environment for the project? Do you have sqlalchemy on your machine?

Do you still have the issue?

No response from user; I am closing the issue


ipython>=6.1.0 not available for python 2

The requirements for ipython were increased to
ipython>=6.1.0
which is not available for python 2.
I think ipython>=5.5.0 works with python 2.
Personally, I migrated all my code to python 3. And the notebooks and spyder are also running python 3.
Perhaps we should drop python 2 support and focus on python 3.

If everything works with Python 3 then I'm ok moving to Python 3.
Herbert
On Mon, Sep 18, 2017 at 9:34 AM Matthias König<EMAIL_ADDRESS>wrote:

The requirements for ipython were increased to
ipython>=6.1.0
which is not available for python 2.
I think ipython>=5.5.0 works with python 2.
Personally, I migrated all my code to python 3. And the notebooks and
spyder are also running python 3.
Perhaps we should drop python 2 support and focus on python 3.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/sys-bio/tellurium/issues/221, or mute the thread
https://github.com/notifications/unsubscribe-auth/ABAZDu6Dhkr0xiANEZrot894PDVV2pNlks5sjptHgaJpZM4PbL1P
.

Is ipython>=6.1.0 strictly necessary? I can start cooking up Python 3.6 version of Spyder environment.

I just stuck it in there because it happened to be the version I had installed. I'm okay with downgrading it to 5.x.y.

Regardless, I will probably start transitioning everything to Python 3 since it seems like the end of Python 2 is nigh.

I think we should still try to support 2 & 3 in the tellurium source unless there is a compelling reason not to. I've already built all the dependencies for 2 & 3.

So just downgrade ipython to 5.5.0 if this is working for you.
I don't need any features from 6.1.0
On Mon, Sep 18, 2017 at 7:50 PM, Kyle Medley<EMAIL_ADDRESS>wrote:

I think we should still try to support 2 & 3 in the tellurium source
unless there is a compelling reason not to. I've already built all the
dependencies for 2 & 3.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/sys-bio/tellurium/issues/221#issuecomment-330303426,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AA29upDrh5rz--hfhi1VfGKsmD1ZWi8Yks5sjq2CgaJpZM4PbL1P
.

--
Dr. Matthias König
Junior Group Leader LiSyM - Systems Medicine of the Liver
Humboldt-University Berlin, Institute of Biology, Institute for Theoretical
Biology
https://www.livermetabolism.com
<EMAIL_ADDRESS>Tel: +49 30 20938450
Tel: +49<PHONE_NUMBER>0

I would say relax it even more as long as it does not break anything.


Enhanced search on sub-metadata (similar to field permissions)

When searching field permissions, we only search inside the field full name "MyField__c" rather than the full qualification "MyObject.MyField__c" - we should extend this to other metadata types such as Record Type Visibilities.

Closing as not developing future features.


Vec3d.ORIGIN should be called ZERO

While it's the origin in some contexts, in others it does not make sense. For instance, it's used as a fallback when attempting to normalise a vector that is very close to zero.
On the other hand, even when it's the origin, it still makes sense to call it the zero vector.
I'm working on a PR to map Vec3d and possibly some other things but renaming ORIGIN will have a lot of side effects which I do not want happening in the PR, hence this issue.

Sure.

Closing issue since it's now part of #88?

Yeap.


Ensure EF6 Tools continue to work SxS with different releases of VS2017

The 15.0 release of VS (VS2017) is already out. At some stage there will be a 15.1 release. This issue is so we do the requisite SxS testing to ensure we continue to work.
In particular EF6 tools utilizes a Singleton MSI to place the EF packages that NuGet uses for its local cache and to insert the registry key which points to that cache. We may need to investigate with the NuGet team to allow multiple caches and multiple registry keys, one for each installed version of VS.
Note for investigator: see email from Eric Knox re "Side-by-side expectations with Dev15 Preview".

Blocked awaiting input from NuGet on how they search for the registry key we install.

We don't believe we have anything else to do here. This MSI is a singleton by-design. Now that the reference counting is correct it should be fine.


Prep for release

@glebm I've added a RELEASE-CHECKLIST.md (based on Thredded's but cut down) and I figure this ought to be minor level as it brings in new functionality (though we're pre v1 so anything goes in semver officially).
Will wait for you before releasing!


Upgrade to pydantic v2 APIs

Move away from the pydantic v1 deprecated apis.

Codecov Report
Attention: 1 lines in your changes are missing coverage. Please review.

Comparison is base (82b660e) 93.17% compared to head (b7230c0) 93.20%.
Report is 6 commits behind head on main.

Files
Patch %
Lines

flux_local/manifest.py
96.00%
1 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #464      +/-   ##
==========================================
+ Coverage   93.17%   93.20%   +0.02%
==========================================
  Files          19       19
  Lines        1803     1825      +22
==========================================
+ Hits         1680     1701      +21
- Misses        123      124       +1

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


Generate Tenderly simulation on failed settlement simulations

This issue captures the work to generate a Tenderly simulation on failed settlement simulations.
Luckily, its actually quite easy! Tenderly allows configuring a simulation with URL parameters. For example (note escaped newlines with \ for readability):
https://dashboard.tenderly.co/${organization}/${project}/simulator/new?\
block=8306882&\
blockIndex=0&\
from=0x0e1401b7037163764b161fd989bdcf224bb5dcc4&\
gas=8000000&\
gasPrice=0&\
value=0&\
contractAddress=0x4e608b7da83f8e9213f554bdaa77c72e125529d0&\
contractFunction=0x7caf7af0&\
functionInputs=%5B%220x6d7f0754ffeb405d23c51ce938289d4835be3b14%22%2C%220xd9ba894e0097f8cc2bbc9d24d308b98e36dc6d02%22%5D&\
functionInputs=%5B%2262688440296451781%22%2C%222500007499%22%5D&\
functionInputs=0x0100000000000000000000000000000000000000000000000eda9474d6355960d0ef0000000000000000000000000000000000000000000000000000001053ab84d3605ddeeaf6a005bd000000000000000000000000000000000000000000000000a1a1d4559a86e00000000000000000000000000000000000000000000000000eda9474d6355960d0ef00009c2a60b3405de291ca8826ec7e9cd44fdb74c4f8c6324f28801544fa858e2d8c80540fc186c12c4f9d1c1b838e9be39c0038b704acd0838870fca7e5363f8be1d7&\
functionInputs=0x7a250d5630b4cf539739df2c5dacb4c659f2488d00010438ed173900000000000000000000000000000000000000000000000000deb6cde764aec50000000000000000000000000000000000000000000000000000000094dcf0a300000000000000000000000000000000000000000000000000000000000000a00000000000000000000000004e608b7da83f8e9213f554bdaa77c72e125529d0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000d9ba894e0097f8cc2bbc9d24d308b98e36dc6d020000000000000000000000006d7f0754ffeb405d23c51ce938289d4835be3b14&\
functionInputs=0x&\
network=4

Would open a new simulation with the specified parameters for the specified organization or account and project name (note that this requires first "adding" the settlement contract - which can be done by address as its already verified on Etherscan).
So a log message with these populated parameters would be enough! Easy! We just need a Gnosis org and a GPv2 project and this should be fairly trivial to add.

For some super awesome wizardry :mage_man: click the following link
note: You have to have been added to the Gnosis Protocol v2 Tenderly organization

Follow up/Clean Up tasks

org and project name should likely be configurable
BlockNumber could be fetched in a batch request together with the simulation call to avoid off by one race conditions (where simulation might have happened on a block that is wath get_block_number returns now.
In this case network ID could also be passed in from above making the get_tenderly_link method infallible.


Added functions/tests for geometric nonlinearity and modified functions/tests elastic dry friction

New files added:

general_poly_stiffness.py
test_general_poly_stiffness.py

Verified:

Tests all pass
Elastic Dry Friction Example Still Runs Fine

Changes look good so far. It looks like there are a few comments still to be addressed on tests/nlforces/test_unilateral_spring.py and tests/jax/test_jax_2d_eldry.py

Changes all look good now.
All tests have been verified to pass still with these changes.


Add functionality for predicting images given rotational optical flow

Given some optical flow w and camera intrinsic parameters, generate the rotational optical flow and use it for predicting the image at some point in time.
Use Lax-Wendroff scheme for numerical solution of the prediction.

Enhancement completed.


Update storage-blob-soft-delete.md

Added an FAQ that soft delete is not supported for classic storage account. I don't find the option under blob properties of classic storage accounts.

@AngshumanNayakMSFT : Thanks for your contribution! The author, @MichaelHauss, has been notified to review your proposed change.

Soft delete is available for classic storage. The portal functionality is not there yet, but will be very soon.

When I say very soon, I mean on the order of days. I'd rather not make a doc change. I'll follow up over email with the portal team. If it'll be later than EOW we can make the change.

Closed as per Michael.


Crash report - runtime error: invalid memory address or nil pointer dereference

Error (runtime.errorString): runtime error: invalid memory address or nil pointer dereference
Stack:
goroutine 1 [running]:
github.com/github/hub/github.(*Project).WebURL(0x0, 0x0, 0x0, 0x0, 0x0, 0xc20800bf20, 0x13, 0x0, 0x0)
	/tmp/go/src/github.com/github/hub/github/project.go:30 +0x91f
github.com/github/hub/commands.compare(0x68aa20, 0xc20805a090)
	/tmp/go/src/github.com/github/hub/commands/compare.go:78 +0x264
github.com/github/hub/commands.(*Command).Call(0x68aa20, 0xc20805a090, 0x0, 0x0)
	/tmp/go/src/github.com/github/hub/commands/commands.go:47 +0x184
github.com/github/hub/commands.(*Runner).Call(0xc20802a880, 0x68aa20, 0xc20805a090, 0x0, 0x0, 0x0)
	/tmp/go/src/github.com/github/hub/commands/runner.go:90 +0x54
github.com/github/hub/commands.(*Runner).Execute(0xc20802a880, 0x0, 0x0, 0x0)
	/tmp/go/src/github.com/github/hub/commands/runner.go:82 +0x215
main.main()
	/private/tmp/hub20150621-19614-1vln7lw/hub-2.2.1/main.go:12 +0x40

Runtime:
GOOS: darwin
GOARCH: amd64

Could you upgrade to hub 2.2.3?

Probably. It transpires that I was running git compare in a local repo without a github.com remote.

Fixed in https://github.com/github/hub/pull/1044


Printer queue enhancements

[ ] Collapsible list to hide actual jobs
[ ] Show number of remaining job/bytes

Noteworthy links:
https://github.com/grennis/ExpandableRecyclerView/
https://www.bignerdranch.com/blog/expand-a-recyclerview-in-four-steps/


fix: save tokens data (maxTotalBalance, maxDeposit) in store

Description of the Changes
Instead of managing tokens data using hooks and cache object, adds them to the token's data in the store.
Checklist

[ ] Changes have been done against master branch, and PR does not conflict
[ ] New unit / functional tests have been added (whenever applicable)
[ ] Test are passing in local environment
[ ] Docs have been updated
[ ] PR title is follow the Conventional Commits convention: <type>[optional scope]: <description>, e.g: fix: prevent racing of requests

This change is

:tada: This PR is included in version 1.5.1-dev.1 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.6.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Output a full memory dump from the assembler?

I would like to use the assembler program to write programs to run on an Intel8080-based computer emulator.
My emulator accepts 65536-byte files that are loaded into memory, with the top 2048 bytes occupied by the "operating system" and overwriting the first 2048 bytes of the dump.
The assembler program outputs files that are as large as needed to fit the assembled program and no larger.
The ORG pseudo-instruction only informs the calculation of label offsets, and does not create blank spaces in the resulting file.
If  there is more than one ORG line, there is no separation between the parts where different ORGs apply.
How can I get 65536-sized files from the assembler that form the entire memory space of my emulator, so that I could write the code in the parts of memory I need, and not bother with the gaps?
I have already discovered the DS pseudo-instruction, which inserts a specified number of zero bytes, but then I'd have to count the number of bytes in my code to choose the appropriate number of padding bytes. I'd like to do it with an ORG syntax, especially since the I8080 Programmer's Guide says on page 40 that DS and ORG can be used for similar purposes.

Other than with ORG and DS, I can't think of any other way of doing it either. But, if I recall correctly, the assembler of the ASM80 emulator lets you download 64K files when exporting assembled binaries, I think with the Download BIN option. Maybe it does what you need.

I think I got what I need by patching asm80.py: instead of a bytes, we now output into a bytearray that's 64K in size, and the ORG instruction seeks within the bytearray to write. Perhaps you could consider adding something like this as a feature?
--- asm80.py    2022-08-14 09:59:06.606471850 +0000
+++ asm80e.py   2022-08-14 09:59:19.918448202 +0000
@@ -13,11 +13,28 @@

 # This is a 2-pass assembler, so keep track of which pass we're in.
 source_pass = 1

 # Assembled machine code.
-output = b''
+output = bytearray(65536)
+written_byte = [False for _ in range(65536)]
+write_address = 0
+def write(data):
+    global write_address
+    #print(f'asm80> writing {data.hex()} at {write_address:04x}')
+    for index in range(len(data)):
+        if not written_byte[write_address + index]:
+            output[write_address + index] = data[index]
+            written_byte[write_address + index] = True
+            write_address += 1
+        else:
+            report_error(f'byte 0x{write_address + index:04x} has been written to more than once, check your assembly code')
+
+
+def seek(new_address):
+    global write_address
+    write_address = new_address

 # Tokens
 label = ''
 mnemonic = ''
 operand1 = ''
@@ -427,11 +444,11 @@
         address += instruction_size
     else:
         # Pass 2. Output the byte representing the opcode. For instructions with
         # additional arguments or data we'll output that in a separate function.
         if output_byte != b'':
-            output += output_byte
+            write(output_byte)

 def add_label():
     """Add a label to the symbol table."""
     global symbol_table
@@ -1036,21 +1053,21 @@
                     add_label()
                     should_add_label = False
                 address += string_length
             else:
                 # Strip enclosing ' characters when adding to output.
-                output += bytes(argument[1:-1], encoding='utf-8')
+                write(bytes(argument[1:-1], encoding='utf-8'))
                 address += string_length
         # Label.
         else:
             if source_pass == 2:
                 symbol = argument.lower()
                 if symbol not in symbol_table:
                     report_error(f'undefined label "{argument}"')
                 value = symbol_table[symbol]
                 value_size = 1 if (0 <= value <= 255) else 2
-                output += value.to_bytes(value_size, byteorder='little')
+                write(value.to_bytes(value_size, byteorder='little'))
                 address += value_size

 def parse_db_arguments(string):
     """Return a list of ``db`` arguments parsed from string.
@@ -1090,11 +1107,11 @@
                                         else symbol_table.get(operand1.lower(), -1)
     # Label must be defined before use.
     if storage_size < 1:
         report_error(f'invalid "ds" operand or forward reference')
     if source_pass == 2:
-        output += bytes(storage_size)
+        write(bytes(storage_size))
     address += storage_size

 def dw():
     global address
@@ -1165,18 +1182,22 @@

     check_operands(operand1 != '' and (label == operand2 == ''))
     if operand1[0].isdigit():
         if source_pass == 1:
             address = get_number(operand1)
+        else:
+            seek(get_number(operand1))
     # Label, which must be defined before use.
     elif operand1[0].isalpha():
+        value = symbol_table.get(operand1.lower(), -1)
+        if not value:
+            report_error(f'invalid "org" address "{value}')
         if source_pass == 1:
-            value = symbol_table.get(operand1.lower(), -1)
-            if value:
-                address = value
-            else:
-                report_error(f'invalid "org" address "{value}')
+            address = value
+        else:
+            seek(value)
+
     else:
         report_error(f'invalid "org" operand "{operand1}"')

 # Skipped.
@@ -1261,11 +1282,11 @@
             report_error(f'undefined label "{operand}"')
         number = symbol_table[operand]

     if source_pass == 2:
         operand_size = 1 if operand_type == IMMEDIATE8  else 2
-        output += number.to_bytes(operand_size, byteorder='little')
+        write(number.to_bytes(operand_size, byteorder='little'))

 # BUG: doesn't work with immediate addresses like ffh; labels aren't added to
 # symbol table as pass 1 isn't handled.
 def address16():
@@ -1280,11 +1301,11 @@
         number = symbol_table.get(operand1.lower(), -1)
         if source_pass == 2 and number < 0:
             report_error(f'undefined label "{operand1}"')

     if source_pass == 2:
-        output += number.to_bytes(2, byteorder='little')
+        write(number.to_bytes(2, byteorder='little'))

 def get_number(input):
     """Return value of hex or decimal numeric input string."""

That's interesting, thanks. However, I'll not implement such a feature as I'm going the opposite direction, i.e. trimming uninitialized data.

I see, but doesn't this only affect the zero bytes at the end? I believe my emulator will accept files smaller than 65536 bytes (though I haven't tested that yet), and DS directives inside the file would still result in zero bytes being generated, right?
Personally, I think a more elegant solution would be that every ORG and DS directive marks the beginning of a segment, and that segment is written to a separate file with a note saying where the contents of that file should be available in memory. It's then up to the user of these files to decide whether to compose them into a single memory image or load them separately into memory. The reason this should be allowed is that the Programmer's Guide specifically says that you must not rely on the memory contents in areas skipped by ORG or DS. However, I've never worked with CP/M so I don't know if this is feasible to use on that platform, and in any case it adds a lot of complexity which would for my educational purposes much rather be sidestepped -- which is why I want a full memory image in the first place.

Yes, the upcoming feature affects only the zero bytes ad the end and DS directives inside the file will still generate zero bytes. What I meant is I prefer the assembler not to output a full or nearly full memory image. In addition, I plan a major rewrite of the assembler.


Consider using https://github.com/litl/backoff for retries

This lib seems to be implementing all retry strategies we want, so instead of custom handler it might be easier to package it in Fedora/RHEL and reuse it

That does look pretty neat! I think it's a great long term approach.

Does anything else already use litl/backoff? Wondering if this is the Python package to decide to package as RPM or if there's any other similar one.

@MartinBasti, did you file an internal tracker for this?

yes

This was solved by https://github.com/containerbuildsystem/atomic-reactor/pull/1653


fix: add support for configurable unauthorized handlers

Framework user should be able to modify the behavior of 'unauthorized' request handling.
Closes #224

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

3 of 4 (75.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 93.197%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/Http/RoutingHandler.php
3
4
75.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
137

Relevant Lines:
147

💛  - Coveralls


Small image size borks text rendering

General description of bug:

What happened: When an image is rendered with a size that makes it small enough to go under the user@hostname line, it causes the fastfetch output to overlay on the previous text line of the terminal. This issue doesn't occur on a clear or new terminal in contour, but always occurs on Wezterm. @kojq also said I should write this.
What should happen: FastFetch should not intersect with the text of previous lines.
Where did you get the binary: Installed 2.0.5 Deb from GitHub with apt install

Often helpful information:

The image protocol you used: Sixel
The terminal you used: Wezterm (Deb and Flatpak) and Contour (Flatpak)
Screenshots:

It is a known issue. See https://github.com/fastfetch-cli/fastfetch/issues/529#issuecomment-1687596116.

I won't fix this. @LinusDierheimer please have a check when you have time


[WIP] API: Added pull review read only endpoints

take things of  #10005
and finish it ...
close #5733
close #10005

Reviews

[ ] GET /repos/:owner/:repo/pulls/:pull_number/reviews-> ReviewList
[ ] GET /repos/:owner/:repo/pulls/:pull_number/reviews/:review_id -> Review
[ ] DELETE /repos/:owner/:repo/pulls/:pull_number/reviews/:review_id 204

Review Comments

[ ] GET /repos/:owner/:repo/pulls/:pull_number/reviews/:review_id/comments -> ReviewCommentList
[ ] POST /repos/:owner/:repo/pulls/:pull_number/reviews < CreateReviewOption > Review
[ ] PUT /repos/:owner/:repo/pulls/:pull_number/reviews/:review_id/dismissals < DismisReviewOption

Review: {id, user, body, submitted_at, commit_id, state, pull_request_url}
ReviewComment: {id, user, body, pull_request_review_id, diff_hunk, path, position, original_position, commit_id, original_commit_id, in_reply_to_id, created_at, updated_at, html_url, pull_request_url}
CreateReviewOption: {commit_id, body (req if ReqChange & Comment), event (if "" -> PENDING), comments (CreateReviewCommentOption)}
CreateReviewCommentOption: {path, position, body}

ToDo:

[ ] write Tests
[ ] fix Tests

Codecov Report

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

@@           Coverage Diff           @@
##           master   #11224   +/-   ##
=======================================
  Coverage   43.76%   43.76%
=======================================
  Files         607      607
  Lines       86807    86807
=======================================
  Hits        37995    37995
  Misses      44120    44120
  Partials     4692     4692

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 28d4f34...28d4f34. Read the comment docs.


Apalache fails to find module file

Description
Let's assume following layout:
. <--- work directory where java -jar apalache.jar ... is called
./dir/M0.tla <-- Main module
./dir/M1.tla <-- M0 extends M1
Then Apalache cannot find ./dir/M1.tla. TLC works as expected.
Input specification
---- MODULE M0 ----
EXTENDS M1
VARIABLE
    \* @type: Bool;
    x
Init == x = TRUE
Next == x' = ~x
Spec == Init /\ [][Next]_x
Inv == x => ~y
====

---- MODULE M1 ----
\* @type: Bool;
ap_0 == TRUE
====

The command line parameters used to run the tool
java -jar ../tools/apalache-pkg-0.20.2-full.jar check dir/M0.tla
Expected behavior
Apalache is able to find all tla-files
Log files
# APALACHE
# version: 0.20.2
# build  : 5b59b10
#
# Usage statistics is OFF. We care about your privacy.
# If you want to help our project, consider enabling statistics with config --enable-stats=true.

Output directory: /mnt/c/work/TLA/tlc-qual/bug/_apalache-out/M0.tla/2022-03-12T21-03-30_5656217929895998894
Checker options: filename=dir/M0.tla, init=, next=, inv=          I@21:03:31.116
Tuning:                                                           I@21:03:31.122
PASS #0: SanyParser                                               I@21:03:31.124
Parsing file /mnt/c/work/TLA/tlc-qual/bug/dir/M0.tla
File does not exist: /mnt/c/work/TLA/tlc-qual/bug/M1.tla while looking in these directories: jar:file:/mnt/c/work/TLA/tlc-qual/tools/apalache-pkg-0.20.2-full.jar!/tla2sany/StandardModules/
Error by TLA+ parser: *** Abort messages: 1

Unknown location

Cannot find source file for module M1 imported in module M0.

 E@21:03:31.306
It took me 0 days  0 hours  0 min  0 sec                          I@21:03:31.307
Total time: 0.995 sec                                             I@21:03:31.308
EXITCODE: ERROR (255)

System information

Apalache version [apalache-mc version]: 0.20.2
OS [e.g. Ubuntu Linux or Mac OS, and the current version]: Ubuntu 20.04
JDK version [e.g. OpenJDK 0.8.0]:  openjdk version "14.0.2"

Thanks for the report @craft095 :)
You haven't given the full command you are running, but I assume you are not running apalache from within the ./dir directory?
Apalache only knows how to find .tla modules that are either

located in the current working directory, or,
in directories that have been added to the TLA_PATH.

Please see https://apalache.informal.systems/docs/apalache/running.html?highlight=TLA_PATH#module-lookup for details on module lookup!

As  UX improvement, we could add this info the error message, noting the use of TLA_PATH briefly and perhaps providing a link to the section in the manual.
Do you think that would be helpful?

Thanks @shonfeder ! I know about workaround, it just seemed weird to me that Apalache diverges from TLC in this regard. That's why I reported it. That is surely minor issue, but I find TLC behavior less surprising and more convenient, especially when invoked from script or Makefile. Is there a deeper reason why Apalache does not look for modules relative to the main tla file?

I see. Thanks for clarifying. I'll discuss this with the team at our next meeting to get the background and motivation and provide an update.

Related to #426. I think Markus has already mentioned a solution there.

@craft095 FYI, we fixed this in #1491 bound for release next Monday! Thanks again for the report!


Route-Agent pods are in a pending state with the installation of Submariner v0.16.2

WHAT IS DONE:
Initial Setup is both the sites on OCP 4.12 and submariner v0.15.2 - this was working
We installed the v0.16.2 on the setup
ISSUE:
We see that the route-agent pods are in the pending phase
See the below events in one of the route-agent pod
# oc describe pod submariner-routeagent-dmtzr
Name:         submariner-routeagent-dmtzr
Namespace:    submariner-operator
Priority:     0
Node:         compute-1-ru7.rackae2.mydomain.com/<IP_ADDRESS>
Start Time:   Mon, 22 Jan 2024 23:02:26 -0500
Labels:       app=submariner-routeagent
              component=routeagent
              controller-revision-hash=7584dc665b
              pod-template-generation=1
Annotations:  openshift.io/scc: privileged
Status:       Pending
IP:           <IP_ADDRESS>
IPs:
  IP:           <IP_ADDRESS>
Controlled By:  DaemonSet/submariner-routeagent
Init Containers:
  submariner-routeagent-init:
    Container ID:
    Image:         quay.io/submariner/submariner-route-agent:0.16.2
    Image ID:
    Port:          <none>
    Host Port:     <none>
    Command:
      submariner-route-agent.sh
    State:          Waiting
      Reason:       PodInitializing
    Ready:          False
    Restart Count:  0
    Environment:
      SUBMARINER_WAITFORNODE:  true
      NODE_NAME:                (v1:spec.nodeName)
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-bvbzz (ro)
Containers:
  submariner-routeagent:
    Container ID:
    Image:         quay.io/submariner/submariner-route-agent:0.16.2
    Image ID:
    Port:          <none>
    Host Port:     <none>
    Command:
      submariner-route-agent.sh
    State:          Waiting
      Reason:       PodInitializing
    Ready:          False
    Restart Count:  0
    Environment:
      SUBMARINER_NAMESPACE:      submariner-operator
      SUBMARINER_CLUSTERID:      site2
      SUBMARINER_DEBUG:          true
      SUBMARINER_CLUSTERCIDR:    <IP_ADDRESS>/14
      SUBMARINER_SERVICECIDR:    <IP_ADDRESS>/16
      SUBMARINER_GLOBALCIDR:
      SUBMARINER_NETWORKPLUGIN:  OVNKubernetes
      NODE_NAME:                  (v1:spec.nodeName)
    Mounts:
      /run/openvswitch from host-run-openvswitch (rw)
      /run/ovn-ic from host-run-ovn-ic (rw)
      /run/xtables.lock from host-run-xtables-lock (rw)
      /sys from host-sys (ro)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-bvbzz (ro)
Conditions:
  Type              Status
  Initialized       False
  Ready             False
  ContainersReady   False
  PodScheduled      True
Volumes:
  host-run-xtables-lock:
    Type:          HostPath (bare host directory volume)
    Path:          /run/xtables.lock
    HostPathType:  FileOrCreate
  host-run-openvswitch:
    Type:          HostPath (bare host directory volume)
    Path:          /run/openvswitch
    HostPathType:  DirectoryOrCreate
  host-sys:
    Type:          HostPath (bare host directory volume)
    Path:          /sys
    HostPathType:
  host-run-ovn-ic:
    Type:          HostPath (bare host directory volume)
    Path:          /run/ovn-ic
    HostPathType:  DirectoryOrCreate
  kube-api-access-bvbzz:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
    ConfigMapName:           openshift-service-ca.crt
    ConfigMapOptional:       <nil>
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 op=Exists
                             node.kubernetes.io/disk-pressure:NoSchedule op=Exists
                             node.kubernetes.io/memory-pressure:NoSchedule op=Exists
                             node.kubernetes.io/network-unavailable:NoSchedule op=Exists
                             node.kubernetes.io/not-ready:NoExecute op=Exists
                             node.kubernetes.io/pid-pressure:NoSchedule op=Exists
                             node.kubernetes.io/unreachable:NoExecute op=Exists
                             node.kubernetes.io/unschedulable:NoSchedule op=Exists
Events:
  Type     Reason       Age                   From               Message
  ----     ------       ----                  ----               -------
  Normal   Scheduled    87m                   default-scheduler  Successfully assigned submariner-operator/submariner-routeagent-dmtzr to compute-1-ru7.rackae2.mydomain.com
  Warning  FailedMount  76m (x3 over 83m)     kubelet            Unable to attach or mount volumes: unmounted volumes=[host-run-xtables-lock], unattached volumes=[host-run-ovn-ic kube-api-access-bvbzz host-sys host-run-xtables-lock host-run-openvswitch]: timed out waiting for the condition
  Warning  FailedMount  74m (x2 over 78m)     kubelet            Unable to attach or mount volumes: unmounted volumes=[host-run-xtables-lock], unattached volumes=[host-sys host-run-xtables-lock host-run-openvswitch host-run-ovn-ic kube-api-access-bvbzz]: timed out waiting for the condition
  Warning  FailedMount  26m (x10 over 69m)    kubelet            Unable to attach or mount volumes: unmounted volumes=[host-run-xtables-lock], unattached volumes=[kube-api-access-bvbzz host-sys host-run-xtables-lock host-run-openvswitch host-run-ovn-ic]: timed out waiting for the condition
  Warning  FailedMount  6m21s (x8 over 85m)   kubelet            Unable to attach or mount volumes: unmounted volumes=[host-run-xtables-lock], unattached volumes=[host-run-openvswitch host-run-ovn-ic kube-api-access-bvbzz host-sys host-run-xtables-lock]: timed out waiting for the condition
  Warning  FailedMount  2m10s (x50 over 87m)  kubelet            MountVolume.SetUp failed for volume "host-run-xtables-lock" : hostPath type check failed: /run/xtables.lock is not a file

Outputs of the deploy, and join commands
sh-4.4$ /tmp/new_subctl/bin/subctl  deploy-broker --operator-debug --kubeconfig=/connection/kube-config/71a5f5abfc/kubeconfig
 ✓ Setting up broker RBAC
 ✓ Deploying the Submariner operator
 ✓ Created operator CRDs
 ✓ Created operator namespace: submariner-operator
 ✓ Created operator service account and role
 ✓ Created submariner service account and role
 ✓ Created lighthouse service account and role
 ✓ Deployed the operator successfully
 ✓ Deploying the broker
 ✓ Saving broker info to file "broker-info.subm"
sh-4.4$ /tmp/new_subctl/bin/subctl join --kubeconfig=/tmp/local-kubeconfig --operator-debug --pod-debug --clusterid=site2 broker-info.subm
 ✓ broker-info.subm indicates broker is at https://api.rackae1.mydomain.com:6443
 ✓ Discovering network details
        Network plugin:  OVNKubernetes
        Service CIDRs:   [<IP_ADDRESS>/16]
        Cluster CIDRs:   [<IP_ADDRESS>/14]
   There are 3 node(s) labeled as gateways:
    - control-1-ru2.rackae2.mydomain.com
    - control-1-ru3.rackae2.mydomain.com
    - control-1-ru4.rackae2.mydomain.com
 ✓ Retrieving the gateway nodes
 ✓ Gathering relevant information from Broker
 ✓ Retrieving Globalnet information from the Broker
 ✓ Validating Globalnet configuration
 ✓ Deploying the Submariner operator
 ✓ Created operator CRDs
 ✓ Created operator namespace: submariner-operator
 ✓ Created operator service account and role
 ✓ Created submariner service account and role
 ✓ Created lighthouse service account and role
 ✓ Deployed the operator successfully
 ✓ Creating SA for cluster
 ✓ Connecting to Broker
 ✓ Deploying submariner
 ✓ Submariner is up and running
sh-4.4$ /tmp/new_subctl/bin/subctl join --kubeconfig=/connection/kube-config/71a5f5abfc/kubeconfig --operator-debug --pod-debug --clusterid=site1 broker-info.subm
 ✓ broker-info.subm indicates broker is at https://api.rackae1.mydomain.com:6443
 ✓ Discovering network details
        Network plugin:  OVNKubernetes
        Service CIDRs:   [<IP_ADDRESS>/16]
        Cluster CIDRs:   [<IP_ADDRESS>/14]
   There are 3 node(s) labeled as gateways:
    - control-1-ru2.rackae1.mydomain.com
    - control-1-ru3.rackae1.mydomain.com
    - control-1-ru4.rackae1.mydomain.com
 ✓ Retrieving the gateway nodes
 ✓ Gathering relevant information from Broker
 ✓ Retrieving Globalnet information from the Broker
 ✓ Validating Globalnet configuration
 ✓ Deploying the Submariner operator
 ✓ Created operator namespace: submariner-operator
 ✓ Creating SA for cluster
 ✓ Connecting to Broker
 ✓ Deploying submariner
 ✓ Submariner is up and running

show all command output for site 2
sh-4.4$ /tmp/new_subctl/bin/subctl show all --kubeconfig /tmp/local-kubeconfig
Cluster "local-config"
 ✓ Detecting broker(s)
 ✓ No brokers found

 ✓ Showing Connections
GATEWAY                          CLUSTER   REMOTE IP       NAT   CABLE DRIVER   SUBNETS                        STATUS   RTT avg.
control-1-ru2.rackae1.mydomain   site1     <IP_ADDRESS>   no    libreswan      <IP_ADDRESS>/16, <IP_ADDRESS>/14   error    0s

 ✓ Showing Endpoints
CLUSTER   ENDPOINT IP     PUBLIC IP     CABLE DRIVER   TYPE
site2     <IP_ADDRESS>   <IP_ADDRESS>   libreswan      local
site2     <IP_ADDRESS>   <IP_ADDRESS>   libreswan      local
site1     <IP_ADDRESS>   <IP_ADDRESS>   libreswan      remote
site2     <IP_ADDRESS>   <IP_ADDRESS>   libreswan      local

 ✓ Showing Gateways
NODE                             HA STATUS   SUMMARY
control-1-ru2.rackae2.mydomain   passive     There are no connections
control-1-ru3.rackae2.mydomain   active      0 connections out of 1 are established
control-1-ru4.rackae2.mydomain   passive     There are no connections

 ✓ Showing Network details
    Discovered network details via Submariner:
        Network plugin:  OVNKubernetes
        Service CIDRs:   [<IP_ADDRESS>/16]
        Cluster CIDRs:   [<IP_ADDRESS>/14]

 ✓ Showing versions
COMPONENT                       REPOSITORY           CONFIGURED   RUNNING                     ARCH
submariner-gateway              quay.io/submariner   0.16.2       release-0.16-88f54d25ccfc   amd64
submariner-routeagent           quay.io/submariner   0.16.2       Unavailable                 Unavailable
submariner-metrics-proxy        quay.io/submariner   0.16.2       release-0.16-3d7d32af4808   amd64
submariner-operator             quay.io/submariner   0.16.2       release-0.16-d4284df96925   amd64
submariner-lighthouse-agent     quay.io/submariner   0.16.2       release-0.16-847b34cf06d0   amd64
submariner-lighthouse-coredns   quay.io/submariner   0.16.2       release-0.16-847b34cf06d0   amd64

show all command output for site 1
sh-4.4$ /tmp/new_subctl/bin/subctl show all --kubeconfig /connection/kube-config/71a5f5abfc/kubeconfig
Cluster "default-cluster"
 ✓ Detecting broker(s)
NAMESPACE               NAME                COMPONENTS                        GLOBALNET   GLOBALNET CIDR   DEFAULT GLOBALNET SIZE   DEFAULT DOMAINS
submariner-k8s-broker   submariner-broker   service-discovery, connectivity   no          <IP_ADDRESS>/8      65536

 ✓ Showing Connections
GATEWAY                          CLUSTER   REMOTE IP       NAT   CABLE DRIVER   SUBNETS                        STATUS   RTT avg.
control-1-ru3.rackae2.mydomain   site2     <IP_ADDRESS>   no    libreswan      <IP_ADDRESS>/16, <IP_ADDRESS>/14   error    0s

 ✓ Showing Endpoints
CLUSTER   ENDPOINT IP     PUBLIC IP     CABLE DRIVER   TYPE
site1     <IP_ADDRESS>   <IP_ADDRESS>   libreswan      local
site2     <IP_ADDRESS>   <IP_ADDRESS>   libreswan      remote
site1     <IP_ADDRESS>   <IP_ADDRESS>   libreswan      local
site1     <IP_ADDRESS>   <IP_ADDRESS>   libreswan      local

 ✓ Showing Gateways
NODE                             HA STATUS   SUMMARY
control-1-ru2.rackae1.mydomain   active      0 connections out of 1 are established
control-1-ru3.rackae1.mydomain   passive     There are no connections
control-1-ru4.rackae1.mydomain   passive     There are no connections

 ✓ Showing Network details
    Discovered network details via Submariner:
        Network plugin:  OVNKubernetes
        Service CIDRs:   [<IP_ADDRESS>/16]
        Cluster CIDRs:   [<IP_ADDRESS>/14]

 ✓ Showing versions
COMPONENT                       REPOSITORY           CONFIGURED   RUNNING                     ARCH
submariner-gateway              quay.io/submariner   0.16.2       release-0.16-88f54d25ccfc   amd64
submariner-routeagent           quay.io/submariner   0.16.2       Unavailable                 Unavailable
submariner-metrics-proxy        quay.io/submariner   0.16.2       release-0.16-3d7d32af4808   amd64
submariner-operator             quay.io/submariner   0.16.2       release-0.16-d4284df96925   amd64
submariner-lighthouse-agent     quay.io/submariner   0.16.2       release-0.16-847b34cf06d0   amd64
submariner-lighthouse-coredns   quay.io/submariner   0.16.2       release-0.16-847b34cf06d0   amd64

diagnose all command output for site 2
sh-4.4$ /tmp/new_subctl/bin/subctl diagnose all --kubeconfig /tmp/local-kubeconfig
Cluster "local-config"
 ✓ Checking Submariner support for the Kubernetes version
 ✓ Kubernetes version "v1.25.14+bcb9a60" is supported

 ✓ Non-Globalnet deployment detected - checking that cluster CIDRs do not overlap
 ✓ Checking DaemonSet "submariner-gateway"
 ✓ Checking DaemonSet "submariner-routeagent"
 ✓ Checking DaemonSet "submariner-metrics-proxy"
 ✓ Checking Deployment "submariner-lighthouse-agent"
 ✓ Checking Deployment "submariner-lighthouse-coredns"
 ✗ Checking the status of all Submariner pods
 ✗ Pod "submariner-routeagent-dmtzr" is not running. (current state is Pending)
 ✗ Pod "submariner-routeagent-g5j8d" is not running. (current state is Pending)
 ✗ Pod "submariner-routeagent-gcrpw" is not running. (current state is Pending)
 ✗ Pod "submariner-routeagent-mckgl" is not running. (current state is Pending)
 ✗ Pod "submariner-routeagent-mctlb" is not running. (current state is Pending)
 ✗ Pod "submariner-routeagent-v8wck" is not running. (current state is Pending)

 ✓ Checking Submariner support for the CNI network plugin
 ✓ The detected CNI network plugin ("OVNKubernetes") is supported
 ✓ Checking OVN version
 ✓ The ovn-nb database version 7.0.0 is supported
 ✗ Checking gateway connections
 ✗ Connection to cluster "site1" is not established. Connection details:
{
  "status": "error",
  "statusMessage": "Failed to successfully ping the remote endpoint IP \"<IP_ADDRESS>\"",
  "endpoint": {
    "cluster_id": "site1",
    "cable_name": "submariner-cable-site1-172-20-200-25",
    "healthCheckIP": "<IP_ADDRESS>",
    "hostname": "control-1-ru2.rackae1.mydomain.com",
    "subnets": [
      "<IP_ADDRESS>/16",
      "<IP_ADDRESS>/14"
    ],
    "private_ip": "<IP_ADDRESS>",
    "public_ip": "<IP_ADDRESS>",
    "nat_enabled": true,
    "backend": "libreswan",
    "backend_config": {
      "natt-discovery-port": "4490",
      "preferred-server": "false",
      "udp-port": "4500"
    }
  },
  "usingIP": "<IP_ADDRESS>",
  "latencyRTT": {
    "last": "0s",
    "min": "0s",
    "average": "0s",
    "max": "0s",
    "stdDev": "0s"
  }
}
 ✓ Checking Submariner support for the kube-proxy mode
 ✓ Cluster is running with "OVNKubernetes" CNI which internally implements kube-proxy functionality
 ✓ Checking that firewall configuration allows intra-cluster VXLAN traffic

 ✓ Checking that services have been exported properly

Skipping inter-cluster firewall check as it requires two kubeconfigs. Please run "subctl diagnose firewall inter-cluster" command manually.

subctl version: v0.16.2

diagnose all command output for site 1
sh-4.4$ /tmp/new_subctl/bin/subctl diagnose all --kubeconfig /connection/kube-config/71a5f5abfc/kubeconfig
Cluster "default-cluster"
 ✓ Checking Submariner support for the Kubernetes version
 ✓ Kubernetes version "v1.25.14+bcb9a60" is supported

 ✓ Non-Globalnet deployment detected - checking that cluster CIDRs do not overlap
 ✓ Checking DaemonSet "submariner-gateway"
 ✓ Checking DaemonSet "submariner-routeagent"
 ✓ Checking DaemonSet "submariner-metrics-proxy"
 ✓ Checking Deployment "submariner-lighthouse-agent"
 ✓ Checking Deployment "submariner-lighthouse-coredns"
 ✗ Checking the status of all Submariner pods
 ✗ Pod "submariner-routeagent-9c7ph" is not running. (current state is Pending)
 ✗ Pod "submariner-routeagent-c9jhk" is not running. (current state is Pending)
 ✗ Pod "submariner-routeagent-gh2tl" is not running. (current state is Pending)
 ✗ Pod "submariner-routeagent-ml57r" is not running. (current state is Pending)
 ✗ Pod "submariner-routeagent-tz67n" is not running. (current state is Pending)
 ✗ Pod "submariner-routeagent-vjb6m" is not running. (current state is Pending)

 ✓ Checking Submariner support for the CNI network plugin
 ✓ The detected CNI network plugin ("OVNKubernetes") is supported
 ✓ Checking OVN version
 ✓ The ovn-nb database version 7.0.0 is supported
 ✗ Checking gateway connections
 ✗ Connection to cluster "site2" is not established. Connection details:
{
  "status": "error",
  "statusMessage": "Failed to successfully ping the remote endpoint IP \"<IP_ADDRESS>\"",
  "endpoint": {
    "cluster_id": "site2",
    "cable_name": "submariner-cable-site2-172-20-102-26",
    "healthCheckIP": "<IP_ADDRESS>",
    "hostname": "control-1-ru3.rackae2.mydomain.com",
    "subnets": [
      "<IP_ADDRESS>/16",
      "<IP_ADDRESS>/14"
    ],
    "private_ip": "<IP_ADDRESS>",
    "public_ip": "<IP_ADDRESS>",
    "nat_enabled": true,
    "backend": "libreswan",
    "backend_config": {
      "natt-discovery-port": "4490",
      "preferred-server": "false",
      "udp-port": "4500"
    }
  },
  "usingIP": "<IP_ADDRESS>",
  "latencyRTT": {
    "last": "0s",
    "min": "0s",
    "average": "0s",
    "max": "0s",
    "stdDev": "0s"
  }
}
 ✓ Checking Submariner support for the kube-proxy mode
 ✓ Cluster is running with "OVNKubernetes" CNI which internally implements kube-proxy functionality
 ✓ Checking that firewall configuration allows intra-cluster VXLAN traffic

 ✓ Checking that services have been exported properly

Skipping inter-cluster firewall check as it requires two kubeconfigs. Please run "subctl diagnose firewall inter-cluster" command manually.

subctl version: v0.16.2

Kindly help us on this

Please use Submariner 0.16.3, this issue was fixed in that release.