🚀 Feature: Add Kubernetes clusters plugin for clusters in the catalog

🔖 Feature description
Add a plugin to the Resource entity page that shows details of Kubernetes clusters that are in the catalog.
Example:

Utilizing the proxy api we could show:

details of nodes
api resources on the cluster
health of the cluster itself

🎤 Context
Up until now we have focused on the kubernetes plugin which is focused on showing Kubernetes information at the "Component" level, this would give a different view for cluster admins who want to see details of their clusters in backstage
✌ Possible Implementation
Add a new kubernetes-clusters plugin and add to the Resource entity page
👀 Have you spent some time to check if this feature request has been raised before?

[X] I checked and didn't find similar issue

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

Are you willing to submit PR?
Yes I am willing to submit a PR!

I've got a working version locally, need to tidy it up.


[BUG] Table history timestamp missing timezone information

Bug
Describe the problem
History timestamps are missing timezone information.
Steps to reproduce
from delta import DeltaTable

table = DeltaTable.forPath(spark_context, backend_url)
timestamp = table.history(depth).first()['timestamp']

Observed results
Retrieving the last commit timestamp from table history returns a value in the format 2022-09-21 13:45:08.100000. This timestamp contains no timezone information. Am I to assume this is UTC?
Expected results
Timestamp contains timezone information.
Further details

Environment information
delta-spark 1.2.1 and also tried 2.1.0 (Python)
Willingness to contribute
The Delta Lake Community encourages bug fix contributions. Would you or another member of your organization be willing to contribute a fix for this bug to the Delta Lake code base?

[ ] Yes. I can contribute a fix for this bug independently.
[x] Yes. I would be willing to contribute a fix for this bug with guidance from the Delta Lake community.
[ ] No. I cannot contribute a bug fix at this time.

Retrieving the last commit timestamp from table history returns a value in the format 2022-09-21 13:45:08.100000. This timestamp contains no timezone information. Am I to assume this is UTC?

No. The timezone is the default timezone you set in Spark. The string you see in the data is just for displaying. Spark itself stores the timezone for a timestamp type, and you don't need to worry about it.

@zsxwing Thanks for the clarification. I can think of use cases where having the timezone in the timestamp itself would be useful. For example, consider a batch data processing application (ETL etc.) that wants to read the timestamp to determine when the last commit was to construct a time window for the next batch upload.

I can think of use cases where having the timezone in the timestamp itself would be useful.

Timezone information is there. Delta gives Spark the milliseconds since epoch. Then Spark decides how to show it. For example, the following code will show the timezone information:
>>> table.history().selectExpr("date_format(timestamp, 'yyyy-MM-dd HH:mm:SS VV') as timestamp_with_timezone").show(truncate=False)
+------------------------------+
|timestamp_with_timezone       |
+------------------------------+
|2022-09-23 09:12:44 US/Pacific|
+------------------------------+

You can take a look at the blog post https://www.databricks.com/blog/2020/07/22/a-comprehensive-look-at-dates-and-timestamps-in-apache-spark-3-0.html to understand how this works.

Closing this as the question is answered. Delta does provide the timezone information to Spark. Users need to pick up the right APIs to retrieve it.


useRadio and useCheckbox cause ui jumps on Safari through usePress and focusWithoutScrolling

🐛 Bug Report

I've found out that clicking on radio or checkbox elements controlled by useRadio or useCheckbox hooks causes UI jumping on Safari and even worse, for mobile devices, it leaves shifted viewport after keyboard hide if previous focused element was text input.
Desktop Safari:

Mobile Safari:
https://user-images.githubusercontent.com/26162660/118660290-5587e180-b7ee-11eb-9b03-61917502dda8.MP4
I've found out that the source of the problem is focusWithoutScrolling function which gets called in usePress hook which is used by both of the hooks above. Happily enough I was able to wrap the components with <PressResponder> and pass preventFocusOnPress prop there which fixed it. Im still reporting this since this is undoubtedly unexpected behavior
🤔 Expected Behavior

usePress within useRadio and useCheckbox:

does not affect ui in any way
does not prevent default scroll event (after hiding a keyboard) from executing

😯 Current Behavior

usePress within useRadio and useCheckbox:

shifts UI
prevents natural scroll behavior after keyboard hide, leaving the viewport shifted

💁 Possible Solution

Maybe pass preventFocusOnPress to usePress by default in useRadio in useCheckbox or at least expose this prop through those hooks?
🔦 Context

Forms in scrollable UI like chat provided bad UX for Safari users.
💻 Code Sample

I tried providing simple example with codesandbox but could not replicate it there, Im willing to answer any questions about the setup though 🙏
🌍 Your Environment

Software
Version(s)

react-spectrum
@react-aria/radio: 3.0.0-nightly.1037

Browser
Safari Version 14.0.3

Operating System
MacOs Big Sur 11.2.3

🧢 Your Company/Team

LiveChat Chat Widget
🕷 Tracking Issue (optional)

I wouldn't use preventFocusOnPress. That's the main reason for using usePress in these components in the first place - Safari doesn't focus these inputs by default so we need to focus them manually on press to ensure users can use the keyboard with them.
I'm not sure about the scrolling behavior. What would you expect to happen when the keyboard hides? I guess some scrolling would be expected because the viewport got larger?

The main problem is that on mobile Safari the viewport doesnt get larger in our case - the keyboard hides but it doesnt free up the space that it was taking.

Are there any solutions for this? Getting the same behaviour in chrome if Radio element is in a scrollable container


CSVStream is slow.

Hey @nuwangunasekara I looked into why the CSV reader was slow while trying to fix the tests. I did some basic benchmarks and found the ARFF stream streams 59,227 instances a second, and the CSV stream loads 3,177 a second. This is a very significant performance decrease.  I decided to profile it to see what the potential issue was.

I believe most of the slowness comes from opening a file for each instance. It should be possible to keep one file open and use it for each instance.

In pseudo code:
with open("csv.csv") as f:
        data = np.genfromtxt(f, max_rows=1)
        ...
        data = np.genfromtxt(f, max_rows=1)
        ...
        data = np.genfromtxt(f, max_rows=1)

Rather than
data = np.genfromtxt("csv.csv", skip=1, max_rows=1)
data = np.genfromtxt("csv.csv", skip=2, max_rows=1)
data = np.genfromtxt("csv.csv", skip=3, max_rows=1)
data = np.genfromtxt("csv.csv", skip=4, max_rows=1)

This will also avoid skipping through each row in the CSV for each call to the next instance.

I'm not convinced genfromtxt is the fastest function when loading one instance at a time. I found the standard library CSV reader to be faster. Of course, I'm not sure how CSVReader should handle non-float datatypes.

  with open("data/electricity_tiny.csv") as f:
      csv_file = csv.reader(f)
      next(f)

      start = time.time()
      n = 0

      for row in csv_file:
          x = np.array(row, dtype=float)
          n += 1

      frequency = n / (time.time() - start)

      print(f"csv reader frequency: {frequency}")

  with open("data/electricity_tiny.csv") as f:
      next(f)

      start = time.time()
      n = 0

      while True:
          n += 1
          x = np.genfromtxt(f, delimiter=",", dtype=float, max_rows=1)
          if x.size == 0:
              break

      frequency = n / (time.time() - start)

      print(f"genfromtxt frequency: {frequency}")

csv reader frequency:<PHONE_NUMBER>523297
genfromtxt frequency: 22945.635917751366
Profiling
To profile the relevant piece of the code:
from cProfile import Profile

start = time.time()
stream = stream_from_file("data/electricity_tiny.csv")
load_time = time.time() - start

start = time.time()
with Profile() as profile:
    n = 0
    while stream.has_more_instances():
        stream.next_instance()
        n += 1

    profile.dump_stats("csv.prof")

frequency = n / (time.time()  - start)

print(f"Load time: {load_time}")
print(f"Frequency: {frequency}")

I used https://jiffyclub.github.io/snakeviz/ to visualize the profile files. I have also attached the profiles for convenience.
csv_original.prof.tar.gz

CSVStream might be implemented from the MOA side, we have an updated version on capymoa side but there is still room for improvement


Define Project Roles

Related to https://github.com/shipwright-io/community/issues/243
Goal
Establish a clear definition of the following roles:

SHP Role

Contributor

Approver

Maintainer

Admin

Establish a relationship of those roles with:

OWNER's file across repositories

Establish a mapping of those roles with GHE:
As we are now under a GHE account, I think we will benefit of having granular roles in the Shipwright organization. I propose to leverage Repository access for each permission level, so that our documented roles easily translate into user access of our organization.
Github documents:

Read: Recommended for non-code contributors who want to view or discuss your project
Triage: Recommended for contributors who need to proactively manage issues, discussions, and pull requests without write access
Write: Recommended for contributors who actively push to your project
Maintain: Recommended for project managers who need to manage the repository without access to sensitive or destructive actions
Admin: Recommended for people who need full access to the project, including sensitive and destructive actions like managing security or deleting a repository

So we can have the following mapping:

SHP Role
Github Role

Contributor
Triage

Approver
Write

Maintainer
Maintain

Admin
Admin

We had a meeting on this today (@Adarsh-jaiss , @karanibm6 , @MaheshRKumawat ):

SHP Role
Github Role

Community Participant
Might be not a Github Role, or

Contributor
Triage

Reviewer
Customized new Role (part of Owners), without write rights

Approver
Write

Maintainer
Maintain

Admin
Admin

Next steps:

We are not sure about the scope of the roles(org vs project scope)
We need a definition of roles. It helps to map them to GHE roles, so we have a tight control in GHE.
We need a definition of the roles requirements, so basically, what u need to do to be in that role.


[Automation] Generate Fluent Lite from Swagger datafactory#package-2018-06

[Automation] Generate Fluent Lite from Swagger datafactory#package-2018-06

/azp run java - datafactory - mgmt - tests

API change check
APIView has identified API level changes in this PR and created following API reviews.
com.azure.resourcemanager:azure-resourcemanager-datafactory

/azp run java - datafactory - mgmt - tests

/azp run java - datafactory - mgmt - tests

/azp run java - datafactory - mgmt - tests

/azp run java - datafactory - mgmt - tests

/azp run java - datafactory - mgmt - tests


Autogenerated Swashbuckle swagger documentation is incorrect

As Swashbuckle will try to guess the schema for the plain entity types it will not expose a swagger documentation for the actual JSON API as exposed by Saule.
It would be nice to somehow make Swashbuckle understand that what is really input/output in the REST API is ApiResources, without customizing the Swashbuckle Config.

While it would be good to auto wire this somehow, at least it seems possible to use SwaggerResponseAttribute and SwaggerSchemaFilterAttribute to correctly instruct Swashbuckle.

I've had success implementing special purpose IDocumentFilter and IOperationFilter which could be packaged into a ISwaggerProvider for a more or less generic solution to auto wire support for JSON API with Swashbuckle. The latter would require further non-trivial work.
A caveat is that it's not possible to ref/extend to the JSON API JSON Schema as Swagger 2.0 does not support enough of JSON Schema. This seems to be changing in Swagger 3.0 but it's far off to be generally available. I still think Swagger 2.0 can be useful as documentation for JSON API, you just have to leave out some details which can be referred to the actual JSON API spec at relevant places.

I think this was solved with #142.


fix(material/stepper): add styling to stepper for high contrast mode

+1 to all of Kristiyan's comments

@amysorto can you also post a screenshot of the HC appearance?

Here are the screenshots in high contrast mode:
Horizontal Stepper

Vertical Stepper

@amysorto looks like the only change left to make is moving the styles to stepper.scss


dependency isn't working

<dependency>
  <groupId>io.scigraph</groupId>
  <artifactId>scigraph-core</artifactId>
  <version>2.0</version>
  <type>jar</type>
  <scope>compile</scope>
</dependency>

produce;

Missing artifact io.scigraph:scigraph-core:jar:2.0

Why is not working? maybe you need to update that? the FAQ  when you specify that is from 2016.

I assume because the jars are not pushed to maven central, https://github.com/SciGraph/SciGraph/issues/192, this doesn't work without cloning the repo and building the jar locally.  I'll update the wiki, thanks for pointing this out!


DBZ-848 Removed explicit primary node change handling. It is handled by mongoDb driver internally.

Removed explicit primary node change handling. It is handled by mongoDb driver internally. Explicit primary node change event handling was causing issue that no mongo events were read after primary change. This issue only happened when rs.stepDown() was used on mongo node.

Hey @tautautau, thanks a lot! Could you please alter the commit message so it begins with "DBZ-848" and also use an email as commit author that's linked to your GH account? That way it will properly show up in the commit stats. Thanks!

Hey @tautautau, thanks a lot! Could you please alter the commit message so it begins with "DBZ-848" and also use an email as commit author that's linked to your GH account? That way it will properly show up in the commit stats. Thanks!

Hi. I've changed the name and added the mail to the github account. I hope it will work! :)

Rebased and applied. Thanks a lot, @tautautau!


Feature/125 swift 3 alpha 1

This is the pull request for the 4.0.0-alpha1 release. I have rewritten the README.md and added a CHANGELOG.md

When do you think this can be merged?

@Joker666 Just merged it


bug: Foundry deploy causes bug due to ast property being undefined

Is there an existing issue for this?

[X] I have looked through the existing issues

Which method was used to setup Scaffold-ETH 2 ?
npx create-eth@latest
Current Behavior
If you create a new scaffold-eth2 project using foundry, whilst deploying (without touching any of the code apart from packages/foundry/.env file to add DEPLOYER_PRIVATE_KEY), you will get an error at the end of the deploy, like this
TypeError: Cannot read properties of undefined (reading 'nodes')
    at getInheritedFromContracts (/Users/.../packages/foundry/script/generateTsAbis.js:40:38)
    at getInheritedFunctions (/Users/.../packages/foundry/script/generateTsAbis.js:53:34)
    at /Users/.../packages/foundry/script/generateTsAbis.js:109:29
    at Array.forEach (<anonymous>)
    at /Users/.../packages/foundry/script/generateTsAbis.js:101:24
    at Array.forEach (<anonymous>)
    at main (/Users/.../packages/foundry/script/generateTsAbis.js:93:10)
    at Object.<anonymous> (/Users/.../packages/foundry/script/generateTsAbis.js:143:3)
    at Module._compile (node:internal/modules/cjs/loader:1356:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1414:10)

Expected Behavior
No error about ast property being undefined
Steps To Reproduce

npx create-eth@latest
choose foundry
run yarn chain
run yarn start
run yarn deploy

Anything else?
Suggest the following edit to packages/foundry/script/generateTsAbis.js
function getInheritedFromContracts(artifact) {
  let inheritedFromContracts = [];
  if('ast' in artifact) {
    for (const astNode of artifact.ast.nodes) {
      if (astNode.nodeType == "ContractDefinition") {
        if (astNode.baseContracts.length > 0) {
          inheritedFromContracts = astNode.baseContracts.map(
            ({ baseName }) => baseName.name
          );
        }
      }
    }
  }
  return inheritedFromContracts;
}

Hey thanks @dragonsisdumb, for raising this

whilst deploying (without touching any of the code apart from packages/foundry/.env file to add DEPLOYER_PRIVATE_KEY)

Could please elaborate on this more? I just did :

npx create@latest => selected foundry => yes for install dependency
Manually updated DEPLOYER_PRIVATE_KEY with random private key in packages/foundry/.env
yarn chain => yarn deploy

And it working fine for me.

Suggest the following edit to packages/foundry/script/generateTsAbis.js

Thanks for this ! Nevertheless, I think it is worth adding that if(artifact.ast) , do you want to tackle this @dragonsisdumb ?
You could create an PR against cli branch, by updating this file https://github.com/scaffold-eth/scaffold-eth-2/blob/c55d25803fec3d11adf817cc87d8c04b3fcb0ad7/templates/extensions/foundry/packages/foundry/script/generateTsAbis.js#L39
Here is the contributing guide, but I think changes are straightforward, please let us know if you need any help 🙌

You could create an PR against cli branch, by updating this file

Yep, threw up a PR

Fixed at #806


SAML token can't be obtained using OBO flow on V2 endpoint

[Enter feedback here]
The section on "SAML assertions obtained with an OAuth2.0 OBO flow" should probably either removed or noted correctly.  Today you can only get a SAML token using the OBO flow on V1 endpoint.  It does not work on V2 endpoint.  See VSO Work Item 1100585 for more info.

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

ID: 3cd73bb0-f8d5-84f7-3fc5-2022f8392a20
Version Independent ID: d598130d-ba3a-0078-d4b6-1e47fad5ea41
Content: Microsoft identity platform and OAuth2.0 On-Behalf-Of flow - Microsoft identity platform
Content Source: articles/active-directory/develop/v2-oauth2-on-behalf-of-flow.md
Service: active-directory
Sub-service: develop
GitHub Login: @hpsin
Microsoft Alias: hirsin

Good catch Bac, thanks.

Closing as fixed in https://github.com/MicrosoftDocs/azure-docs-pr/pull/125349#issuecomment-670605187
Thanks @bachoang and @hpsin!
#please-close


Add hit detection on the WebGL points renderer

This PR adds a straightforward implementation for forEachFeatureAtCoordinate on the WebGL points renderer:

when the renderer rebuilds a set of render instructions (list of points with x/y, color, size etc.) it now also generates a set of hit detection instructions
these instructions are almost identical to the rendering ones, except they contain the feature unique ids (given by getUid) in the color field; this encoding is done on 4 bytes (RGBA) which allows values up to 4 billion+
the hit detection instructions are processed by the worker just like the rendering ones, where they are converted to gpu-ready buffers
on each frame, the hit detection instructions are drawn to an offscreen texture called render target; this is done using the new utility class RenderTarget, which hopefully will be self-explanatory enough
then, whenever a hit test is required, the renderer simply has to read one pixel inside this render target and decode the uid from color to get the feature from the source.
Note: the VectorSource class was modified to index all features based on their unique id; the previous behaviour was only indexing based on the id field and on the uid as a fallback

The icon-sprite-webgl example has been updated to allow inspecting features.
Caveat:

this method only works for detecting the topmost feature; there might be ways to find the other features by re-drawing the instructions while skipping the previous hits, but I'm not 100% sure it would work out well; for this use case, using a spatial index is IMO the right way to go (or do backend calls)
hitTolerance isn't supported for now

Some notes on performance:

Drawing the hit detection instructions on each frame may sound futile but it's actually pretty cheap and much simpler to make sure the hit detection render target contains the right data
The real performance hit comes from gl.readPixels which blocks the main thread to get back the rendered data from the GPU; it usually takes at least 10ms and often more than 20~30ms, and there is no way around it
The good news though is that this performance cost is fixed and not related to the amount of features :)
To accommodate for this, it is advised to avoid doing hit detection while the view is moving/animating;

Thanks for any review!

Thanks a lot for the review @ahocevar. I understand your point about encoding array index instead of uid (and hadn't realized that 4 bytes might not be enough).
Currently: color-encoded uid is used to retrieve the feature object from the source
Possibly: color-encoded array index might be used to:

read the uid from the draw instructions array (which does not have a 4 bytes limitation)? this could work but still requires the change on the vector source
or retrieve the feature from the source using source.getFeatures()[index]: this would not work as the order is not stable especially with a spatial index (unless I'm mistaken)

I guess I'll go with the first solution by encoding the feature uid in the opacity value, since it's not used for rendering. Also I'll check whether the change on the vector source leads to many more uid's being generated.

@ahocevar I've run some tests and logged the uidCounter_ values in the following examples:

icon-sprite-webgl: ~160000
earthquake-clusters: ~3400
synthetic-points: ~40000

These do not vary significantly with or without the PR. I think it's safe to move forward with the indexing change.
Also with 4340f99 the limit on how many features we can hit detect is not related to the range of generated uids any more.

I've resolved the conflicts. Could someone please give this another look? @fredj maybe? Thanks :)

Thanks a lot for taking the time to review.


Feat: support step group with substep in the workflow

Signed-off-by: Qiang Zheng<EMAIL_ADDRESS>Description of your changes
This pull request resolve the feature as https://github.com/oam-dev/kubevela/issues/3460  fixes #3460
It add a new step type step-group to execute several substeps in it with dag mode.

I have:

[x] Read and followed KubeVela's contribution process.
[x] Related Docs updated properly. In a new feature or configuration option, an update to the documentation is necessary.
[x] Run make reviewable to ensure this PR is ready for review.
[x] Added backport release-x.y labels to auto-backport this PR if necessary.

How has this code been tested
Have already test several workflow sceneries：

step-group workflow step with several apply-component type steps in it .
step-group workflow step with suspend workflow type in it.
step-group workflow step with components have dependency relationship in it
step-group workflow step with component have input and output relationship in it
step-group workflow step with substeps have dependency relationship in it

Special notes for your reviewer

please remove the tmake/test file and sign the DCO

ok

great idea and great job

Also, please fix the  failed test :)


(BUG) 9.X Module doesn't compute spell points anymore

In 9.X, it says that spell points will be consumed but fails to find the right resources and substract the amount of spell points used. There's no stack traces in the logs though.

thx  for reporting this, I'll look into this as soon as I can, this module is not yet declared compatible with 9.x anyway.

@kyleady
this is due to the fact that withActorData function is returning undefined.
`/**

Evaluates the given formula with the given actors data. Uses FoundryVTT's Roll
to make this evaluation.
@param {string|number} formula The rollable formula to evaluate.
@param {object} actor The actor used for variables.
@return {number} The result of the formula.
*/
static withActorData(formula, actor) {
let r = new Roll('(' + formula + ')', actor.data.data);
r.evaluate();
console.log('ROLL',r);
console.log('ROLL.result',r.result);
console.log('ROLL.total',r.total); //undefined
return r.total;
}`

Any progress on this? Applying kyleady's fix works, only issue is this has to be done manually as the changes haven't been pushed to a new version yet.

Patch is now published you can update directly from foundry


RTTIWindowsClassRecoverer NullPointerException

Describe the bug
Running the RecoverClassesFromRTTIScript.java script produces a NullPointerException
To Reproduce
Steps to reproduce the behavior:

Fresh Project
Auto Analyze (has PDB)
Run RecoverClassesFromRTTIScript.java
NullPointerException

Expected behavior
No exception and the script to finish successfully.
Attachments
I can't share the executable.
Environment (please complete the following information):

OS: Windows 10
Java Version: Microsoft JDK 17.0.10
Ghidra Version: 11.0.1
Ghidra Origin: official GitHub distro

Additional context
Stack trace:
java.lang.reflect.InvocationTargetException
	at ghidra.app.plugin.core.analysis.AutoAnalysisManager$AnalysisWorkerCommand.applyTo(AutoAnalysisManager.java:1732)
	at ghidra.app.plugin.core.analysis.AutoAnalysisManager$AnalysisTaskWrapper.run(AutoAnalysisManager.java:686)
	at ghidra.app.plugin.core.analysis.AutoAnalysisManager.startAnalysis(AutoAnalysisManager.java:786)
	at ghidra.app.plugin.core.analysis.AutoAnalysisManager.startAnalysis(AutoAnalysisManager.java:665)
	at ghidra.app.plugin.core.analysis.AutoAnalysisManager.startAnalysis(AutoAnalysisManager.java:630)
	at ghidra.app.plugin.core.analysis.AnalysisBackgroundCommand.applyTo(AnalysisBackgroundCommand.java:58)
	at ghidra.framework.plugintool.mgr.BackgroundCommandTask.run(BackgroundCommandTask.java:103)
	at ghidra.framework.plugintool.mgr.ToolTaskManager.run(ToolTaskManager.java:334)
	at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "classrecovery.RTTIWindowsClassRecoverer.getSingleVirtualParentOffset(classrecovery.RecoveredClass)" is null
	at classrecovery.RTTIWindowsClassRecoverer.createClassStructureUsingRTTI(RTTIWindowsClassRecoverer.java:2408)
	at classrecovery.RTTIWindowsClassRecoverer.processDataTypes(RTTIWindowsClassRecoverer.java:2257)
	at classrecovery.RTTIWindowsClassRecoverer.createAndApplyClassStructures(RTTIWindowsClassRecoverer.java:2223)
	at classrecovery.RTTIWindowsClassRecoverer.createRecoveredClasses(RTTIWindowsClassRecoverer.java:209)
	at RecoverClassesFromRTTIScript.run(RecoverClassesFromRTTIScript.java:336)
	at ghidra.app.script.GhidraScript.executeNormal(GhidraScript.java:403)
	at ghidra.app.script.GhidraScript$1.analysisWorkerCallback(GhidraScript.java:385)
	at ghidra.app.plugin.core.analysis.AutoAnalysisManager$AnalysisWorkerCommand.applyTo(AutoAnalysisManager.java:1726)
	... 8 more

It seems to be failing because of a class heirarchy 3 levels deep, with a virtual class at the root. It's a single inheritance chain.
A -> B -> C
Classes A and B have inheritsVirtualAncestor = true, with the virtual ancestor being C.
When it's recovering class A, it gets to getSingleVirtualParentOffset:
	public Integer getSingleVirtualParentOffset(RecoveredClass recoveredClass)
			throws CancelledException, MemoryAccessException, AddressOutOfBoundsException {

		List<RecoveredClass> virtualParentClasses = getVirtualParentClasses(recoveredClass);
		if (virtualParentClasses.size() != 1) {
			return NONE;
		}

		Map<RecoveredClass, Integer> parentOffsetMap = getBaseClassOffsetMap(recoveredClass);

		return parentOffsetMap.get(virtualParentClasses.get(0));

	}

getVirtualParentClasses returns a reference to class C, which is correct. But getBaseClassOffsetMap only returns class B, causing the null return value. The reason class C is not in the collection generated by getBaseClassOffsetMap is because of this code:
// Continue if the class has mult inh but base class is not on the parent list
//TODO: possibly update to include all base classes
if (!recoveredClass.getParentList().contains(baseClass)) {
	continue;
}

This filters out anything not in getParentList(), which from what I can tell is meant to be a list of direct parents and won't include ancestors, like C. Simply removing this code makes it work, class C is included in the returned collection and the calling function returns class C. It seems like it all works. The structures look correct to me in Ghidra after it's complete.
I'm new to this so there could definitely be problems with removing that code.

@llyama Thank you for the great summary. Will take a look at your suggested fix.

I'm going to use your fix as it doesn't break anything as far as I can tell either. I also added a null check where the blow up happened. I considered leaving the code as is and just doing the null check but didn't have your use-case to test on to see what the resulting structure looked like. I'd be curious to know what the structures look like in both cases if you are able to share pics of them or describe them.  I'm not too concerned as I have been refactoring that code anyway so it will be changing  in a future release.

Thanks for looking into this. The inheritance chain in my case is FXBeam : FXLightning : FX : TaskObject.
When putting in a null check the structure looks like this:

With my change:

I've only just started poking around in C++ but I've made a small program that reproduces the error. The heirarchy needs to be at least 4 levels. It fails recovering FXBeam when processing FXLightning.
#include <iostream>

struct TaskObject {
    int d = 10;
    virtual void print() {
        std::cout << d;
    }
};

struct FX : virtual TaskObject {
    int c = 20;
    virtual void print() {
        std::cout << c;
    }

    virtual void print2() {
        std::cout << c;
    }
};

struct FXLightning : FX {
    int b = 30;
};

struct FXBeam : FXLightning {
    int a = 40;
    void print()
    {
        std::cout << a;
    }

    void print2() {
        std::cout << a;
    }
};

int main()
{
    auto beam = new FXBeam();
}

Compiled version: rtti_repl.zip

Thanks!


Refresh permission list

Hello，
I have database_A and database_B. Right now I have the databse access to database_A.id:1 and database_B.id:2. I have deleted database_A but it still show I have access to database_A.id:1. In addition, I added a new database_C and the list doesn't show my access to database_C. How do I refresh my access list?
Superset version
0.29.0rc7
System
Windows
Flask version
1.0.2

[superset init] can solve this problem. thanks.


Feature/expiration

Copied over from lasair4

I ran a few tests as requested this morning. Create a filter, a watchlist, a watchmap. Save each. Duplicate each. The check_expire code seems to work OK. Uncovered a bug in the watchmap code (taimax in place of maxtai) and snuck it in. I think this is ready now.


[BUG] error code 277

Acknowledgement of preliminary instructions

[X] I have read the preliminary instructions, and I am certain that my problem has not already been addressed.

What problem did you encounter?
When I launch a game, it kicks me out of the game with a disconnection error 277 but it doesnt happen on normal Roblox app or website version.

Upload your configuration please: https://github.com/pizzaboxer/bloxstrap/wiki/Uploading-your-Bloxstrap-configuration

ClientAppSettings.json
Settings.json
State.json

You're sure this happens only with Bloxstrap?

Yes, I'm sure. I have followed every tutorial that addresses this bug, but none of them have worked. Thats why Im here.

What do you mean by "website version"?

I mean roblox.com. Bloxtrap isnt working for me rn, it keeps disconnecting me.

If this is still happening, it's almost certainly an antivirus issue that's firewalling network activity from Roblox because Bloxstrap is launching it. Check for anything that could be causing that.


(autohotkey) ERROR: The remote file either doesn't exist, is unauthorized, or is forbidden for url

Expected Behavior
choco install autohotkey should install the autohotkey package
Current Behavior
The package throws an error.
autohotkey.portable v<IP_ADDRESS> [Approved]
autohotkey.portable package files upgrade completed. Performing other installation steps.
Attempt to get headers for http://l.autohotkey.net/v/AutoHotkey111401_x64.zip failed.
  The remote file either doesn't exist, is unauthorized, or is forbidden for url 'http://l.autohotkey.net/v/AutoHotkey111401_x64.zip'. Exception calling "GetResponse" with "0" argument(s): "The underlying connection was closed: The connection was closed unexpectedly."
Downloading autohotkey.portable 64 bit
  from 'http://l.autohotkey.net/v/AutoHotkey111401_x64.zip'
ERROR: The remote file either doesn't exist, is unauthorized, or is forbidden for url 'http://l.autohotkey.net/v/AutoHotkey111401_x64.zip'. Exception calling "GetResponse" with "0" argument(s): "The underlying connection was closed: The connection was closed unexpectedly."
The upgrade of autohotkey.portable was NOT successful.
Error while running 'C:\ProgramData\chocolatey\lib\autohotkey.portable\tools\chocolateyInstall.ps1'.
 See log for details.

Steps to Reproduce (for bugs)

choco install autohotkey

Context

Your Environment

Package Version used: autohotkey.portable v<IP_ADDRESS>
Operating System and version: Windows10 Professional
Chocolatey version: chocolatey 0.10.15
Install/uninstall gist:

The GitHub releases for 1.1.14 is only available in source form
https://github.com/Lexikos/AutoHotkey_L/releases/tag/v<IP_ADDRESS>

You could upgrade the latest 1.1 series and fix the url with this:
https://github.com/Lexikos/AutoHotkey_L/releases/download/v<IP_ADDRESS>/AutoHotkey_<IP_ADDRESS>_setup.exe

Database issue on the community feed from chocolatey.org?
Why is as choco install autohotkey attempting to grab release <IP_ADDRESS>?
Looking at the the chocolatey.org community feed I see <IP_ADDRESS> is available there and looking at the .nuspec files I see they are <IP_ADDRESS>
Very confused right now

Such an old version is not supported on that package, and there isn't anything we can do about chocolatey picking an older version instead of the correct version.
Such a problem would need to be reported over at https://github.com/chocolatey/choco as it isn't a package problem.
Also, make sure that you don't have additional installation sources that contain the autohotkey package (I did notice that you showed logs from autohotkey.portable and not autohotkey, which doesn't make sense unless you have a custom autohotkey package somewhere).
As this isn't considered a package problem (at least not for a supported version), I will be closing this issue.


Access Token

Describe The Bug:
In the homekit logs Yolink plugin continually prompts that "Current access token expired, or close to expiry, request new one"
To Reproduce:
I have canceled and resigned a new access token.  The plugin seems to be working; I don't know if there is a time limit on the access token.
Logs:
[2/17/2023, 8:46:49 AM] [YoLink] YoLinkAPI.getDeviceState for Garage Door Controller (d88b4c0100059769)
[2/17/2023, 8:46:49 AM] [YoLink] At 2/17/2023, 8:46:49 AM: Device state for Garage Door Controller (d88b4c0100059769) is: Garage Door or Finger: , rc: 1
[2/17/2023, 9:22:45 AM] [YoLink] At 2/17/2023, 9:16:30 AM: Device state for Garage Door Controller (d88b4c0100059769) is: Garage Door or Finger: , rc: 1
[2/17/2023, 10:06:42 AM] [YoLink] Current access token expired, or close to expiry, request new one
[2/17/2023, 10:53:05 AM] [Ring] Reconnecting location socket.io connection
[2/17/2023, 10:53:06 AM] [Ring] Creating location socket.io connection - Bellevue
[2/17/2023, 10:53:07 AM] [Ring] Ring connected to socket.io server
[2/17/2023, 12:00:42 PM] [YoLink] Current access token expired, or close to expiry, request new one
[2/17/2023, 12:48:29 PM] [YoLink] YoLinkAPI.getDeviceState for Garage Door Controller (d88b4c0100059769)
[2/17/2023, 12:48:30 PM] [YoLink] At 2/17/2023, 12:48:30 PM: Device state for Garage Door Controller (d88b4c0100059769) is: Garage Door or Finger: , rc: 1
[2/17/2023, 1:54:42 PM] [YoLink] Current access token expired, or close to expiry, request new one
[2/17/2023, 2:36:58 PM] [YoLink] At 2/17/2023, 1:46:55 PM: Device state for Garage Door Controller (d88b4c0100059769) is: Garage Door or Finger: , rc: 1
Show the Homebridge logs here, remove any sensitive information.

Plugin Config:
{
    "bridge": {
        "name": "Homebridge E919",
        "username": "0E:61:C8:AE:C4:54",
        "port": 51022,
        "pin": "353-23-115",
        "advertiser": "bonjour-hap",
        "bind": [
            "bond0"
        ]
    },
    "accessories": [
        {
            "name": "Alarm Arm",
            "stateful": false,
            "reverse": false,
            "time": 5000,
            "random": false,
            "resettable": true,
            "disableLogging": false,
            "accessory": "DummySwitch"
        },
        {
            "name": "Alarm Disarm",
            "stateful": false,
            "reverse": false,
            "time": 5000,
            "random": false,
            "resettable": true,
            "disableLogging": false,
            "accessory": "DummySwitch"
        },
        {
            "name": "Alarm Home",
            "stateful": false,
            "reverse": false,
            "time": 5000,
            "random": false,
            "resettable": true,
            "disableLogging": false,
            "accessory": "DummySwitch"
        },
        {
            "name": "Door Lock",
            "stateful": false,
            "reverse": false,
            "time": 5000,
            "random": false,
            "resettable": true,
            "disableLogging": false,
            "accessory": "DummySwitch"
        },
        {
            "name": "Door Unlock",
            "stateful": false,
            "reverse": false,
            "time": 5000,
            "random": false,
            "resettable": true,
            "disableLogging": false,
            "accessory": "DummySwitch"
        }
    ],
    "platforms": [
        {
            "name": "Config",
            "port": 8581,
            "auth": "form",
            "theme": "auto",
            "tempUnits": "f",
            "lang": "auto",
            "platform": "config"
        },
        {
            "refreshToken": "
            "unbridgeCameras": true,
            "alarmOnEntryDelay": true,
            "hideLightGroups": true,
            "hideCameraLight": true,
            "hideCameraMotionSensor": true,
            "hideCameraSirenSwitch": true,
            "hideInHomeDoorbellSwitch": true,
            "hideAlarmSirenSwitch": true,
            "avoidSnapshotBatteryDrain": true,
            "hideDeviceIds": [
                "1f7b240f-91c9-4161-b1b9-01cd8e82faa8",
                "d3d60a19-fa97-42c2-bcf8-16a51695f47c",
                "bff9a42f-730a-4a9e-87eb-5d9499063049",
                "31be1c70-7056-4ebc-bbe8-b522c20a8c76",
                "13225b17-1709-4ca9-ab61-6aecae023a5d",
                "15845ac0-86ea-4fca-a59b-d0572053fea7",
                "2b48ce09-a985-4fed-8c52-24d4752eb419"
            ],
            "platform": "Ring"
        },
        {
            "name": "SwitchBot",
            "credentials": {
                "token": "
            },
            "options": {
                "devices": [
                    {
                        "deviceId": "EE9455243CEC",
                        "configDeviceName": "Building Door",
                        "hide_device": false,
                        "configDeviceType": "Bot",
                        "connectionType": "OpenAPI",
                        "bot": {
                            "mode": "press",
                            "deviceType": "door",
                            "allowPush": false,
                            "doublePress": 1
                        },
                        "refreshRate": 1500,
                        "external": true
                    }
                ],
                "refreshRate": 1500
            },
            "_bridge": {
                "username": "0E:ED:B6:1C:E3:6F",
                "port": 39720
            },
            "platform": "SwitchBot"
        },
        {
            "name": "YoLink",
            "platform": "YoLink",
            "tokenURL": "https://api.yosmart.com/open/yolink/token",
            "apiURL": "https://api.yosmart.com/open/yolink/v2/api",
            "mqttPort": 8003,
            "userAccessId": "ua_**",
            "secretKey": "sec_**",
            "refreshAfter": 14500,
            "verboseLog": false,
            "liteLog": true,
            "allDevices": true,
            "excludeTypes": [
                "Hub",
                "SpeakerHub"
            ],
            "enableExperimental": false,
            "garageDoors": [
                {
                    "controller": "d88b4c0100059769",
                    "sensor": "d88b4c0100058a5b",
                    "timeout": 15
                }
            ],
            "_bridge": {
                "username": "0E:4B:73:D5:3E:28",
                "port": 51979
            }
        }
    ]
}

Screenshots:

Environment:

Plugin Version: v1.3.3
Homebridge Version: v4.50.2
Node.js Version: v16.19.0
NPM Version:
Operating System: Synology DSM

This is working as expected.  The access token is valid for 2 hours.  The plugin must request a new token at least every two hours.  The plugin tries to do this shortly before the 2 hours is up so that it does not get an error when making a request just after two hours, so it always has a valid token.  This activity is logged for informational purposes (reassurance that things are still working).


rawValue does not work recursively

When calling rawValue on a FormGroup, it's not working recursively when dealing with disabled fields in sub groups.
I use rawValue, because I have some disabled fields that are fetched from an external source, but should not be editable by the user, but they should be included in the resulting value - or in fact rawValue.
Example Code:
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:reactive_forms/reactive_forms.dart';

var _form = FormGroup({
  "C1": FormControl(value: "1"),
  "C2": FormControl(disabled: true, value: "2"),
  "G1": FormGroup({
    "C11": FormControl(value: "11"),
    "C12": FormControl(disabled: true, value: "12"),
  }),
});

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  MyApp({super.key});

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'RawValueTest',
      home: ReactiveForm(
        formGroup: _form,
        child: Card(
          child: Column(
            children: [
              ReactiveTextField(formControlName: "C1"),
              ReactiveTextField(formControlName: "C2"),
              ReactiveTextField(formControlName: "G1.C11"),
              ReactiveTextField(formControlName: "G1.C12"),
              ElevatedButton(
                  onPressed: printForm, child: const Text("Print...")),
            ],
          ),
        ),
      ),
    );
  }

  void printForm() {
    if (kDebugMode) {
      print("value: ${_form.value}");
      print("rawValue: ${_form.rawValue}");
    }
  }
}

The output is actually:
flutter: value: {C1: 1, G1: {C11: 11}}
flutter: rawValue: {C1: 1, C2: 2, G1: {C11: 11}}

The expected output is:
flutter: value: {C1: 1, G1: {C11: 11}}
flutter: rawValue: {C1: 1, C2: 2, G1: {C11: 11, C12: 12}}

As a workaround I wrote a (not very clean) method for that and used a few bits of the original rawValue code, but it would be better if it worked out of the box:
getRealRawValue(AbstractControl formGroup) {
    if (formGroup is FormGroup) {
      return formGroup.controls.map<String, Object?>(
          (key, control) => MapEntry(key, getRealRawValue(control)));
    } else {
      return formGroup.value;
    }
}

Hi @yoktobit,
The new version 16.0.3 was released, and it fixed this issue.
Can you give it a look whenever you have time?
I will close this issue but please don't hesitate to open it again or create another one if you have more questions.


Unable to uninstall server

/jira instance list returns

but when I do /jira uninstall server https://jira.jpsc.intern, I get

I can not find a way to remove this server (the URL is no longer online), and thus can not connect to a new (cloud) instance in the mattermost free version.
Enabling/Disabling the plugin or uninstalling/reinstalling does not help.

Did you try
/jira instance uninstall server https://jira.jpsc.intern

Did you try
/jira instance uninstall server https://jira.jpsc.intern

Yes, I get the error message shown above.

Maybe @DHaussermann or @mickmister can help on this one.

Funnily enough, I also can't unalias it:
jira unalias https://jira.jpsc.intern
jira instance list
gives

Maybe there is an easy way to reset the entire jira plugin?

@Hottemax There's currently no way to forcibly reset the plugin, other than doing manual database queries to remove entries of the PluginKeyValueStore table, which I don't recommend due to the risks of messing with data integrity.
I'm not sure how your instance got into its current state. We'll do some investigation to try and gather some data about this.

@mickmister I have tried to reproduce this error by installing the local Jira server, stopping the server, and then trying to uninstall it. It worked fine for me. Same with alias and unalias command. Can you tell me the steps to reproduce the error and further information to fix it?

@Kshitij-Katiyar Unfortunately it's not clear what the steps are to reproduce. I would say that we need to figure out how a given instance can simultaneously:

show in the instance list command's output
and show the "not found" error in the instance list command's output

What code paths allow for this to occur?

@mickmister I am able to reproduce this issue.

In the /jira instance list command there are mainly 2 function calls that interact with the plugin KV store:-

LoadInstances - This will return the list of instances installed for the plugin.
2)LoadInstance - This will take an instance_id and return the instance based on that id.

In the list command, they first call the LoadInstances function to get the list of instances. Then iterate over the keys of all the instances installed and call the LoadInstance method for each key.
So this error is coming from the LoadInstance method mainly due to the fact that during installation or by some other method the Key-Value pair for this particular instance got deleted from the plugin store with key jira_instance_<hashkey> but the instance_id is still present in the array of Instances returned by LoadInstances method.
So whenever this LoadInstance method is getting called with this instance_id as the argument not found error will be returned. Same is the case with /jira instance unalias command as this also calls the LoadInstance method.
Steps to reproduce the issue:-

Install the Jira server /jira instance install server <url> command.
Copy the hash key from the server logs. Example jira_instance_<hashkey>
Add an alias for the server using /jira instance alias command.
Delete the entry for key copied above from plugin store (Can be done using pluginAPI method or directly from DB).
Run /jira instance list command.

Please give your views and suggestions on this.

Delete the entry for key copied above from plugin store (Can be done using pluginAPI method or directly from DB).

@Kshitij-Katiyar What is your theory for how @Hottemax got his plugin in its current state, and how can we remedy the situation using changes to the source code?
He is wanting to uninstall a Jira instance but the plugin is allowing him to do so because it says it can't find the instance

@mickmister I think the solution for this could be that when we are uninstalling an instance if it is not found in the KV store. Then we can also check the array of instances installed if it is present there we can delete that entry and I think this would help us in maintaining the consistency between the instances installed array and the KV store.

What is your theory for how @Hottemax got his plugin in its current state
My Theory is the functions storeInstance and storeInstances both get called if we want to alias an instance. Maybe while running that command there could be some error that prevented it to be stored in KVstore.

@Kshitij-Katiyar Okay that all sounds good to me :+1:


Save the actual http response in an instance attribute

We have some use cases in our team (Inspire at CERN) where we need some introspection on the actual response (the response coming from the Python HTTP requests library).
Introspections about status codes, request and response content, error-code field in the response content, etc.

I am wondering how to run the tests: I defined all the required OS vars (CLIENT_KEY, CLIENT_SECRET, USER_PASSWORD, USER_EMAIL, REDIRECT_URL, USER_ORCID) but tests like test_read_record_member_xml fail because there is no work for the user I have just created. Any suggestion?

Ok I wrote some basic tests

Yes, in case of exception the client code has access to the requests' exception and thus the actual response and request.
I would like to have that access also in case of success.
My current use case is to know the HTTP status code in the response. You suggest to assume that it is a 200 when no exception is raised. But that's not enough: request.raise_for_status() raises for 4xx and 5xx status codes. There is a list of 2xx and 3xx status codes that might result in a successful response, not just 200.
Other use cases I might be interested when debugging is having access to the response headers (for caching, authorization, access control, last modified, ...) or even the request headers/content.
And finally, the code change is just about replacing response to self.response, so having the response part of the public interface of that object. It's a small change that enables the features I mentioned.

OK, I found a bit of time to review. First of all, thanks for the PR, I agree that such functionality is useful.
However, I see some things to improve. First of all, the _authenticate method performs two requests to ORCID. With this PR, the developer is unable to get the first response. Thus, the feature is not implemented for the whole library.
Moreover, I'm not sure if by default this feature should be turned on. If the response from the server is heavy, the software that uses this wrapper will not be able to release the memory unless another request is performed or the wrapper is released. Usually, API wrappers do not implement this feature at all! (see https://github.com/mobolic/facebook-sdk/blob/5d6e78fe26e2e10ebbf06628c20a9f9eb3b50062/facebook/init.py#L259 and https://github.com/bear/python-twitter/blob/b2af803a8354cadcc646fe6507fb744d828ff693/twitter/api.py#L309)
It turns out it is not that easy to make this optional seamlessly. I see two solutions that I demonstrate on a toy class
1).
class WithSavedResponse:

    def __init__(self, save_last_response=False):
        self.save_last_response = save_last_response
        self._last_response = None

    def set_last_response(self, value):
        if self.save_last_response:
            self._last_response = value

    def get_last_response(self):
        if self.save_last_response:
            return self._last_response
        else:
            raise AttributeError("The save last response option was not chosen. Last response not available")

    last_response = property(get_last_response, set_last_response)

    def function(self):

        response = 'content returned by api'
        self.last_response = response

        return response[1]

w = WithSavedResponse()
try:
    w.last_response
except AttributeError:
    print("caught")
w = WithSavedResponse(save_last_response=True)
print(w.last_response is None)
res = w.function()
print(w.last_response == 'content returned by api')
print(res == 'o')

2).
import inspect

def remove_last_response(fn):

    def wrapper_func(*args, **kwargs):
        retval = func(*args, **kwargs)
        del self.last_response
        return retval

    return wrapper_func

class WithSavedResponse:

    def __init__(self, save_last_response=False):
        if not save_last_response:
            for attr in inspect.getmembers(self, inspect.isroutine):
                function_name = attr[0]
                if (
                        function_name[:2] != '__'
                        and function_name[:-2] != '__'
                        and callable(getattr(self, function_name))
                ):
                    # No builtins allowed here
                    setattr(self, attr[0], remove_last_response(getattr(self, function_name)))
        else:
            self.last_response = None

    def function(self):

        self.last_response = 'content returned by api'
        return self.last_response[1]

w = WithSavedResponse()
try:
    w.last_response
except AttributeError:
    print("caught")
w = WithSavedResponse(save_last_response=True)
print(w.last_response is None)
res = w.function()
print(w.last_response == 'content returned by api')
print(res == 'o')

One of them requires additional line for every response, the other requires using inspect library that is not considered nice. I would say that option 1). is better, but there might be something smarter that would work better.

I see your point about the design of popular API that do not offer this feature.

Still I believe it should be available. I really like the solution of elasticsearch wrapper. Note that the response is not saved - the relevant fields from request are returned to the user. Unfortunately we can't use this solution due to backcompability.

So the memory footprint is not significatly affected by this code change

I would argue against it. Obviously as we deal with text, the footprint is not measured in GBs. But the library should not be an obstacle if sb wanted to write a software where downloading data from ORCID is a part of a large pipeline spawned in hundreds of processes. Then you can write code like:
class Pipeline:
    def __init__(self, arg1, arg2):
        self.api = orcid.memberAPI(arg1, arg2)

    def run_pipeline(self):
        small_info = self.get_data_from_orcid()
        self.run_time_consuming_code(small_info)

    def get_data_from_orcid(self):
        small_info = orcid.something()['somekey']
        return small_info
    ...

I am not sure what is the behaviour of the API now, but back when version 1.2 of API was used, in case of downtimes, an HTML page with significant amount of JS code in it was returned as content for any request.

I'd love to have this feature optnional, but given that this would mean to complicate the code a lot, I'd prefer to have this as default behavior.

Sometimes API object is released just after it was used (and probably it's the case of INSPIRE) but in many cases it is not the natural way to write the code. Actually, one does not expect from a wrapper to store any data that is not required for the communication (unlike the token). If the feature is optional and documented in README, developer who uses the library will be aware of this behaviour. Otherwise he stumbles upon a weird behaviour he might need/want to debug.
I would say in this case it's better to add few more lines in the code in order to provide the user with expected behaviour. Actually I see one more solution:
from contextlib import contextmanager

@contextmanager
def catch_response(instance):
    instance.save_last_response = True
    yield
    instance.save_last_response = False
    instance._last_response = None

class WithSavedResponse:

    def __init__(self):
        self.save_last_response = False
        self._last_response = None

    def set_last_response(self, value):
        if self.save_last_response:
            self._last_response = value

    def get_last_response(self):
        if self.save_last_response:
            return self._last_response
        else:
            raise AttributeError("Last response is only availabe within")

    last_response = property(get_last_response, set_last_response)

    def function(self):

        response = 'content returned by api'
        self.last_response = response

        return response[1]

w = WithSavedResponse()
try:
    w.last_response
except AttributeError:
    print("caught")

with catch_response(w):
    res = w.function()
    print(w.last_response == 'content returned by api')
print(res == 'o')
print(w._last_response == None)
try:
    w.last_response
except AttributeError:
    print("caught")

And about the _authenticate() method, this method performs 2 operations: asking for the authorization code and logging in using the end-user's credentials. I suggest to either remove self.response in this method entirely or to store only the authorization code call's response.

OK, I fully agree. Probably the most consistent behaviour is to store only the request from get_token_from_authorization_code that is called in _authenticate. I assume that's what you meant by removing self.response entirely.
As the discussion is getting longer: Is there a chance that what you want to achieve within INSPIRE would be a good functionality for this library? Maybe the response does not have to be saved if the handling can be done within this codebase.

All right. I made this feature optional, I found a simple way with kwarg in the client constructor.
So this client would have the feature disabled:
orcid.PublicAPI(institution_key, institution_secret)

while this one would have it enabled:
orcid.PublicAPI(institution_key, institution_secret, do_store_raw_response=True)

@turtle321 1.0.3 was released. It includes this PR.


Update restlet URL.

Current URL fails on mvn install giving error
[ERROR] Failed to execute goal on project unitime: Could not resolve dependencies for project org.unitime:unitime:jar:4.7: Failed to collect dependencies at org.restlet.jse:org.restlet:jar:2.3.12: Failed to read artifact descriptor for org.restlet.jse:org.restlet:jar:2.3.12: Could not transfer artifact org.restlet.jse:org.restlet:pom:2.3.12 from/to maven-restlet (https://maven.restlet.org): Transfer failed for https://maven.restlet.org/org/restlet/jse/org.restlet/2.3.12/org.restlet-2.3.12.pom: PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed: NotAfter: Fri Dec 16 18:19:29 UTC 2022 -> [Help 1]

The current location of the repository seems to be maven.restlet.talend.com, which is what I changed the link to in the pom.xml. With the change, mvn install works without problems.

Good catch -- I was not aware of the URL change for the Restlet repository.
To be able to accept the pull request, we need you to have the Contributor License Agreement (CLA) signed with the Apereo Foundation -- see www.apereo.org/licensing/agreements for more details.

I signed it last night!
On Tue, Jan 3, 2023, 10:21 Tomáš Müller @.***> wrote:

Good catch -- I was not aware of the URL change for the Restlet repository.
To be able to accept the pull request, we need you to have the Contributor
License Agreement (CLA) signed with the Apereo Foundation -- see
www.apereo.org/licensing/agreements for more details.
—
Reply to this email directly, view it on GitHub
https://github.com/UniTime/unitime/pull/127#issuecomment-1369892959, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ADMMBFPUSGPV4LUW624ZTT3WQQ7XXANCNFSM6AAAAAATPI6EZU
.
You are receiving this because you authored the thread.Message ID:
@.***>

Ok, thanks. I will merge the request once you are on the list of completed CLAs.

Merged in commit b86b5b0.


Issue1542

#1542
It looks like python 3.12 changes the calling pattern for multiple inheritance.

3.9 now failed the tests? It is insane how Python is updated so frequently and have all these compatibility issues! Even R does not do this to its users.

Yes, got python 3.10, 3.11, and 3.12 working, but 3.9 fails. The problem is that I used some private functions of pathlib in order to subclass pathlib.Path, and things got broken when this library was updated.
Let me see what is going on with 3.9.

The problem with python 3.9 is related to remote execution of tasks, which is quite puzzling, I do not have time to further investigate this issue and will leave it for later. You can make use of this branch if you are in a hurry.

Thank you @BoPeng . We typically use conda distributed packages to setup our containers automatically but for now we can try to install from this branch.

@BoPeng another idea is that we drop support ot python 3.9 and lower. We require it 3.10 and up?


dialog: texture browser

I was gonna try working on this, I have no clue where the Opaque/Translucent/Error/etc icons are located, anyone got them or should I just screenshot and crop them?

You can just use placeholders and leave TODOs for the person who hooks it up to hammer

We've come to the conclusion that this is best for an engine developer to recreate. There's a lot of backend code that needs to get written for this type of widget, the UI design is a relatively small part of that.


[PREGEL] APM-538 add reporting for running state observables

Report observables in running state per gss.

TODO merge parent first


Release 0.1.0

Codecov Report

Merging #7 (b47e574) into master (8c4e356) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master       #7   +/-   ##
=======================================
  Coverage   82.57%   82.57%
=======================================
  Files          12       12
  Lines         574      574
=======================================
  Hits          474      474
  Misses        100      100

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 8c4e356...b47e574. Read the comment docs.


Fix Python 3.13 dynamic linking (when not using stable ABI)

Vim is importing a private Python symbol _PyObject_NextNotImplemented because it used to be required as part of the PyIter_Check() macro in an abstraction breaking way. Python eventually fixed the issue and in 3.13 it removed the private symbol export, which broke Vim. Simply remove importing this private symbol in newer Python versions as it's no longer needed for PyIter_Check to work.
Fix #15457

For reference, Python fixed the reliance on the private symbol in 3.10 in https://github.com/python/cpython/commit/cc54001c2eb3b14320c1667b22602d69c90d5865.
Then in 3.13 they removed the export of the private symbol (https://github.com/python/cpython/commit/1e501122876f7e6abf979fdb756d7edd0d924ba1) which was what's causing Vim to break.


[UIFlow 2.0] [JP] Hardware-IMU (additional)

Additional translation the "IMU" in UIFlow 2.0 under the Hardware category into Japanese.

Translation has finished.


Error waiting for a debug connection: The log reader stopped unexpectedly, or never started.

hi ! I got this error when trying to launch my app on windows
I´m on windows 10 pro  64bits  version
Error waiting for a debug connection: The log reader stopped unexpectedly, or never started.
Error launching application on Windows.
[√] Flutter (Channel stable, 2.10.1, on Microsoft Windows [versÃ£o 10.0.19044.1526], locale pt-BR)
• Flutter version 2.10.1 at C:\Users\Cyborg\Documents\flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision db747aa133 (12 days ago), 2022-02-09 13:57:35 -0600
• Engine revision ab46186b24
• Dart version 2.16.1
• DevTools version 2.9.2
[√] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)
• Android SDK at C:\Users\Cyborg\AppData\Local\Android\sdk
• Platform android-32, build-tools 32.1.0-rc1
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 11.0.11+9-b60-7590822)
• All Android licenses accepted.
[√] Chrome - develop for the web
• Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe
[√] Visual Studio - develop for Windows (Visual Studio Community 2022 17.1.0)
• Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
• Visual Studio Community 2022 version 17.1.32210.238
• Windows 10 SDK version 10.0.22000.0
[√] Android Studio (version 2021.1)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin can be installed from:
https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 11.0.11+9-b60-7590822)
[√] VS Code (version 1.64.2)
• VS Code at C:\Users\Cyborg\AppData\Local\Programs\Microsoft VS Code
• Flutter extension version 3.34.0
[√] Connected device (3 available)
• Windows (desktop) • windows • windows-x64    • Microsoft Windows [versÃ£o 10.0.19044.1526]
• Chrome (web)      • chrome  • web-javascript • Google Chrome 98.0.4758.102
• Edge (web)        • edge    • web-javascript • Microsoft Edge 98.0.1108.56
[√] HTTP Host Availability
• All required HTTP hosts are available
• No issues found!

Duplicate of https://github.com/flutter/flutter/issues/97086 since this is related to VS 2020 17.1.0 about not being able to flutter run

Closing based on the above comment


Unexpected extra nodes

use petgraph::Graph;

fn main() {
    let gr = Graph::<i32, ()>::from_edges(&[(2, 3)]);
    assert_eq!(gr.node_count(), 2);
}

thread '<main>' panicked at 'assertion failed: `(left == right)` (left: `4`, right: `2`)', src/main.rs:7

Looks like nodes 0 and 1 are implicitly added.
Is this a bug, or a feature?
If a feature then it's one that I found surprising.  Did I miss something in the documentation?

It's a feature. Node indices for Graph are a compact range (no holes) from 0 to n - 1 (inclusive) where n is the number of nodes. doc

Aha, the "2" and "3" are only node indices, not actual Ns.  I see.
Working As Designed then.
Is there a way to do what I was hoping to do: which is to construct a graph by adding edges between Ns and having the library automatically add new nodes as it sees them?  Or must I do some preliminary work myself to build up my own map of node -> node index, and then construct the graph only in terms of node indices?
Either way, please feel free to close out the issue.

Graph is the primary type in petgraph, and it doesn't have a helper for that; I've contemplated adding one (a GraphBuilder), since it's so common.


Allow done-ssr timeouts to exit the processs cleanly

Debugging timeouts can be tricky, and having the option to exit the process cleanly would be helpful for logging and also to allow redundant processes to take over future calls to done-ssr.
Something like this: if (option.exitOnTimeout) process.exit(1) after line:
https://github.com/donejs/done-ssr/blob/1e06c8a0b66844994e5ae1e64f86b6b5f08bc02f/lib/ssr-stream.js#L112
This would also require adding exitOnTimeout to the options object/docs.
@MarcGodard please add any notes you may have from your recent issues that might be helpful here - thank you!

I have reduced the timeout from happening, however, once it does happen, I notice memory starts leaking. So exiting would be best as the app isn't in a stable condition.

The version: "done-ssr-middleware": "^3.0.1-1" has been very successful. Please let me know when this is merged into the lib.


Roll engine b23138c3598e..7e6974ff0c1b (3 commits)

https://github.com/flutter/engine/compare/b23138c3598e...7e6974ff0c1b
git log b23138c3598e..7e6974ff0c1b --first-parent --oneline
2020-03-15<EMAIL_ADDRESS>Roll fuchsia/sdk/core/linux-amd64 from 6ds94... to S9xSp... (flutter/engine#17164)
2020-03-15<EMAIL_ADDRESS>Roll src/third_party/skia 7e0a7dbd22e0..9a4ac6e86586 (1 commits) (flutter/engine#17163)
2020-03-15<EMAIL_ADDRESS>Update the Metal backend selection to use iOS 10.0 and A7 as the version floor. (flutter/engine#17162)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC<EMAIL_ADDRESS>on the revert to ensure that a human
is aware of the problem.
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

Commit queue failed; closing this roll.


I can't find the loss function Lcontrast mentioned in the paper in file loss helper.py, could you please explain？

Please check starting from this: https://github.com/charlesyou999648/MONA/blob/866fd8b248cbccbbfd45f03bf0706b263d304137/code/loss_helper.py#L689.


multi-language support

we'd like to translate the docs into multiple languages

yay! some relevant docs from vuepress: https://vuepress.vuejs.org/guide/i18n.html

Hey Guys,
I do not know if someone already did that but I am available to help with the translation in French of the documentation.
JM

@jeamick no one has done a French translation yet. That would be great if you could help with that! Thank you.

hey @outkaj is there a branch or a structure to start to contribute for translating the docs ?
What are the parts that most people are using ?
No problem :)

@jeamick thanks for offering to help out with a French translation. Let us get back to you on which sections to start on. We're in the process of reorganzing and updating content so want to make sure that's set first.


OBSERVED_INTERVENTION has 10 fewer days in timeseries

If you fetch:

https://data.covidactnow.org/snapshot/208/us/states/ME.NO_INTERVENTION.timeseries.json
https://data.covidactnow.org/snapshot/208/us/states/ME.OBSERVED_INTERVENTION.timeseries.json

The NO_INTERVENTION one starts on 2020-03-03 but the OBSERVED_INTERVENTION one starts on 2020-03-13.
I don't know why they're different or which one is "right", but presumably all the API endpoints should give the same date range.

I wonder if this is because of the different inference techniques - i.e "no intervention" used the traditional backfilling while "Observed intervention" uses the new backfilling technique (what should we call that?),
with snapshot 231 (where they both use the new technique), they start on the same date (3/7 for some reason)

Oh, cool, thanks!  I should have checked 231.  I'll go ahead and close this then.  Though I am still a bit curious exactly where that start date is coming from and if we should be a bit more deliberate about it (since it's theoretically part of our API contract).


Open channel

aligned open_channel implementation with the ldk-bdk samples reference implementation.
enhanced the get_balance api for an on_chain and off_chain balance. Note, I simply subtracted the off_chain from the on_chain balance. This might not be necessary once the open_channel is working correctly. (I thought it did at that point 🙈)
allowed for manual enter of P2P external endpoint and channel capacity (nothing fancy)

Somehow the channels don't get opened anymore, although I was sure it was working after 1677a5269a26674a7d1de753a019fe01743b6880.
I think the following log message on the counterparty may be the reason. The taker node is not reachable from the counterparty. Although I am not sure why this is the case in my local network (it is realistic though in a real world scenario)
2022-11-12 07:45:42.943 DEBUG [lightning::ln::channelmanager:6061] Marking channels with 038a567aefaeba8cca6156ed1b4e46038af2138929a8ced9e86dcfb539be0ee689 disconnected and generating channel_updates. We believe we can make future connections to this peer.

Some notes from my debugging.

ldk-bdk sample node to another ldk-bdk sample node seems to be working, however I've never seen an onchain transaction supporting the opened channel.
It looks like the taker node (mobile device) is not reachable from the counter party. Although I am not sure why this is the case in my local network (it is realistic though in a real world scenario) - It might be the reason though why the channel does not get opened through our app.

2022-11-12 07:45:42.943 DEBUG [lightning::ln::channelmanager:6061] Marking channels with 038a567aefaeba8cca6156ed1b4e46038af2138929a8ced9e86dcfb539be0ee689 disconnected and generating channel_updates. We believe we can make future connections to this peer.

Peer connection from the taker gets listed on the counter party node - so the connection is definitely established.

would you mind splitting this PR up? the first commit can probably go in as-is to fix our problems (and then we can maybe we could pair up to align on Balance changes ?)

One step close d95c95655e7737afda0046b01c1c0308ec6d8e06. thread handles got dropped immediately after init wallet function completed, hence no incoming messages could be processed (tcp handle) and the background processor (also starts a thread) did not process any events, etc.
However opening a channel soley through the app is still not working as the counter party (maker) is not able to connect to the phone (taker) upon channel creation. see (maker) logs below.
2022-11-14 10:50:58.027 DEBUG [lightning::ln::peer_handler:1111] Finished noise handshake for connection with 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d
2022-11-14 10:50:58.027 TRACE [lightning::ln::peer_handler:980] Enqueueing message Init { features: [162, 81, 10, 8, 128, 160, 8], remote_network_address: None } to 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d
2022-11-14 10:50:58.029 INFO  [lightning::ln::peer_handler:1239] Received peer Init message from 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d: DataLossProtect: supported, InitialRoutingSync: not supported, UpfrontShutdownScript: supported, GossipQueries: supported, VariableLengthOnion: required, StaticRemoteKey: required, PaymentSecret: required, BasicMPP: supported, Wumbo: supported, ShutdownAnySegwit: supported, OnionMessages: supported, ChannelType: supported, SCIDPrivacy: supported, ZeroConf: supported, unknown flags: none
2022-11-14 10:50:58.029 DEBUG [lightning::ln::channelmanager:6116] Generating channel_reestablish events for 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d
2022-11-14 10:50:58.030 TRACE [lightning_background_processor:520] Persisting ChannelManager...
2022-11-14 10:50:58.031 TRACE [lightning::ln::peer_handler:980] Enqueueing message GossipTimestampFilter { chain_hash:<PHONE_NUMBER>33ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943, first_timestamp:<PHONE_NUMBER>, timestamp_range:<PHONE_NUMBER> } to 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d
2022-11-14 10:50:58.069 TRACE [lightning_background_processor:520] Done persisting ChannelManager.
2022-11-14 10:51:05.846 DEBUG [lightning::ln::peer_handler:2035] Broadcasting NodeAnnouncement after passing it to our own RoutingMessageHandler.
2022-11-14 10:51:07.712 TRACE [lightning::ln::channelmanager:5716] New best block:<PHONE_NUMBER>0059fdf1f7475c15558296210223624395c5144d0e46ac202c7e3b at height 2406224
2022-11-14 10:51:07.713 TRACE [lightning_background_processor:520] Persisting ChannelManager...
2022-11-14 10:51:07.713 DEBUG [lightning::chain::chainmonitor:537] New best block<PHONE_NUMBER>0059fdf1f7475c15558296210223624395c5144d0e46ac202c7e3b at height 2406224 provided via best_block_updated
2022-11-14 10:51:07.733 TRACE [lightning_background_processor:520] Done persisting ChannelManager.
2022-11-14 10:51:12.110 TRACE [lightning_background_processor:520] Calling ChannelManager's timer_tick_occurred
2022-11-14 10:51:16.301 TRACE [lightning_background_processor:520] Calling PeerManager's timer_tick_occurred
2022-11-14 10:51:16.301 TRACE [lightning::ln::peer_handler:980] Enqueueing message Ping { ponglen: 0, byteslen: 64 } to 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d
2022-11-14 10:51:16.716 TRACE [lightning_background_processor:520] Persisting scorer
2022-11-14 10:51:37.696 TRACE [lightning::ln::channelmanager:5716] New best block:<PHONE_NUMBER>0059fdf1f7475c15558296210223624395c5144d0e46ac202c7e3b at height 2406224
2022-11-14 10:51:37.698 TRACE [lightning_background_processor:520] Persisting ChannelManager...
2022-11-14 10:51:37.698 DEBUG [lightning::chain::chainmonitor:537] New best block<PHONE_NUMBER>0059fdf1f7475c15558296210223624395c5144d0e46ac202c7e3b at height 2406224 provided via best_block_updated
2022-11-14 10:51:37.724 TRACE [lightning_background_processor:520] Done persisting ChannelManager.
2022-11-14 10:51:45.486 TRACE [lightning::ln::peer_handler:1835] Handling disconnection of peer 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d, with future connection to the peer possible.
2022-11-14 10:51:45.486 DEBUG [lightning::ln::channelmanager:6061] Marking channels with 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d disconnected and generating channel_updates. We believe we can make future connections to this peer.

If however, I initiate a connection from the counter party (maker) to the phone (taker)
> connectpeer 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d@<IP_ADDRESS>:9735
SUCCESS: connected to peer 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d
> listpeers
	{
		 pubkey: 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d
	},

and create a channel afterward through the 10101 app. The channel gets opened successfully.
> listchannels
[
	{
		channel_id: 371a1657559bcc1e92e2876a08d18daa7f8216821c5c86990d3da1e95f60420e,
		funding_txid: 0e42605fe9a13d0d99865c1c8216827faa8dd1086a87e2921ecc9b5557161a37,
		peer_pubkey: 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d,
		is_channel_ready: false,
		channel_value_satoshis: 21000,
		local_balance_msat: 0,
		channel_can_send_payments: false,
		public: false,
	},
]

see (maker) logs below
2022-11-14 10:58:47.011 TRACE [lightning::ln::peer_handler:980] Enqueueing message Init { features: [162, 81, 10, 8, 128, 160, 8], remote_network_address: None } to 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d
2022-11-14 10:58:47.013 INFO  [lightning::ln::peer_handler:1239] Received peer Init message from 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d: DataLossProtect: supported, InitialRoutingSync: not supported, UpfrontShutdownScript: supported, GossipQueries: supported, VariableLengthOnion: required, StaticRemoteKey: required, PaymentSecret: required, BasicMPP: supported, Wumbo: supported, ShutdownAnySegwit: supported, OnionMessages: supported, ChannelType: supported, SCIDPrivacy: supported, ZeroConf: supported, unknown flags: none
2022-11-14 10:58:47.014 DEBUG [lightning::ln::channelmanager:6116] Generating channel_reestablish events for 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d
2022-11-14 10:58:47.014 TRACE [lightning_background_processor:520] Persisting ChannelManager...
2022-11-14 10:58:47.014 TRACE [lightning::ln::peer_handler:980] Enqueueing message GossipTimestampFilter { chain_hash:<PHONE_NUMBER>33ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943, first_timestamp:<PHONE_NUMBER>, timestamp_range:<PHONE_NUMBER> } to 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d
2022-11-14 10:58:47.068 TRACE [lightning_background_processor:520] Done persisting ChannelManager.
2022-11-14 10:59:02.232 TRACE [lightning_background_processor:520] Calling PeerManager's timer_tick_occurred
2022-11-14 10:59:02.232 TRACE [lightning::ln::peer_handler:980] Enqueueing message Ping { ponglen: 0, byteslen: 64 } to 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d
2022-11-14 10:59:02.241 TRACE [lightning::ln::peer_handler:1283] Received message Pong(Pong { byteslen: 0 }) from 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d
2022-11-14 10:59:02.857 TRACE [lightning_background_processor:520] Persisting scorer
2022-11-14 10:59:05.851 DEBUG [lightning::ln::peer_handler:2035] Broadcasting NodeAnnouncement after passing it to our own RoutingMessageHandler.
2022-11-14 10:59:07.699 TRACE [lightning::ln::channelmanager:5716] New best block:<PHONE_NUMBER>00004477a4cf53f2f27ef34a1cf5b0cc396a9564148e2121f41085 at height 2406225
2022-11-14 10:59:07.700 DEBUG [lightning::chain::chainmonitor:537] New best block<PHONE_NUMBER>00004477a4cf53f2f27ef34a1cf5b0cc396a9564148e2121f41085 at height 2406225 provided via best_block_updated
2022-11-14 10:59:07.700 TRACE [lightning_background_processor:520] Persisting ChannelManager...
2022-11-14 10:59:07.721 TRACE [lightning_background_processor:520] Done persisting ChannelManager.
2022-11-14 10:59:09.466 TRACE [lightning::ln::peer_handler:1283] Received message Ping(Ping { ponglen: 0, byteslen: 64 }) from 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d
2022-11-14 10:59:09.467 TRACE [lightning::ln::peer_handler:980] Enqueueing message Pong { byteslen: 0 } to 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d
2022-11-14 10:59:21.654 TRACE [lightning_background_processor:520] Calling ChannelManager's timer_tick_occurred
2022-11-14 10:59:32.113 TRACE [lightning::ln::peer_handler:1283] Received message OpenChannel(OpenChannel { chain_hash:<PHONE_NUMBER>33ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943, temporary_channel_id: [193, 82, 42, 154, 220, 195, 230, 191, 254, 94, 154, 29, 95, 37, 182, 32, 67, 204, 167, 49, 233, 216, 49, 107, 164, 88, 245, 206, 10, 52, 168, 3], funding_satoshis: 21000, push_msat: 0, dust_limit_satoshis: 354, max_htlc_value_in_flight_msat: 2100000, channel_reserve_satoshis: 1000, htlc_minimum_msat: 1, feerate_per_kw: 253, to_self_delay: 144, max_accepted_htlcs: 50, funding_pubkey: PublicKey(fcf5e3cd93e5bae4bd2865fb3b56fabcd3106c0dfa3345464b7a7edcfff3b7952da52785a989a3b41f39174695abd8d0a0c8fd8d918b51800cff24dca6a07185), revocation_basepoint: PublicKey(4808ab81a6b5906ef658fa2ac7e35706633226576621ba677bc7af0da199781dc005492318e33460e8bb2917c40c840b92f9159bba032ec3db5de9e9e25313cb), payment_point: PublicKey(2906c90ea2278eaaecd0e390756586092f6a7f30987b2cdf4148d11d8c77d6bf9b037ea0b46e7a5aa51c4d4955cb737d4fb6791d19ed44a07bb7ff3e48283d83), delayed_payment_basepoint: PublicKey(6c97115896bafd176f2257fcc841365465935125a7dfb241585b5c597e56d6a4bde7f7a9a3fcbce11532c301a2da5b5d32ff51d43389e4694900b5b52d41c648), htlc_basepoint: PublicKey(1d9f37ea983c531baf6ad5d751fead45f02db90388337b36ed2d5de3dee20dd658f2b61d6b9eba410c07409262513d4f1321c2af810f1032c1c97a8f661751b4), first_per_commitment_point: PublicKey(d02ec5434c50e92ebff5071c822bbbd4b789cc073dce9ffa5ac38dfcd6c802b9bf5f75b69fb49dbcae003bcb497aaa95febc5a59e5e2c2cc15bc3f07b549c181), channel_flags: 0, shutdown_scriptpubkey: Present(Script(OP_0 OP_PUSHBYTES_20 26f08713fdb565bbf22785fed26b46061e1ccda4)), channel_type: Some([0, 16]) }) from 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d
2022-11-14 10:59:32.392 TRACE [lightning_background_processor:520] Persisting ChannelManager...
2022-11-14 10:59:32.393 DEBUG [lightning::ln::peer_handler:1607] Handling SendAcceptChannel event in peer_handler for node 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d for channel c1522a9adcc3e6bffe5e9a1d5f25b62043cca731e9d8316ba458f5ce0a34a803
2022-11-14 10:59:32.393 TRACE [lightning::ln::peer_handler:980] Enqueueing message AcceptChannel { temporary_channel_id: [193, 82, 42, 154, 220, 195, 230, 191, 254, 94, 154, 29, 95, 37, 182, 32, 67, 204, 167, 49, 233, 216, 49, 107, 164, 88, 245, 206, 10, 52, 168, 3], dust_limit_satoshis: 354, max_htlc_value_in_flight_msat: 2100000, channel_reserve_satoshis: 1000, htlc_minimum_msat: 1, minimum_depth: 6, to_self_delay: 144, max_accepted_htlcs: 50, funding_pubkey: PublicKey(a198cffbebb1f0d1cc4ae5cb2e7ab9801d444eb33d3f2c1c117d7a64cb9a141c32638432f6215a77cd387bc398184a635378b7be203847f9250c39dec6b2907a), revocation_basepoint: PublicKey(03ac45ec454d8115ed6ad8ad16f9effc02cf43d3f599642fec027c566b253803513e6228ba84c43e7233f8ab37605f3c9b236228219d9155765a47c452728975), payment_point: PublicKey(ee4b03847ec5db4c20ad9782d9c6853e5d5308b513d6141845b628ec625770779fd903779f6a3c200dbc7683bf6b310a8077f69aa656be3406cf6e0172d2917c), delayed_payment_basepoint: PublicKey(bbcd6644ddd6036665cd44f8949e1a8f77ce25abaa5312f2965c922479a6c8d0abb07779469fc02b9ce419dcf0d88b3cabe5ffe9b1ce661afa629315a902c0b3), htlc_basepoint: PublicKey(e510e95e88c61ee35457221f41c5c07e120eccbd365a2f5181209b49159f889662697997d8d96c00084d5d93ca1bd2156eae74329ddaf3711df62b8960198347), first_per_commitment_point: PublicKey(5aa785eebba51c52432b87bd346da572655ea35a8a0a78764ef8919bd2580a8385edf3c50c1d7e1346b42c290730473a6f4761f1ca2d4e3dd44ae28d2da625ad), shutdown_scriptpubkey: Present(Script(OP_0 OP_PUSHBYTES_20 cca3c0ebc1d977a0d3eb2fe09fbdc8195151aa13)), channel_type: Some([0, 16]) } to 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d
2022-11-14 10:59:32.412 TRACE [lightning_background_processor:520] Done persisting ChannelManager.
2022-11-14 10:59:32.628 TRACE [lightning::ln::peer_handler:1283] Received message FundingCreated(FundingCreated { temporary_channel_id: [193, 82, 42, 154, 220, 195, 230, 191, 254, 94, 154, 29, 95, 37, 182, 32, 67, 204, 167, 49, 233, 216, 49, 107, 164, 88, 245, 206, 10, 52, 168, 3], funding_txid: 0e42605fe9a13d0d99865c1c8216827faa8dd1086a87e2921ecc9b5557161a37, funding_output_index: 0, signature: 304402204bd933fec4b4444cea8af6856e629b251adf4b4f7ad91f33c44907f2af9cf67902205ca635853623b1f6ea553180bef2b8696d54f971fff0300a2601428a1411f751 }) from 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d
2022-11-14 10:59:32.650 TRACE [lightning::ln::channel:1448] Building commitment transaction number<PHONE_NUMBER>10655 (really 0 xor<PHONE_NUMBER>65150) for channel c1522a9adcc3e6bffe5e9a1d5f25b62043cca731e9d8316ba458f5ce0a34a803 for us, generated by remote with fee 253...
2022-11-14 10:59:32.651 TRACE [lightning::ln::channel:1614]    ...including to_remote output with value 20817
2022-11-14 10:59:32.651 TRACE [lightning::ln::channel:2151] Checking funding_created tx signature 4bd933fec4b4444cea8af6856e629b251adf4b4f7ad91f33c44907f2af9cf6795ca635853623b1f6ea553180bef2b8696d54f971fff0300a2601428a1411f751 by key 0395b7f3ffdc7e7a4b464533fa0d6c10d3bcfa563bfb6528bde4bae593cde3f5fc against tx<PHONE_NUMBER>371a1657559bcc1e92e2876a08d18daa7f8216821c5c86990d3da1e95f60420e0000000000e62dee80015151000000000000160014c838471765a65d57180a51acfbd5edb02016ac039e4a8720 (sighash 9ce95aa7d161b2f16b45e47fdf5a23de7807ade1bf65dffd55a54aaecbae98ad) with redeemscript 475221021c149acb647a7d111c2c3f3db34e441d80b97a2ecbe54accd1f0b1ebfbcf98a1210395b7f3ffdc7e7a4b464533fa0d6c10d3bcfa563bfb6528bde4bae593cde3f5fc52ae for channel c1522a9adcc3e6bffe5e9a1d5f25b62043cca731e9d8316ba458f5ce0a34a803.
2022-11-14 10:59:32.652 TRACE [lightning::ln::channel:1448] Building commitment transaction number<PHONE_NUMBER>10655 (really 0 xor<PHONE_NUMBER>65150) for channel c1522a9adcc3e6bffe5e9a1d5f25b62043cca731e9d8316ba458f5ce0a34a803 for remote, generated by remote with fee 253...
2022-11-14 10:59:32.652 TRACE [lightning::ln::channel:1608]    ...including to_remote output with value 20817
2022-11-14 10:59:32.652 TRACE [lightning::ln::channel:2163] Initial counterparty tx for channel c1522a9adcc3e6bffe5e9a1d5f25b62043cca731e9d8316ba458f5ce0a34a803 is: txid 52af36e64348697a29bf2afcc5e8877b91e1dc5ec05f2ac7e8d82e997751b733 tx<PHONE_NUMBER>371a1657559bcc1e92e2876a08d18daa7f8216821c5c86990d3da1e95f60420e0000000000e62dee800151510000000000002200207a9bf6584370a8007e2f0357119fcc6caaee4df78259e1555d11ab38d6be3cc79e4a8720
2022-11-14 10:59:32.652 TRACE [lightning::chain::channelmonitor:2092] Tracking new counterparty commitment transaction with txid 52af36e64348697a29bf2afcc5e8877b91e1dc5ec05f2ac7e8d82e997751b733 at commitment number<PHONE_NUMBER>10655 with 0 HTLC outputs
2022-11-14 10:59:32.652 INFO  [lightning::ln::channel:2247] Generated funding_signed for peer for channel 371a1657559bcc1e92e2876a08d18daa7f8216821c5c86990d3da1e95f60420e
2022-11-14 10:59:32.653 TRACE [lightning::chain::chainmonitor:583] Got new ChannelMonitor for channel 371a1657559bcc1e92e2876a08d18daa7f8216821c5c86990d3da1e95f60420e
2022-11-14 10:59:32.672 INFO  [lightning::chain::chainmonitor:597] Persistence of new ChannelMonitor for channel 371a1657559bcc1e92e2876a08d18daa7f8216821c5c86990d3da1e95f60420e completed
2022-11-14 10:59:32.673 DEBUG [lightning::ln::peer_handler:1628] Handling SendFundingSigned event in peer_handler for node 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d for channel 371a1657559bcc1e92e2876a08d18daa7f8216821c5c86990d3da1e95f60420e
2022-11-14 10:59:32.674 TRACE [lightning::ln::peer_handler:980] Enqueueing message FundingSigned { channel_id: [55, 26, 22, 87, 85, 155, 204, 30, 146, 226, 135, 106, 8, 209, 141, 170, 127, 130, 22, 130, 28, 92, 134, 153, 13, 61, 161, 233, 95, 96, 66, 14], signature:<PHONE_NUMBER>aa9497aa7c1c20562c79ffc444a618b60c136b14cb237cbcc79b6b51f3469502206ae8499cbab8924de20c14eaae079cb3f61bdf9376d8ba6501e099388ce7bfe5 } to 0317673b5d263d92cc4e77989c37643f336a099c156181d6c9efb405e11d07276d

bors r+