tests: move LibvirtDomainIsPaused()

What this PR does
Move LibvirtDomainIsPaused() out of utils
to the only place where it is used.
Release note

None

/sig code-quality

@dankenigsberg It's ready to be reviewed. Do you want me to add more commits to cleanup utils.go in this PR, or just continue with opening more PRs?

@enp0s3 PTAL :)

/hold
@codingben Can you please check if rebase is needed?

/hold @codingben Can you please check if rebase is needed?

Definitely needed.

/hold @codingben Can you please check if rebase is needed?

I already did it yesterday. I'll check it again.

/unhold

/hold

/unhold

/lgtm


do not commit generated content to VCS; closes #3713

This removes markdown-magic and replaces its functionality with the built-in data capabilities of 11ty.
The TOC, --help output, and source files are now all done via global data scripts in docs/_data.
When building documentation, we will no longer get changes to e.g., docs/index.md because of the automatically generated content.

Coverage remained the same at 93.228% when pulling 899b3a0899474bd3c4c1313daad6fd115e32be4d on boneskull/issue/3713 into 1a4646dd2f7b35010c2488edcb2d5f4cfb2f14a8 on master.

I added an official eleventy plugin which detects usages of words like "simply", "obviously", etc., which don't only make the reader feel stupid, but are often straight-up bad writing 😄
It emits warnings at build time and will not break the build.

I've confirmed the build has passed for real with my eyeballs, so merging


by-name parameter in as method

as method should have by-name parameter, because Task(...).map{ _ => ...} cannot be always shorted to Task(...).as{...} due to the potential side effects

PR: https://github.com/monix/monix/pull/1851


Model for integrating issue tracker.

https://github.com/almighty/almighty-core/issues/24

This change is

Could you move the Trello specific parts into /issueproviders/trello/provider.go and use package 'trello'

@aslakknutsen yeah, doing the changes thanks :)

models/issue_tracker.go, line 87 [r1] (raw file):
Previously, Ritsyy (Richa Rupela) wrote…
> @aslakknutsen then done should a bool type channel?

Wondering if maybe it should be a String channel. That would give the sender a chance to say why it was canceled.

Comments from Reviewable

Review status: 0 of 1 files reviewed at latest revision, 8 unresolved discussions, some commit checks failed.

models/issue_tracker.go, line 87 [r1] (raw file):
Previously, aslakknutsen (Aslak Knutsen) wrote…
> Wondering if maybe it should be a String channel. That would give the sender a chance to say why it was canceled.

why will the execution be cancelled?, i didn't get that, sorry if i am not getting any important point here, can you explain the context of taking channels this way.

Comments from Reviewable

models/issue_tracker.go, line 87 [r1] (raw file):
Previously, Ritsyy (Richa Rupela) wrote…
> why will the execution be cancelled?, i didn't get that, sorry if i am not getting any important point here, can you explain the context of taking channels this way.

It might be a long running process.

Comments from Reviewable

models/issue_tracker.go, line 87 [r1] (raw file):
Previously, aslakknutsen (Aslak Knutsen) wrote…
> It might be a long running process.

okay, thanks.

Comments from Reviewable

issueproviders/github/provider.go, line 27 [r2] (raw file):

	}
	close(result)
	if err != nil {

Do err check before you try to interact with res. res is probably nil if err !0 nil.

Comments from Reviewable

issueproviders/github/provider.go, line 28 [r2] (raw file):

	close(result)
	if err != nil {
		fmt.Printf("error: %v\n\n", err)

Report the err on the err channel

Comments from Reviewable

issueproviders/github/provider.go, line 26 [r2] (raw file):

		result <- issueInstance
	}
	close(result)

use defer to close the channel after it's created instead of down here. defer delays the execution of a function until the calling func is done

Comments from Reviewable

issueproviders/github/provider.go, line 10 [r2] (raw file):

func (g GithubIssueProvider) FetchData(done chan String) (result chan Issue, err chan error) {
	result := make(chan Issue)

Missing creating of err channel?

Comments from Reviewable

issueproviders/github/provider.go, line 11 [r2] (raw file):

func (g GithubIssueProvider) FetchData(done chan String) (result chan Issue, err chan error) {
	result := make(chan Issue)
	client := github.NewClient(nil)

The actual 'fetch' logic should be called in a goroutine, else this whole thing will just deadlock. As the result channel will be full after the first issue and the channel can't be returned to the caller until this method ends.
result := make(chan Issue)
err := make(chan error)
go func() {
  // do logic
  // loop
  close(err)
  close(result)
}
return result, err

Comments from Reviewable

issueproviders/github/provider.go, line 26 [r2] (raw file):
Previously, aslakknutsen (Aslak Knutsen) wrote…
> use defer to close the channel after it's created instead of down here. defer delays the execution of a function until the calling func is done

Sorry, ignore this. Replied to soon. When this is ran as a goroutine a defer on close would cause it to close the channel before you can write any issues to it. The close should be done inside, at the end of the goroutine call.

Comments from Reviewable

issueproviders/trello/provider.go, line 37 [r2] (raw file):

				result <- issueInstance
			}
			close(result)

Can we assume there will only be one List? A List is a status in Trello isn't it? e.g. In Progress?
I think generally the logic about what/how we discover data in Trello needs to change. We can assume there is a Board; But either we want to include all Cards on the Board or only a single one, or based on a Label.
We need the 'List' name to map the Issue back to a 'State' in our Planner.

Comments from Reviewable

models/issue_tracker.go, line 14 [r2] (raw file):

}

type TrelloIssueProvider struct {

This should be moved to issueproviders/trello/provider.go

Comments from Reviewable

models/issue_tracker.go, line 20 [r2] (raw file):

}

type GithubIssueProvider struct {

This should be moved to issueproviders/github/provider.go

Comments from Reviewable

models/issue_tracker.go, line 24 [r2] (raw file):

}

type Issue struct {

Some basic documentation on what an Issue is would be nice :)

Comments from Reviewable

models/issue_tracker.go, line 8 [r2] (raw file):

)

type Configuration struct {

Some basic documentation on what an Issue is would be nice :)

Comments from Reviewable

models/issue_tracker.go, line 25 [r2] (raw file):

type Issue struct {
	title       string

These should not be private fields. Uppercase the first letter. Title|Description

Comments from Reviewable

The current task is really only about models/issue_tracker.go. The different implementations come later.
If you could split this up and only provide the issue_tracker.go in this PR, I think this looks good enough to go upstream. (assuming the comments around issue_tracker.go is resolved :)

Comments from Reviewable

@aslakknutsen yes working on the issues, thank you for reviewing it :)


feat(dev): support NO_COLOR

Many frameworks support NO_COLOR because color libraries like ~chalk~, kleur and picocolors support the env.
This helps disabling colored text output for some developers.
https://no-color.org/
Author should do the followings, if applicable

[ ] Add tests
[x] Run tests
[x] yarn denoify to generate files for Deno

@ryuapp
Thanks! This is good.
Can you write the test, although that will be very simple?

@yusukebe
I need to add an environment variable before running test because vi.stubEnv cannot be used in this test due to the initialization timing of isNoColor.
Do you have any comments about this test?

@ryuapp
How about this?
diff --git a/src/helper/dev/index.test.ts b/src/helper/dev/index.test.ts
index 65d2480..84fd24f 100644
--- a/src/helper/dev/index.test.ts
+++ b/src/helper/dev/index.test.ts
@@ -3,7 +3,6 @@ import { RegExpRouter } from '../../router/reg-exp-router'
 import type { Handler, MiddlewareHandler } from '../../types'
 import { inspectRoutes, showRoutes, getRouterName } from '.'

-const isNoColor = 'NO_COLOR' in process.env
 const namedMiddleware: MiddlewareHandler = (_, next) => next()
 const namedHandler: Handler = (c) => c.text('hi')
 const app = new Hono()
@@ -57,11 +56,12 @@ describe('inspectRoutes()', () => {
   })
 })

-describe.runIf(!isNoColor)('showRoutes()', () => {
+describe('showRoutes()', () => {
   let logs: string[] = []

   let originalLog: typeof console.log
   beforeAll(() => {
+    vi.stubEnv('NO_COLOR', '')
     originalLog = console.log
     console.log = (...args) => logs.push(...args)
   })
@@ -127,11 +127,12 @@ describe.runIf(!isNoColor)('showRoutes()', () => {
   })
 })

-describe.runIf(isNoColor)('showRoutes() in NO_COLOR', () => {
+describe('showRoutes() in NO_COLOR', () => {
   let logs: string[] = []

   let originalLog: typeof console.log
   beforeAll(() => {
+    vi.stubEnv('NO_COLOR', 'true')
     originalLog = console.log
     console.log = (...args) => logs.push(...args)
   })
diff --git a/src/helper/dev/index.ts b/src/helper/dev/index.ts
index bcaa001..f303ba9 100644
--- a/src/helper/dev/index.ts
+++ b/src/helper/dev/index.ts
@@ -14,15 +14,6 @@ interface RouteData {
   isMiddleware: boolean
 }

-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-const { process, Deno } = globalThis as any
-const isNoColor =
-  typeof process !== 'undefined'
-    ? // eslint-disable-next-line no-unsafe-optional-chaining
-      'NO_COLOR' in process?.env
-    : typeof Deno?.noColor === 'boolean'
-    ? (Deno.noColor as boolean)
-    : false
 const isMiddleware = (handler: Function) => handler.length > 1
 const handlerName = (handler: Function) => {
   return handler.name || (isMiddleware(handler) ? '[middleware]' : '[handler]')
@@ -48,6 +39,15 @@ export const inspectRoutes = <E extends Env>(hono: Hono<E>): RouteData[] => {
 }

 export const showRoutes = <E extends Env>(hono: Hono<E>, opts?: ShowRoutesOptions) => {
+  // eslint-disable-next-line @typescript-eslint/no-explicit-any
+  const { process, Deno } = globalThis as any
+  const isNoColor =
+    typeof process !== 'undefined'
+      ? !!process?.env.NO_COLOR
+      : typeof Deno?.noColor === 'boolean'
+      ? (Deno.noColor as boolean)
+      : false
+
   const colorEnabled = opts?.colorize ?? !isNoColor
   const routeData: Record<string, RouteData[]> = {}
   let maxMethodLength = 0

If this works, the test:no-color command will no longer be necessary.

@yusukebe
Thank you for the comment.
It works well. I avoided that implementation because it reads the environment variable every time the function is executed.
But, I reconsidered that this feature does not require performance at the expense of test complexity.
I'll fix that later.

@ryuapp
Thanks! This is a minor feat, so I'll include this in the next patch release.


[ALLUXIO-1852] Fixing wrong authentication header. Adapt configuration key

Fixing wrong authentication header for SoftLayer object store.

Adding "password" configuration key and removing "apikey". Contains support for "apikey" to be backward compatible.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/9367/
Test PASSed.

Build finished. Test PASSed.


Add support for multiple subprojects

Adds support for multiple subproject with just single application of the plugin and with just one SBT call. This prevents issues with parallel SBT calls.
Note that function testBothModes can be used for further test simplification.

The failure on Windows is likely related to argument quoting/escaping. Maybe I should get a Windows VM and debug it there.


EVPN overlay variables generated although EVPN_role is none

Issue Summary
tried creating l3 router node type and keys where the router will not be running EVPN.
Defined the node type as :
l3router:
type: l3router
connected_endpoints: true
default_evpn_role: none
mlag_support: true
ip_addressing:
mlag_ip_primary: 'templates/ip_addressing/mlag_ip_primary.j2'
mlag_ip_secondary: 'templates/ip_addressing/mlag_ip_secondary.j2'
mlag_l3_ip_primary: 'templates/ip_addressing/mlag_l3_ip_primary.j2'
mlag_l3_ip_secondary: 'templates/ip_addressing/mlag_l3_ip_secondary.j2'
network_services:
l2: true
l3: true
underlay_router: true
uplink_type: p2p
End result which appeared wrong of the device type that is not running EVPN
Name of the prefix list containing EVPN OVERLAY that could be deceiving to the user and does not seem like there is a way to override this name
ip prefix-list PL-LOOPBACKS-EVPN-OVERLAY
seq 10 permit <IP_ADDRESS>/24 eq 32
route-map RM-CONN-2-BGP permit 10
match ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY
Also noticed the below under debug vars for this node and appeared in accurate as EVPN role is none:
    overlay_address_families:
    - evpn
    overlay_routing_protocol: ebgp
    overlay_routing_protocol_address_family: ipv4

Which component(s) of AVD impacted
eos_designs
How do you run AVD ?
Ansible CLI (with virtual-env or native python)
Steps to reproduce
No response
Relevant log output
No response
Contributing Guide

[X] I agree to follow this project's Code of Conduct

I agree on the naming. I would prefer to change the general name to be more neutral to the deployment style, but we cannot change it as a non-breaking change, so for now, it would need to be a new configuration knob, to allow you to set the names.
I do not agree on the other variables. Your examples are role defaults (check the defaults/main.yml under eos_designs), which Ansible will always expose as variables as long as you are inside the role. So a lot of variables will be set, without necessarily being used. If you ran a similar debug check outside the role (ex. another task in your playbook) you would see that the variables are no longer there, since they are only set within the role context.
I hope this makes sense.


Added ability to replace JsonView with Error widget

When passing something not JSON, the assert in the converter will throw an exception.
It seemed much cleaner to me, to instead have it return an Error widget that the developer can style themselves.
Disclaimer: was unable to test if it all works as intended

Examples seem to compile - did not test the replacement yet


Consider switching to github actions

Here's an example for rails/webpacker:
https://github.com/rails/webpacker/pull/2614
I'd like a PR that converts the travis workflow. We'd leave in Travis and Circle CI until we see GH actions working.

I like to work on this, is this okay?


Opening from the command line will always open “cli.js” automatically

VSCode Version: 1.33.1
OS Version: Windows 10

Steps to Reproduce:
1.Open powershell.
2.Execute command "Code [any file path]
3.Wait for vsCode opening
4."cli.js" is opened automatically,and I don't know why.

Can you show me your PATH variable?

Can you show me your PATH variable?

Please run echo %PATH% in the Command Prompt.

Please run echo %PATH% in the Command Prompt.

I found this to be true only when VSCode is started in administrator mode.

Can you show me your PATH variable? Please run echo %PATH% in the Command Prompt.

This has been happening to me. It happens when I open VSCode from the command line and I have VSCode set to run as admin. Here is my path:
D:\Apps\cmder\bin;D:\Apps\cmder\vendor\bin;D:\Apps\cmder\vendor\conemu-maximus5\ConEmu\Scripts;D:\Apps\cmder\vendor\conemu-maximus5;D:\Apps\cmder\vendor\conemu-maximus5\ConEmu;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\dotnet\;C:\Users\mosor\AppData\Local\Programs\AdoptOpenJDK\bin;C:\Users\mosor\AppData\Local\Microsoft\WindowsApps;C:\Users\mosor\.dotnet\tools;C:\Users\mosor\AppData\Local\Programs\Microsoft VS Code\bin;D:\Apps\cmder\vendor\git-for-windows\cmd;D:\Apps\cmder\vendor\git-for-windows\mingw64\bin;D:\Apps\cmder\vendor\git-for-windows\usr\bin;D:\Apps\cmder

我也一样。或许你应该尝试一下把VSCode的路径放到PATH变量的首部
Me too. Maybe you should try putting the path of VSCode at the head of the PATH variable.

Moving the path variable does not make a difference. The 'cli.js' file still opens.

I think I figured out a fix for anyone else facing this problem. If you run the command prompt as administrator, this problem goes away. It's only an issue if you have VSCode set to run as admin, but the command prompt terminal is not running with admin permission.


Is this going to be published / what's the plan?

Hello, wonderful project!
I'm just curious:

Do you intend to publish this, so it can be installed via the normal plugin marketplace?
Would it make sense to contribute this to jakt/editors with the rest of the editor plugins? Just putting the idea out there...

I'm sure someone already asked these somewhere, and I just missed it. :)

Do you intend to publish this, so it can be installed via the normal plugin marketplace?

Yeah at some point, though much like the VSCode plugin, it doesn't make much sense to do so until the language itself becomes a bit more stable.

Would it make sense to contribute this to jakt/editors with the rest of the editor plugins? Just putting the idea out there...

Yes that is something I'd like to do, but I think I still have some work to do before that. Mostly things like documentation and a proper README, but also some design related questions like how to handle the prelude/multiple files.

Well, looks like it probably won't end up being upstreamed.

Why's that, did I miss something?

I brought it up in discord the other day, and lack of maintenance was a concern. I'll probably bring it up again when the language gets more stable in the future.


[explorer] fix: Restriction display issue

What was the issue?

some formatting issues cause the UI to display data incorrectly.

What's the fix?

fix and refactor for RestrictionField and RestrictionService
added unit test

/mosaics/1788BA84888894EB

/accounts/TA4RYHMNHCFRCT2PCWOCJMWVAQ3ZCJDOTF2SGBI

@AnthonyLaw I got a question regarding global restriction. You added mosaicId to the "Restrictions" column:

it's possible that we will have another mosaicId that we currently looking at the page?

@AnthonyLaw I got a question regarding global restriction. You added (on beginning) mosaicId to the "Restrictions" column:

it's possible that we will have another mosaicId that we currently looking at the page?

yes, based on the API, the restrictions returns in Array.


Update packages, remove concurrently and npm run dev now launches doc…

Updates backend packages and changes npm run dev in /back folder to launch docker-compose.

Codecov Report

Merging #107 (e150353) into develop (f59308c) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           develop     #107   +/-   ##
========================================
  Coverage    49.59%   49.59%
========================================
  Files           84       84
  Lines         3448     3448
========================================
  Hits          1710     1710
  Misses        1738     1738

Flag
Coverage Δ

back-end
44.72% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

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 f59308c...e150353. Read the comment docs.


on route /monsters and /items the app scrolls, not just the columns

There is currently no way to navigate back home. Either add link in sidebar or set the logo to do it.


[0.8.0Beta7] Issues

The latest BETA release of 0.8.0 is Beta 7 (https://github.com/meerk40t/meerk40t/releases/tag/0.8.0015). This issue is for reporting issues with this specific version of MeerK40t.
Please do all further testing on this release. Please do not report any further bugs with previous beta releases. Do give any other types of feedback, questions, concerns or comments.

[ ]  Config - window is wider than the default size and has a horizontal scrollbar.
[ ] Tree Context menu - No right click entry on images for Raster Wizard (only apply script). In fact, I can't find the raster wizard at all.
[ ]  Selecting in the scene should give some indication in the tree what has been selected if the parent nodes are closed - perhaps a squiggly blue underscore?
[ ]  Should selecting in the scene "select" elements in the tree rather than (as present) "emphasising" them?
[ ]  Selecting in the scene all elements in a group should (IMO) emphasise the group also (or possibly select the group and emphasise the children).
[ ]  When you select preference 'Classify in reverse', overlapping filled paths are combined in the wrong order in simulate (and presumably burn). You need to check this setting and reverse the order when you create the raster image.
[ ] 'Wavy line' bug (see https://github.com/meerk40t/meerk40t/issues/1221)

Tree Context menu - No right click entry on images for Raster Wizard (only apply script). In fact, I can't find the raster wizard at all.
It's located in the main scene and individual bits are editable when you call up the image properties.

Suggest this is closed as beta 7 is ancient history.


this is great. it needs a declarative API as well, managed by componentWillReceiveProps

Here's the common example for how things like Modals, StatusBars, etc, are made to have a declarative interface:
componentWillReceiveProps(nextProps) {
    if(nextProps.isVisible && !props.isVisible) this.show();
    else if(!nextProps.isVisible && props.isVisible) this.hide();
}

In my opinion, the perfect such component should have both a declarative and imperative interface. There's just times where you need an imperative interface. But overall, we should be guiding people to declarative coding as much as possible.

#7 You are correct. I've added this possibility.


optimize the HTTPWithHeaders

…ort and add timeout in request context to share the http client.
Signed-off-by: allen.wq<EMAIL_ADDRESS>
Ⅰ. Describe what this PR did
Optimize the HTTPWithHeaders. When do a http request, share the transport and add timeout in request context to share the http client.
In the early version, if we do a request with HTTPWithHeaders, new transport will be generated every request, which cases a lot of goroutines for cached conn in transport.
In my unit test, it causes error:
go test -race -v
race: limit on 8128 simultaneously alive goroutines is exceeded, dying

Ⅱ. Does this pull request fix one issue?

NONE.
Ⅲ. Why don't you add test cases (unit test/integration test)? (你真的觉得不需要加测试吗？)
Add ut.
Ⅳ. Describe how to verify it
Ⅴ. Special notes for reviews

Codecov Report

Merging #1351 into master will increase coverage by 0.21%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master    #1351      +/-   ##
==========================================
+ Coverage   51.34%   51.55%   +0.21%
==========================================
  Files         130      130
  Lines        8578     8612      +34
==========================================
+ Hits         4404     4440      +36
+ Misses       3806     3804       -2
  Partials      368      368

Impacted Files
Coverage Δ

pkg/httputils/http_util.go
76.22% <100.00%> (+4.36%)
:arrow_up:

Continue to review full report at Codecov.

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


Code fix to extend compatibility with Python 3.10

Importing deltaray on Python 3.10 uncovers a typing bug.
This PR has code changes to fix the bug and extend the compatibility to Python 3.10.
Following file is modified :   src/deltaray/data/read_api.py
Reference:
This is the issue that is fixed by this PR
Issue

Why this PR has been closed?


Add plugin_directory config.

Description
Add plugin_directory config.
Issues Resolved
Fixes #136
Check List

[ ] All tests pass. See TESTING.md for details
[ ] New functionality includes testing.
[ ] New functionality has been documented in the README if applicable

          1 Error

:no_entry_sign:
Please include a CHANGELOG entry.

  Generated by :no_entry_sign: Danger

Regarding tests, the entire vault_config_spec.rb is commented out. Not really sure what to do.
I think I'll add the necessary code to add the cap_ipc_lock capability on the plugin directory, as it is a requirement.

Thanks for taking your time to submit this patch!


Spanner - How does the client library handle aborted commits?

In the Spanner documentation for Commit(), it says:

Commit might return an ABORTED error. This can occur at any time; commonly, the cause is conflicts with concurrent transactions. However, it can also happen for a variety of other reasons. If Commit returns ABORTED, the caller should re-attempt the transaction from the beginning, re-using the same session.

How does the Spanner client library handle this case? I found the resetForRetry() method; so it seems like the user must reattempt the statements that were run in the transaction from the beginning if the exception is thrown?
I was also curious - is it possible to build a feature in which the statements of a transaction are recorded and then reattempted if a commit is aborted? Or does this idea have pitfalls?

Any read/write Cloud Spanner transaction may be aborted by the backend, and the client application / client library should take this into account for all database calls on a read/write transaction (that is: not only the commit may abort, but also any query or update statement). This means that every Cloud Spanner read/write transaction should be executed in a retry-loop that checks for an ABORTED exception.
The client library handles this internally if you use the DatabaseClient#readWriteTransaction() method. This method will return a TransactionRunner. The TransactionRunner#run(Callable c) method will run the transaction logic for you and retry the transaction automatically as many times as necessary.
The other option is to use the DatabaseClient#transactionManager() method. This method leaves the retry handling to the user. The transaction logic still needs to be placed in a retry loop, and you must call TransactionManager#resetForRetry() in case of an aborted transaction like this:
long singerId = my_singer_id;
try (TransactionManager manager = dbClient.transactionManager()) {
  TransactionContext txn = manager.begin();
  while (true) {
    String column = "FirstName";
    Struct row = txn.readRow("Singers", Key.of(singerId), Collections.singleton(column));
    String name = row.getString(column);
    txn.buffer(
        Mutation.newUpdateBuilder("Singers").set(column).to(name.toUpperCase()).build());
     try {
      txn.executeUpdate(Statement.of("UPDATE Albums SET Title='foo' WHERE AlbumId=1"));
      manager.commit();
      break;
    } catch (AbortedException e) {
      Thread.sleep(e.getRetryDelayInMillis() / 1000);
      txn = manager.resetForRetry();
    }
  }
}

Recording all statements of a transaction and retrying all these statements could be possible, but still does not solve all problems. You would also have to keep track of the results that are returned by the database statements, as your transaction might have made decisions that are based on the data that were returned. These data may be different during the retry, and the decisions that the original transaction took could be invalid based on the new data. Consider the following pseudo transaction:
long currentBalance = execute("SELECT Balance FROM BankAccount WHERE Owner='some_owner'");
if(currentBalance > 1000) {
  execute("UPDATE BankAccount SET Balance=Balance - 1000 WHERE Owner='some_owner'");
  execute("UPDATE BankAccount SET Balance=Balance + 1000 WHERE Owner='some_other_owner'");
} else {
  throw Exception("not enough money in account");
}
commit();

If you would only record the statements that were executed during the transaction, and automatically retried these in case of an ABORTED exception without checking whether the result of the statements during the retry were equal to the original transaction, you could end up executing an invalid transaction.

Thank you for the clarification, this was very helpful.


VAE

Hi,
Thanks for sharing your interesting project. Any idea why did not you apply the approach on the VAE?

@benam2 this is a good question! I actually tried this, but I found directly applying the same technique to VAE did not help. Please kindly let me know if you have any new findings regarding this.

sure, one more question, you have used np.argsort for extracting the top weight associated to each feature. As far as I know np.argsort does not consider the top among negative.
Can I ask why it was not important to you to get top weight for positive and negative?
in this way arent, we overlook the high negative features?

@benam2 Not exactly, our assumption is that both high positive and negative features are important. In each run, we actually selected "winners" among positive and negative neurons separately. Please refer to the code here.

Actually I am aware of that part. I am talking about when you want to predict the features/topics (pred.py get_topic_strenght). there you have y=used np.argsort which do not consider the importance of negative weight(cuz of np.argsort). Am I missing something?

@benam2 That will let us select the strongest positive connections. To select the strongest negative connections (i.e., those words that are most unlikely to associate to the topic), you can do np.argsort(-W).

I see your point, thanks for clarifying that though.
Do you have any interpretation about the features which get the high positive and negative weight?
A word like "crime" get high positive and negative weight. what does that mean logically?

Sorry for asking many questions:))
did you face nan problem at all?
in model, we allocate weight of some neurons to the most positive/negative neurons.
I'm curious to know how did you control not experiencing the exploiting problem!
I haven't seen this problem in your model, but I thought you should have done something to avoid that(I suppose number of neurons got fired is far less than the fraction did get zero.
Am I making sense?

@benam2 (1) Note that in pred.py get_topics_strength, for each hidden neuron (i.e., topic), we select the input neurons (i.e., words) which have the strongest positive connections with that hidden neuron. Positive connection means relevant, negative one means irrelevant.
(2) I did not do anything to explicitly avoid the problem you mentioned and I haven't observed the problem either. I usually set the value of k close to 1/4 of the total number of hidden neurons. I guess maybe the model learns to adapt to this during the training. One thing which will be interesting to check is the sparsity of hidden neurons in the later phase of training. I suspect that most of loser neurons will get very low activity, so the sum of their activity is not very large. Please let me know if you have any new findings.

One quick question.
As it does not seem to have a trainable variable.
Is there any technical reason behind that?

@benam2 I think a LAMBDA layer will work here.


Set LOGIN_URL in settings.py

The LOGIN_URL default is /accounts/login/ which breaks since the django-user-accounts app login url is reverse('account_login').
The 404 happens with you hit a @login_required URL without being logged in yet.
This fixes the issue so that when hitting a login-protected URL, the user gets properly redirected to the login page.

Hrmm... it looks like LOGIN_URL already gets set correctly in django-user-accounts.  I'm not sure why I'm having this issue.

Ok, so this looks like a workaround but it is probably not the right fix.  I've opened an issue

Closing since I think this might be just a documentation issue


[Bug]: Android back button switching tabs depending on history when set to true

Version
5.2.3
Flutter Doctor Output
[!] Flutter (Channel [user-branch], 3.19.0, on Microsoft Windows [Version 10.0.22631.4037], locale pl-PL)
    ! Flutter version 3.19.0 on channel [user-branch] at C:\Users\KarolW\Documents\flutter
      Currently on an unknown channel. Run `flutter channel` to switch to an official channel.
      If that doesn't fix the issue, reinstall Flutter by following instructions at https://flutter.dev/docs/get-started/install.
    ! Upstream repository unknown source is not a standard remote.
      Set environment variable "FLUTTER_GIT_URL" to unknown source to dismiss this error.
    • Framework revision bae5e49bc2 (7 months ago), 2024-02-13 17:46:18 -0800
    • Engine revision 04817c99c9
    • Dart version 3.3.0
    • DevTools version 2.31.1
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[√] Windows Version (Installed version of Windows is version 10 or higher)

[√] Android toolchain - develop for Android devices (Android SDK version 32.0.0)
    • Android SDK at C:\Users\KarolW\AppData\Local\Android\sdk
    • Platform android-34, build-tools 32.0.0
    • Java binary at: C:\Program Files\Common Files\Oracle\Java\javapath\java.exe
    • Java version Java(TM) SE Runtime Environment (build 17.0.1+12-LTS-39)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[X] Visual Studio - develop Windows apps
    X Visual Studio not installed; this is necessary to develop Windows apps.
      Download at https://visualstudio.microsoft.com/downloads/.
      Please install the "Desktop development with C++" workload, including all of its default components

[!] Android Studio (version 2022.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
    X Unable to find bundled Java version.
    • Try updating or re-installing Android Studio.

[√] Connected device (4 available)
    • Android SDK built for x86 (mobile) • emulator-5554 • android-x86    • Android 10 (API 29) (emulator)
    • Windows (desktop)                  • windows       • windows-x64    • Microsoft Windows [Version 10.0.22631.4037]
    • Chrome (web)                       • chrome        • web-javascript • Google Chrome 128.0.6613.138
    • Edge (web)                         • edge          • web-javascript • Microsoft Edge 128.0.2739.42

[√] Network resources
    • All expected network resources are available.

What platforms are you seeing the problem on?
Android
What happened?
When handleAndroidBackButtonPress is set to true android back button should back to first tab everytime is on other tab and all screens on this tab are popped as said here:
2. If you are on another tab with all screens popped of that given tab, you will be switched to first tab.

and actually when you switch between tabs back button is going back to previous tab, not to first tab
and also when I am on 1st tab, change to 2nd tab and change again to 1st tab using BottomNavBar then back button will go back to 2nd tab instead of closing app
If the you are on the first tab with all screens popped of the given tab, the app will close

Steps to reproduce
4 tabs example

You are in first tab, go to 2nd tab

Go to 3rd tab

Go to 4th tab

Press back
Expectation: App is going back to first tab
Reality: App is going back to 3rd tab

Press back again - app is going back to 2nd tab

2 tabs example, other case

You are in 1st tab, change to 2nd tab
Change to 1st tab, tapping on BottomNavBar item
Press back button - it will go to 2nd tab instead of closing app

Code to reproduce the problem
PersistentTabView(
      controller: pageController,
      navBarHeight: 70,
      handleAndroidBackButtonPress: true,
      popAllScreensOnTapAnyTabs: false,
      stateManagement: true,
      resizeToAvoidBottomInset: false,
      navBarBuilder: (navBarConfig) => Style4BottomNavBar(),
      onTabChanged: (index) {
        setState(() {
          currentIndex = index;
        });
      }
)

Relevant log output
No response
Screenshots
No response

facing same issue.

TL;DR: If you want that behavior back: set PersistentTabController.historyLength = 1.
Hi, sorry I forgot to adjust the documentation for that. In this PR (https://github.com/jb3rndt/PersistentBottomNavBarV2/pull/138) the tabs history behavior was changed to be more adjustable. By default, the last five tabs the user visited will be remembered so that the user can go back through them using the Android back button. By setting the PersistentTabController.historyLength to 1, the history will always solely contain the initial tab and thus switch to it and exit or directly exit.


Regression test failure on sawtooth

Bug Description
With the module gcc/9.3.0-gcc-4.8.5-twls on sawtooth, we get the following error:
ImportError: /apps/local/spack/software/gcc-4.8.5/gcc-9.3.0-twlsdabweaw75pj2f2hq7k7vo3vilvmi/lib64/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /home/cogljj/.conda/envs/raven_libraries/lib/python3.7/site-packages/grpc/_cython/cygrpc.cpython-37m-x86_64-linux-gnu.so)

Basically, the wrong libstdc++.so.6 is found.
Steps to Reproduce
https://civet.inl.gov/job/1043375/
Impact

Wrong repository.


Restrict using of blocks (break/place/use)

It would be nice for every job to set a white-list of exclusive blocks he can use. (if we set a block in the white-list, it is automoatically prohibited for other jobs to use it). This idea comes from the new blocks from villagers from the 1.14 Minecraft update.
For example:
The fisherman is the only job where players can use the fishing rod.
The florist is the only one who can plant flowers in flowerpots.
The blacksmith is the only one who can use the anvil.
......

Well, if you do not put the fishing rod in the specified job and action, then obviously will not feel that it is in it because it is not added. If the fishing rod is added to the action, you will be paid if you fish. It would not make sense to prevent the materials from being used in other jobs, because if you do not add them to the list there is no payment.


[Event Request] table 7320 "Warehouse Shipment Header" - OnAfterCalcAreWarehouseShipmentLinesEditable

I'm referring to issue https://github.com/microsoft/ALAppExtensions/issues/16594 for this issue.
In our app we are using a lifecycle/workflow code which has the ability to tell and show the user if a page and/or its subpage(s) is/are editable or not. When you scroll through the records we are able to set the editable property dynamically of the page itself but not of the subpage(s).
To use our app and delete Base app changes we need the following:

A procedure + event in table 7320 "Warehouse Shipment Header":
procedure CalcAreWarehouseShipmentLinesEditable() IsEditable: Boolean;
begin
//A113F0000.Event20.00.ns
IsEditable := true;
 OnAfterCalcAreWarehouseShipmentLinesEditable(Rec, IsEditable);
 //A113F0000.Event20.00.ne

end;
[IntegrationEvent(false, false)]
local procedure OnAfterCalcAreWarehouseShipmentLinesEditable(var WarehouseShipmentHeader: Record "Warehouse Shipment Header"; var IsEditable: Boolean)
begin
//A113F0000.Event20.00
end;

A global protected var:
AreWarehouseShipmentLinesEditable: Boolean;
on page 7335 "Warehouse Shipment"

A call in trigger OnAfterGetCurrRecord() in page 7335 "Warehouse Shipment"
AreWarehouseShipmentLinesEditable := Rec.CalcAreWarehouseShipmentLinesEditable(); //A113F0000.Event20.00

Setting the properties Editable and Enabled of part(WhseShptLines) in page 7335 "Warehouse Shipment"
Editable = AreWarehouseShipmentLinesEditable;
Enabled = AreWarehouseShipmentLinesEditable;

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 43058.


add test which exposes the Plan problem

here is the test for the issue u raised in https://github.com/kubernetes-incubator/external-dns/issues/258
is my understanding right?
@istalker2

I can add more tests as well as a fix that will make them not to fail

please explain other scenarios when something might go wrong

Add 3rd endpoint where there are 2 already
Change the second endpoint and see that UpdateOld is incorrect
Add 2nd endpoint of a different type
Replace 2 endpoints with another two endpoints
Test that plan is wrong when current == desired, but the order is different and there is >1 endpoint for a single DNSName
Maybe there are also something with deletion. Not sure

could you create a PR which would demonstrate the bugs with tests?

I'm going to create PR with tests and proposed fix. I'm going to include your tests into my PR if you don't mind

@istalker2 sure thanks

I've just created PR #261 that should solve the problem. Please pay special attention to my change to existing unit test. The proposed algorithm is:
a) Remove all identical records that exist in both Current and Desired
b) Find records that has the same DNSName and suitable type, but different targets. Such records are updates
c) All remaining records from Desired are put into Create
d) All remaining records from Current are put into Delete
One importance difference is that if you change 1 existing record from A to CNAME it will be Create+Delete rather than Update. Thus we'll never ask to update prover record of one type to another. This might be useful for providers that work differently with records of different types

All new unit test except for TestSyncFirstRound fail on current plan computation algorithm

closing this in favor of https://github.com/kubernetes-incubator/external-dns/pull/261

I reopen this to keep track of this issue.

closing this in favor of https://github.com/kubernetes-incubator/external-dns/pull/261


Franz 5.4.1 not starting up

Describe the bug
I'm using Franz on Fedora 31. When I launch Franz via icon I see processes, but no GUI.
When I launched it through the terminal, I see this log:
SyntaxError: /home/[user-name-here]/.config/Franz/config/proxy.json: Unexpected end of JSON input     at JSON.parse (<anonymous>)     at readFileSync (/tmp/.mount_Franz-yfjn2o/resources/app.asar/node_modules/jsonfile/index.js:63:17)     at Settings._hydrate (/tmp/.mount_Franz-yfjn2o/resources/app.asar/electron/Settings.js:64:56)     at new Settings (/tmp/.mount_Franz-yfjn2o/resources/app.asar/electron/Settings.js:41:12)     at Object.<anonymous> (/tmp/.mount_Franz-yfjn2o/resources/app.asar/index.js:66:23)     at Module._compile (internal/modules/cjs/loader.js:786:30)     at Object.Module._extensions..js (internal/modules/cjs/loader.js:798:10)     at Module.load (internal/modules/cjs/loader.js:645:32)     at Function.Module._load (internal/modules/cjs/loader.js:560:12)     at Object.<anonymous> (/tmp/.mount_Franz-yfjn2o/resources/electron.asar/browser/init.js:181:12) Fontconfig warning: "/usr/share/fontconfig/conf.avail/05-reset-dirs-sample.conf", line 6: unknown element "reset-dirs"
To Reproduce
Steps to reproduce the behavior:

Try starting the Franz

Expected behavior
Launch a program with GUI
Additional context
Previously I was using Franz 5.3.3 which was working fine. I've reset cache from Franz settings and after this it's not starting. Same is for 5.4.1 version...

/home/[user-name-here]/.config/Franz/config/proxy.json renamed proxy.json and started Franz again, which caused new proxy.json to be created and hooray, GUI has started.

Just renamed both files json in
c:\Users<username>\AppData\Roaming\Franz\config
and it's working. Thanks Dima!!! Your solutions rocks!!!!!!!!!!!!
And if it does it again I will create a batch file fo it :)

@fyto5 I'm glad that my workaround worked for you.
Still hope we won't need to use it in future updates))


Bug: 405: Method Not Allowed when using Websockets with Litestar and Nginx Unit

Description
I believe there may be an issue with how Litestar handles Websocket connections incoming from a client app hosted with Nginx Unit.
This problem does not happen with uvicorn, only Nginx Unit.
From my typescript react app I initiate the websocket connection:
      const ws = new WebSocket(
        `${import.meta.env.VITE_WEBSOCKET_URL}/test?token=myauthtoken`,
      );

and receive this error from litestar:
/site-packages/litestar/_asgi/routing_trie/traversal.py", line 174, in parse_path_to_route
    raise MethodNotAllowedException() from e
litestar.exceptions.http_exceptions.MethodNotAllowedException: 405: Method Not Allowed

I traced the issue back to this function in that same file:
def parse_node_handlers(
    node: RouteTrieNode,
    method: Method | None,
) -> ASGIHandlerTuple:
    """Retrieve the handler tuple from the node.

    Args:
        node: The trie node to parse.
        method: The scope's method.

    Raises:
        KeyError: If no matching method is found.

    Returns:
        An ASGI Handler tuple.
    """

    if node.is_asgi:
        return node.asgi_handlers["asgi"]
    if method:
        return node.asgi_handlers[method]
    return node.asgi_handlers["websocket"]

When I watch the "method" parameter on the incoming connection from the websocket and I'm using Uvicorn, method is "None" and everything works as expected.
When using Nginx Unit method is "GET" so it tries to handle it like an http connection rather than a websocket one and you get the above error.
If I then modify
if method:

to
if method and not node.asgi_handlers.get("websocket"):

I get past the "method not allowed" error but then I get
/site-packages/litestar/middleware/_internal/exceptions/middleware.py", line 232, in handle_websocket_exception
    await send(event)
RuntimeError: WebSocket connect not received

I then took a look at the function from the first error:
def parse_path_to_route(
    method: Method | None,
    mount_paths_regex: Pattern | None,
    mount_routes: dict[str, RouteTrieNode],
    path: str,
    plain_routes: set[str],
    root_node: RouteTrieNode,
) -> tuple[ASGIApp, RouteHandlerType, str, dict[str, Any], str]:
    """Given a scope object, retrieve the asgi_handlers and is_mount boolean values from correct trie node.

    Args:
        method: The scope's method, if any.
        root_node: The root trie node.
        path: The path to resolve scope instance.
        plain_routes: The set of plain routes.
        mount_routes: Mapping of mount routes to trie nodes.
        mount_paths_regex: A compiled regex to match the mount routes.

    Raises:
        MethodNotAllowedException: if no matching method is found.
        NotFoundException: If no correlating node is found or if path params can not be parsed into values according to the node definition.

    Returns:
        A tuple containing the stack of middlewares and the route handler that is wrapped by it.
    """

    try:
        if path in plain_routes:
            asgi_app, handler = parse_node_handlers(node=root_node.children[path], method=method)
            return asgi_app, handler, path, {}, path

        if mount_paths_regex and (match := mount_paths_regex.match(path)):
            mount_path = path[: match.end()]
            mount_node = mount_routes[mount_path]
            remaining_path = path[match.end() :]
            # since we allow regular handlers under static paths, we must validate that the request does not match
            # any such handler.
            children = (
                normalize_path(sub_route)
                for sub_route in mount_node.children or []
                if sub_route != mount_path and isinstance(sub_route, str)
            )
            if not any(remaining_path.startswith(f"{sub_route}/") for sub_route in children):
                asgi_app, handler = parse_node_handlers(node=mount_node, method=method)
                remaining_path = remaining_path or "/"
                if not mount_node.is_static:
                    remaining_path = remaining_path if remaining_path.endswith("/") else f"{remaining_path}/"
                return asgi_app, handler, remaining_path, {}, root_node.path_template

        node, path_parameters, path = traverse_route_map(
            root_node=root_node,
            path=path,
        )
        asgi_app, handler = parse_node_handlers(node=node, method=method)
        key = method or ("asgi" if node.is_asgi else "websocket")
        parsed_path_parameters = parse_path_params(node.path_parameters[key], tuple(path_parameters))

        return (
            asgi_app,
            handler,
            path,
            parsed_path_parameters,
            node.path_template,
        )
    except KeyError as e:
        raise MethodNotAllowedException() from e
    except ValueError as e:
        raise NotFoundException() from e

I then modified
key = method or ("asgi" if node.is_asgi else "websocket")

to
key = method if method and not node.asgi_handlers.get("websocket") else ("asgi" if node.is_asgi else "websocket")

and now everything works as expected.
The reason I believe this may be a bug is the way if its determining if it's a websocket connection in the "parse_node_handlers" function.
When I check the websocket spec, page 17, point 2 it says

"The method of the request MUST be GET, and the HTTP version MUST be at least 1.1."

So I think the method coming through as "GET" on the websocket connection from Nginx Unit is normal behavior and the method being "None" from Uvicorn is abnormal.
Unfortunately, it seems like Litestar relies on method being "none" currently to handle the websocket connection which is breaking websockets for servers following that spec.
URL to code causing the issue
No response
MCVE
No response
Steps to reproduce
No response
Screenshots
No response
Logs
/site-packages/litestar/_asgi/routing_trie/traversal.py", line 174, in parse_path_to_route
    raise MethodNotAllowedException() from e
litestar.exceptions.http_exceptions.MethodNotAllowedException: 405: Method Not Allowed

/site-packages/litestar/middleware/_internal/exceptions/middleware.py", line 232, in handle_websocket_exception
    await send(event)
RuntimeError: WebSocket connect not received

Litestar Version
2.13.0
Platform

[X] Linux
[ ] Mac
[ ] Windows
[ ] Other (Please specify in the description above)

[!NOTE]
While we are open for sponsoring on GitHub Sponsors and
OpenCollective, we also utilize Polar.sh to engage in pledge-based sponsorship.
Check out all issues funded or available for funding on our Polar.sh dashboard

If you would like to see an issue prioritized, make a pledge towards it!
We receive the pledge once the issue is completed & verified
This, along with engagement in the community, helps us know which features are a priority to our users.

interesting, I dont remember we do something fancy in uvicorn.
a few questions: do you use websockets or wsproto in uvicorn ? does the same happens with hypercorn or granian ?

This is actually for a work project so I'm a bit limited in what software I'm allowed to install - IT Security and all that.
I've only tested uvicorn and Nginx Unit but I've tested this on multiple machines. I didn't actually have this problem using uvicorn and developing the whole thing it was only when I deployed to our production server that was running a production asgi server that this issue cropped up.
Afterwards, I also installed Nginx Unit on my dev machine to confirm the issue and find the cause.
[[package]]
name = "websockets"
version = "14.1"

If it isn't uvicorn doing it, my only other thought was maybe there was some upstream code in Litestar that clears the method  during the websocket connection in certain scenarios but, assuming the method parameter is literal and unaltered (meaning it is supposed to be exactly as sent GET, POST etc.) then according to the spec, method should be "GET" for websocket connections so I wouldn't think the way it is written now would be a valid way to determine if the connection is a websocket or not, no?
1    if node.is_asgi:
2        return node.asgi_handlers["asgi"]
3    if method:
4        return node.asgi_handlers[method]
5    return node.asgi_handlers["websocket"]

I'm trying to understand how line 5 will ever get hit if method is always supposed to be "GET" for the incoming websocket connection?

ok too bad, that would have been useful to pinpoint if uvicorn is doing something fancy.
would you mind setting up a small repro, I wanted to try nginx unit for a long time so that would be a good occasion ;)

Sorry for the delay was out of the office Friday and Monday.
I wasn't entirely sure how to package this for you for a repro because of all the requirements but I tried my best.
Check the README.md on this repo: https://github.com/FixFlare/bug_3887 and let me know if you have any questions.
There is a sample nginx unit config in there as well for you to use.

@euri10 This feels the same as https://github.com/litestar-org/litestar/issues/3840#issuecomment-2438153236

ok thank you for linking that @Alc-Alc and thanks for the very involved repro @FixFlare , it seems like it's an issue upstream indeed.
on a side note, I see you're using aioredis which died last year, you may want to change that probably.

@euri10 Noted - thanks
I'm mainly a .NET guy so not as up-to-date on the happenings of python packages. I'm sure I got it off some old documentation page that hadn't been updated yet.
@Alc-Alc  I agree, looks to be the same issue and I understand the point being made by @provinzkraut - thank you both
With that said, I opened up an issue over on the Nginx Unit github here
The good news is I have a workaround for now and I think it's best for everyone if the issue gets fixed at the actual source.

@FixFlare Just as an aside

During development I used Litestar's recommended dev server "uvicorn"

uvicorn is not just a dev server btw 🙂


[FLINK-36854] Fix comments and default expressions missing after being transformed

This closes FLINK-36854.
Consider the following simple schema:
[id INT NOT NULL COMMENT 'id_field' DEFAULT 17]
This would be sync to downstream sink databases that supports them intactly.
However, things would go wrong after being transformed like this:
transform:
  - projection: id, id AS id_alias, id + 1 AS id_new

Here, id_new column should carry no comments / default expressions obviously, since it has nothing to do with original id technically.
However, for id and id_alias column, it's reasonable to expect that comments and default expressions to be kept. Worse still, the nullability of id_alias will be lost since the previous half is regarded as a complex expression, and nullability of an expression's return type is uncertain.
So, currently the transform will yields the following schema:
[
  id INT NOT NULL,
  id_alias INT,
  id_new INT
]

With this PR, deduced schema will be something like:
[
  id INT NOT NULL COMMENT 'id_field' DEFAULT 17,
  id_alias INT NOT NULL COMMENT 'id_field' DEFAULT 17,
  id_new INT
]

Some extra parts have been made in TransformParser#generateProjectionColumns since the previous version is too obscure and cryptic.

Would @ruanhang1993 and @aiwenmo like to take a look?

Would @ruanhang1993 and @aiwenmo like to take a look?

I will review it.

The supplement for renaming the data type of the original column is great.
For the moment, I can't see where the code needs to be optimized.


API Design Review WG / proposal

This is a tracking issue to discuss the possibility of a working group (or whatever construct) around API Design Review for CNCF projects.
For context: there is a group of API design leads from various organizations today (Roblox, IBM, Microsoft, Netflix, and some ex-Googlers) who meet in a regular meeting around API Enhancement Proposals (https://aep.dev/). We've previously applied to be a CNCF project or working group (see #448).
We're looking at ways to contribute to the CNCF ecosystem, and one such way is to help review new APIs that are being introduced by CNCF projects. Long-term we'd like to develop a unified specification around remote APIs, but short-term we could use our time to review new APIs being introduced, help drive them toward uniform best practices, and use that to refine our own specification in progress.
Perhaps there's time to discuss this at the next tag meeting (2/21?)
Relevant slack threads:

https://cloud-native.slack.com/archives/CL3SL0CP5/p1704905973103559
https://cloud-native.slack.com/archives/CL3SL0CP5/p1704914379664109

@angellk actually sorry about this but I have a vacation planned on 02/21, so it'll be difficult for me to speak to it. Would it be possible to bump this topic up to 02/07 or after on 03/06?

@toumorokoshi we'll look for a different date!

@toumorokoshi Let's plan on 03/06

sounds good! we'll be there.

Related: #448

Hi everyone, we've decided to move forward with an App Dev Working Group, in full awareness that this WG is somewhat out of scope for the App Delivery TAG.
We would like to see if we can keep interest consistently high to eventually create a TAG App Development.
For now, we're asking you to join the App Dev WG (#wg-app-development on the CNCF Slack) and bring this up as a topic of discussion within that WG


\emph failed with \bfseries

Perhaps it's better to leave out the \f@series macro in \g_@@_em_prop?
BTW, the new mechanism makes \em behave different from LaTeX2e kernel's version if used with \slshape (well, I wonder which is right):
\documentclass[a4paper,10pt]{article}
\begin{document}
\slshape Test \emph{emphasized text level 1 with \emph{level 2 with \emph{level 3}}}.
% kernel version: level 1 & 3 is \upshape, level 2 is \itshape
% fontspec version: level 1 & 3 is \itshape, level 2 is \upshape
\end{document}

hotfix for \slshape problem:
\prop_gput:Nnn \g__fontspec_em_prop {m/sl} {1}

Hmm, I guess I should have called the new version \Emph to avoid breaking everyone's documents!!

Can you post an example of what's breaking with bfseries? The logic of the new \emph command is to look up whether the current series+shape is on the "emph scale", and if not apply the first level of emphasis. So if there's nothing listed for a particular series it should just start from the beginning.
Unless I'm mistaken the following example works correctly?
\documentclass[a4paper,10pt]{article}
\usepackage{fontspec}
\begin{document}
{test \emph{test \bfseries \emph{test}}}\par
{\bfseries test \emph{test \emph{test}}}
\end{document}

MWE:
\documentclass[a4paper,10pt]{article}
\usepackage{fontspec}

\begin{document}

{\bfseries Test \emph{emphasized level 1 with \emph{level 2 with \emph{level 3}}}.}

\end{document}

Well, this problem happens when \em is nested deeper than 2 levels. Because series / shape combinations like bx/it or b/it are not registered in g_@@_em_prop, the second level of \em uses \emreset instead of \eminnershape.

Ah, sorry I missed this earlier. You’re right of course.
While I could drop the idea of having series and shape together as part of \emph, what do you think about defaulting to something like the following?
\emfontdeclare{ \emshape, \eminnershape, \upshape \bfseries, \emshape, \eminnershape }

I’m not sure if I’m overcomplicating matters here :)
This still doesn’t work if someone wants to define multiple levels of boldness (\fontseries{sb}, for example). I.e., the changes could still some documents.
Regardless of where I go with that, I think I have to change the name of \emph to \Emph just for sanity’s sake.

Registering \f@shape alone in \g_@@_em_prop would be fine:
\documentclass[a4paper,10pt]{article}
\usepackage{fontspec}
\setmainfont{TeX Gyre Termes}

\ExplSyntaxOn\makeatletter
\cs_set_protected:Npn \emfontdeclare #1
  {
    \prop_clear:N \g__fontspec_em_prop
    \int_zero:N   \l__fontspec_emdef_int
    \group_begin:
      \normalfont
      \clist_map_inline:nn {\emreset,#1}
        {
          ##1
          \prop_gput_if_new:NxV \g__fontspec_em_prop { \f@shape } { \l__fontspec_emdef_int }
          \prop_gput:Nxn \g__fontspec_em_prop { switch-\int_use:N \l__fontspec_emdef_int } { ##1 }
          \int_incr:N \l__fontspec_emdef_int
        }
    \group_end:
  }
\DeclareRobustCommand \em
  {
    \@nomath\em

    \prop_get:NxNT \g__fontspec_em_prop { \f@shape } \l__fontspec_em_tmp_tl
      { \int_set:Nn \l__fontspec_em_int { \l__fontspec_em_tmp_tl } }

    \int_incr:N \l__fontspec_em_int

    \prop_get:NxNTF \g__fontspec_em_prop { switch-\int_use:N \l__fontspec_em_int } \l__fontspec_em_switch_tl
      { \l__fontspec_em_switch_tl }
      {
        \int_zero:N \l__fontspec_em_int
        \emreset
      }

  }
\ExplSyntaxOff\makeatother
\emfontdeclare{\emshape, \eminnershape}

\begin{document}

Test \emph{emphasized level 1 with \emph{level 2 with \emph{level 3 }}}.

{\bfseries Test \emph{emphasized level 1 with \emph{level 2 with \emph{level 3 }}}.}

\end{document}

Yes, that definitely works and it probably what I’ll move to. The reason I didn’t do that originally, though, was to allow people to — for example — use boldness as part of emphasis if they like.
I now think there’s too much compromise with that idea so I’ll add a separate feature to support that if really desired.
Thanks for looking into the code in such a detailed way!

Regardless of where I go with that, I think I have to change the name of
\emph to \Emph just for sanity’s sake.

I don't think anyone will want both in the same document.
How about instead having a command or package option [classicemph] or some
such that just backs it out goes back to the original \emph for when people
need that compatibility.

Yep, something like that :)


Fix documentation for yield

#33872 PR was misleading as i though inheritance from GDScriptFunctionState was optional. To be honest, i didn' t even understand how it worked at that point.

It seems to me that this example is a bit confusing.
If do_something() does not contain yield(), then there is no need for yield(do_something(), "completed"), you can simply write:
func do_something():
    print("Something is done!")

func _ready():
    do_something()
    print("_ready is done!")

# prints:
# Something is done!
# _ready is done!

So _ready will wait for the function to complete, this is not JavaScript.
The following example is better suited here:
func my_func():
    yield(get_tree().create_timer(1.0), "timeout")
    print("my_func")

func _ready():
    print("_ready 1")
    yield(my_func(), "completed")
    print("_ready 2")

# prints:
# _ready 1
# my_func
# _ready 2

While:
func my_func():
	yield(get_tree().create_timer(1.0), "timeout")
	print("my_func")

func _ready():
	print("_ready 1")
	my_func() # (without yield)
	print("_ready 2")

# prints:
# _ready 1
# _ready 2
# my_func

It seems to me that this example is a bit confusing.
If do_something() does not contain yield(), then there is no need for yield(do_something(), "completed"), you can simply write:
func do_something():
    print("Something is done!")

func _ready():
    do_something()
    print("_ready is done!")

# prints:
# Something is done!
# _ready is done!

So _ready will wait for the function to complete, this is not JavaScript.
The following example is better suited here:
func my_func():
    yield(get_tree().create_timer(1.0), "timeout")
    print("my_func")

func _ready():
    print("_ready 1")
    yield(my_func(), "completed")
    print("_ready 2")

# prints:
# _ready 1
# my_func
# _ready 2

While:
func my_func():
	yield(get_tree().create_timer(1.0), "timeout")
	print("my_func")

func _ready():
	print("_ready 1")
	my_func() # (without yield)
	print("_ready 2")

# prints:
# _ready 1
# _ready 2
# my_func

Well if yield(get_tree().create_timer(1.0), "timeout") is used instead of yield(get_tree(), "idle_frame")
then users will think they have to wait in the second function. In effect, yield(get_tree(), "idle_frame") does nothing else than inheriting GDScriptFunctionState to the second function, so it is more like a hack workaround until await is properly implemented as @Xrayez pointed out.

yield(get_tree().create_timer(1.0), "timeout") this is just an example of a payload. If the function is not suspended (via yield), then the function that called it will wait for it anyway (i.e. it will be synchronous).

yield(get_tree().create_timer(1.0), "timeout") this is just an example of a payload. If the function is not suspended (via yield), then the function that called it will wait for it anyway (i.e. it will be synchronous).

Yes indeed yield(get_tree().create_timer(1.0), "timeout") instead of yield(get_tree(), "idle_frame") if the user wants to wait for an additional second.

if the user wants to wait for an additional second

And if they do not want to wait? :stuck_out_tongue_winking_eye:
I mean the following
func f():
    yield(get_tree(), "idle_frame")
    # OR yield(get_tree().create_timer(0.0), "timeout")
    ... # a code without yield()

func g():
    yield(f(), "completed")
    ...

is completely equivalent to the following:
func f():
    ... # a code without yield()

func g():
    f()
    ...

if the user wants to wait for an additional second

And if they do not want to wait? 😜
I mean the following
func f():
    yield(get_tree(), "idle_frame")
    # OR yield(get_tree().create_timer(0.0), "timeout")
    ... # a code without yield()

func g():
    yield(f(), "completed")
    ...

is completely equivalent to the following:
func f():
    ... # a code without yield()

func g():
    f()
    ...

Sorry, i don't see your point. If they don't want to wait then they should not use yield in the first place. A good use-case for yield (i use it alot):
func do_something():
    yield(something(), "completed") # Wait until this finishes and then run something2()
    yield(something2(), "completed") # something2() depends on data received from something()
    yield(something3(), "completed")` # something3() depends on actions done from something2()
    # Without the yields, something2() and something3() will fail as they will run at the same frame as something()

If what you meant is that yield(get_tree().create_timer(0.0), "timeout") is the same as  yield(get_tree(), "idle_frame"), well not realy. The latter is more expensive as it has to create resources.

I guess I'm not very good at expressing my thoughts in English.
I mean, your example is unsuccessful and can be misleading because the following code
func _ready():
    yield(do_something(), "completed")
    yield(do_something_else(), "completed")
    print("All functions are done!")

func do_something():
    yield(get_tree(), "idle_frame")
    print("Something is done!")

func do_something_else():
    yield(get_tree(), "idle_frame")
    print("Something else is done!")

is equivalent to the following:
func _ready():
    do_something()
    do_something_else()
    print("All functions are done!")

func do_something():
    print("Something is done!")

func do_something_else():
    print("Something else is done!")

If what you meant is that yield(get_tree().create_timer(0.0), "timeout") is the same as yield(get_tree(), "idle_frame"), well not realy. The latter is more expensive as it has to create resources.

But yield(get_tree()," idle_frame ") binds a function to the FPS, which is not always constant.

Without the yields, something2() and something3() will fail as they will run at the same frame as something()
I can not reproduce it.

I guess I'm not very good at expressing my thoughts in English.
I mean, your example is unsuccessful and can be misleading because the following code
func _ready():
    yield(do_something(), "completed")
    yield(do_something_else(), "completed")
    print("All functions are done!")

func do_something():
    yield(get_tree(), "idle_frame")
    print("Something is done!")

func do_something_else():
    yield(get_tree(), "idle_frame")
    print("Something else is done!")

is equivalent to the following:
func _ready():
    do_something()
    do_something_else()
    print("All functions are done!")

func do_something():
    print("Something is done!")

func do_something_else():
    print("Something else is done!")

If what you meant is that yield(get_tree().create_timer(0.0), "timeout") is the same as yield(get_tree(), "idle_frame"), well not realy. The latter is more expensive as it has to create resources.

But yield(get_tree()," idle_frame ") binds a function to the FPS, which is not always constant.

Nope,

func _ready():
    do_something()
    do_something_else()
    print("All functions are done!")

func do_something():
    print("Something is done!")

func do_something_else():
    print("Something else is done!")

The above functions might run at the same frame if yield is not used. There is no guarantee that do_something_else() will run after do_something().

func _ready():
    yield(do_something(), "completed")
    yield(do_something_else(), "completed")
    print("All functions are done!")

func do_something():
    yield(get_tree(), "idle_frame")
    print("Something is done!")

func do_something_else():
    yield(get_tree(), "idle_frame")
    print("Something else is done!")

These, wont. Second function will wait for the first. Of course these are examples, as the name implies do_something() has to do something that actualy takes time and not just print() an output. A better example would be:

func _ready():
    yield(do_something(), "completed")
    yield(do_something_else(), "completed")
    print("All functions are done!")

func do_something():
    yield(get_tree(), "idle_frame")
    for x in 100000
        print("Func 1 printing! ", x)

func do_something_else():
    yield(get_tree(), "idle_frame")
    for x in 100000
        print("Func 2 printing! ", x)

The above should demonstrate the case well. And you should be able to reproduce it.

The above functions might run at the same frame if yield is not used. There is no guarantee that do_something_else() will run after do_something().

If the body of the do_something() function does not contain yield, then do_something_else() will always be run after do_something() is completed.
Try the following code:
func _ready():
    do_something()
    do_something_else()
    print("All functions are done!")

func do_something():
    for x in 100000:
        print("Func 1 printing! ", x)

func do_something_else():
    for x in 100000:
        print("Func 2 printing! ", x)

The above functions might run at the same frame if yield is not used. There is no guarantee that do_something_else() will run after do_something().

If the body of the do_something() function does not contain yield, then do_something_else() will always be run after do_something() is completed.
Try the following code:
func _ready():
    do_something()
    do_something_else()
    print("All functions are done!")

func do_something():
    for x in 100000:
        print("Func 1 printing! ", x)

func do_something_else():
    for x in 100000:
        print("Func 2 printing! ", x)

Not always. That depends on your hardware and how fast it can finish the loop. Try increasing the number from 100000 to 1000000 (or more).

Without the yields, something2() and something3() will fail as they will run at the same frame as something()
I can not reproduce it.

The intention of this example was not to be able to replicate it. This was merely used to demonstrate the case, which is, that yield can be used to run synchronized code.

Not always. That depends on your hardware and how fast it can finish the loop. Try increasing the number from 100000 to 1000000 (or more).

It still doesn't work:
func _ready():
    do_something()
    do_something_else()
    print("All functions are done!")

func do_something():
    for i in 100000000:
        pass
    print("Func 1 printing!")

func do_something_else():
    print("Func 2 printing!")

If do_something() and do_something_else() were started at the same time (according to your logic), then "Func 2 printing!" would be printed first, since do_something() takes much longer.

The intention of this example was not to be able to replicate it. This was merely used to demonstrate the case, which is, that yield can be used to run synchronized code.

The user may get the impression that one should always use yields when they run two or more functions.
I think the lack of an example is better than a misleading example. You have already confused at least one person. :smile:

I think the lack of an example is better than a misleading example. You have already confused at least one person. 😄
I'm pretty sure that not my fault at this point ;). You are right tho, my example was wrong, a for loop will hang the engine until it finishes. I couldn't think of any real example to provide that you could actualy test. Maybe the following is more descriptive:

func _ready():
    yield(do_something(), "completed") # WILL WAIT FOR THE ASYNC FUNCTION TO END
    yield(do_something_else(), "completed")
    print("All functions are done!")

func do_something():
    yield(get_tree(), "completed")
    # Do asynchronous stuff that take time but are NOT blocking.
   ......
    #
    return

func do_something_else():
    print("Func 2")

The key point here is that do_something() is running asynchronous stuff inside it, which means that the engine will continue execution over to do_something_else(). If you want to prevent that and wait for do_something(), you can yield. So maybe add the # Do asynchronous stuff comment?
Besides all, i don't see how your suggestion of adding yield(get_tree().create_timer(), "timeout") would help the whole situation (pretty much how to discussion started). Unless all you want is to prove me wrong, which renders the discussion invaluable.

The above functions might run at the same frame if yield is not used. There is no guarantee that do_something_else() will run after do_something().

Nope. There is a pretty strong guarantee that do_something_else() will run after do_something(). It is a function call, which pushes to the (one per thread) stack and switches the instruction counter to executing the other function. When that function returns (or runs past the end), it pops from that stack, and switches back to the caller.
If the x(..) expression started a new thread or a new coroutine, the statement above might have been true.
Note that the yield(obj, signal) statement currently acts as a return statement which gives a GDScriptFunctionState to the caller. It also connects the signal to the state's resume method, so that the function continues when the signal is fired.

func do_something():
	while true:
		# Run until the sun stops burning
		pass
	print("do something")

func do_something_inside_something():
	OS.delay_msec(3000)
	print("Func 1 printing!")

func do_something_else():
	print("Func 2 printing!")

func _ready():
	var thread = Thread.new()
	thread.start()
	do_something()
	do_something_else()
	print("All functions are done!")

@dalexeev There you go, you can test that but i dont think it can be used as an example in the docs as it overextends beyond the scope of yield (or is it?).

I'm just not seeing any good suggestion so far.

Perhaps this example is better:
func _ready():
    yield(countdown(), "completed") # waiting for the countdown() function to complete
    print('Ready')

func countdown():
    yield(get_tree(), "idle_frame") # returns a GDSCriptFunctionState object to _ready()
    print(3)
    yield(get_tree().create_timer(1.0), "timeout")
    print(2)
    yield(get_tree().create_timer(1.0), "timeout")
    print(1)
    yield(get_tree().create_timer(1.0), "timeout")

I'm just not seeing any good suggestion so far.

Perhaps this example is better:
func _ready():
    yield(countdown(), "completed") # waiting for the countdown() function to complete
    print('Ready')

func countdown():
    yield(get_tree(), "idle_frame") # returns a GDSCriptFunctionState object to _ready()
    print(3)
    yield(get_tree().create_timer(1.0), "timeout")
    print(2)
    yield(get_tree().create_timer(1.0), "timeout")
    print(1)
    yield(get_tree().create_timer(1.0), "timeout")

Yes, looks much better to me. And certainly easier to understand.

I'm just not seeing any good suggestion so far.

Perhaps this example is better:
func _ready():
    yield(countdown(), "completed") # waiting for the countdown() function to complete
    print('Ready')

func countdown():
    yield(get_tree(), "idle_frame") # returns a GDSCriptFunctionState object to _ready()
    print(3)
    yield(get_tree().create_timer(1.0), "timeout")
    print(2)
    yield(get_tree().create_timer(1.0), "timeout")
    print(1)
    yield(get_tree().create_timer(1.0), "timeout")

Thank you @dalexeev . You sould have started with that instead!

@zaksnet Sorry, I made a typo in the second comment in the example. The correct spelling is GDScriptFunctionState.

Thanks!


Magic bytes are missing in Avro serialized message

Description
Have implemented custom serializer with Avro, noticed the magic bytes are missing while deserializing.
How to reproduce
Below is code used for custom serializer, noticed magic bytes don't exist while deserializing.
public class CustomAvroSerializer : IAsyncSerializer
where T : class, ISpecificRecord
{
public Task<byte[]> SerializeAsync(T data, SerializationContext context)
{
return Task.Run(() =>
{
using (var ms = new MemoryStream())
{
var enc = new BinaryEncoder(ms);
var writer = new SpecificDefaultWriter(data.Schema);
writer.Write(data, enc);
return ms.ToArray();
}
});
}
}
Checklist
Please provide the following information:

[ ] A complete (i.e. we can run it), minimal program demonstrating the problem. No need to supply a project file.
[ ] Confluent.Kafka nuget version.
[ ] Apache Kafka version.
[ ] Client configuration.
[ ] Operating system.
[ ] Provide logs (with "debug" : "..." as necessary in configuration).
[ ] Provide broker log excerpts.
[ ] Critical issue.

As you've stated, you've created your own Serializer. If you did not put the "magic bytes" there in the serializer, can you explain why you'd expect them in the deserializer or record?
More specifically, what's the use case for having your own Serializer?

How to include magic bytes with custom serializer?
 If you did not
put the "magic bytes" there in the serializer, can you explain why you'd
expect them in the deserializer or record?
More specifically, what's the use case for having your own Serializer?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/confluentinc/confluent-kafka-dotnet/issues/1663#issuecomment-895359843,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACZIUPTUO4DQ53BZG47UL23T376B3ANCNFSM5BNM5E3Q
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email
.

It would be enc.WriteBytes(byte[]), but you're going off-road and this pattern is not supported by this project.
You can see in the source code that your code shown is almost the exact same that is already done for Specific Avro types


ntr: mitotic cell cycle arrest in M-phase

ntr: mitotic cell cycle arrest in M-phase
A cell cycle phenotype that affects or involves the  occurrence of mitotic cell cycle arrest in M-phase.
( I thought I already requested and used this term?)
(arrest with a spindle)

added another synonym to FYPO:0000608 ! abnormal cell cycle arrest in mitotic M phase

edit file: fd602879fa65355870ae8d5088ae34201572015f
release: 181b3899dabcbb4162464ba5e7afb857bd6e6776


Unable to create releases - must accept GitHub Developer Marketplace Agreement first

@kevgo It appears that we need to accept the GitHub Developer Marketplace Agreement again, any chance you could help out with this? The agreement must have changed -- IIRC we've accepted this in the past 🤷♂

Done, and I also published the latest version v1.0.3 in the process! Please let me know if you need anything else.
https://github.com/marketplace/actions/git-town-github-action

Thanks a bunch!


Deep Sleep example without LoRa

I was trying to test Deep Sleep on the Wisblock RAK4631. The only way to get the power usage down to 24uA is to initialise LoRa and LoRaWAN. Is there a way to switch everything off without having to enable the full LoRa stack?
A low power example without LoRa would be very useful.

Without initializing the SX1262 you will not get low power. Because the datasheet of the SX1262 says that the chip goes from Reset to Startup and then into Standby mode. You have to actively set the SX1262 into Sleep mode to get the low power consumption.
SX1261-2 datasheet V1.2 page 60

Yes that makes sense. Is there a simple oneliner or short piece of code that one can use to put the sx126x into sleep? Rather than having to include the complete lora and lorawan libraries? I'm thinking of just sending the correct commands via spi by hand.

Definitely not a oneliner
You would need to call some functions directly from the sx126x_board.cpp and take some parts from board.cpp and spi_board.cpp and

setup _hwConfig as in the first lines of lora_rak4630_init
initialize SPI as in initSPI() and the GPIO's as in SX126xIoInit()
put SX126x into sleep

		SX126xAntSwOff();

		SX126xWriteCommand(RADIO_SET_SLEEP, &sleepConfig.Value, 1);
		SX126xSetOperatingMode(MODE_SLEEP);

Two liner to put LoRa transceiver into sleep mode:
	// We are not using LoRa here
	// But to keep power consumption low we need
	// to initialize the radio
	lora_rak4630_init();
	// And send it to sleep mode
	Radio.Sleep();


iOS - always starts on position x=0 y=0

X and Y options are ignored in function start. With these changes default values are x=0, y=0 but it takes what it cames on parameters.

Thank you for your contribution, it's very much appreciated! 🥳


Add a space between a number and a unit

What it does now: shows result as 0.99555m2
What it should do: show result as 0.99555 m2
Applies for input as well as for calculation sheet.

Done as part of this commit: 765a26f1755ec1c73da39c88d2ac6829d4ad86c2


connection to OBS websocket no more working

PPInk freezing when obs connection selected but obs not started
PPInk no more able to control Obs (interface change not detected)

Beta version available here
ppInk64_M3uObs19a.zip


read_csv: Implement reading of number of rows

Implement reading of number of rows (nrows) in read_csv by using spark's limit.
On the first read, this does not seem to help much with regards to reading speed, because inferSchema is True and spark seems to scan over the full data anyway (see e.g. here). It would help to use it as a similar parameter to read_csv than in pandas to make the API more compatible.

Thanks! merging.

Nice work. Thanks! :D

Thank you for the quick response and merge! :)


Updated Alpine base version to 3.8.

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

Is there any specific reason to switch? The current version should be still maintained.

Yeah, keeping up to date with software versions is always a good idea! :)

Well, not necessarily.

3.8 has been out since June and shares the current latest tag.  Would seem like a good idea to track the latest upstream release, rather than pin to an ageing version forever?
@mbger The OSX security issue seems pretty irrelevant for this?

I would not pin to an aging version forever, but the currently used version is totally fine supported so far. So imho it's not really required to update it yet.

@Daviey My comment not only seems irrelevant, it is irrelevant for this issue. Just wanted to make the point that a general statement like keeping up with software versions is always a good idea imho is not true.


add Windows support

ref: https://github.com/direnv/direnv-vscode/issues/655
prev (wrong): #673
Fix points

quit using single-quotes in package.json scripts (single-quotes won't be recognized in Windows run-s)
use Uri.fsPath() instead of Uri.path()

https://github.com/microsoft/vscode-uri/blob/main/src/uri.ts#L178-L209
passing POSIX-type uri string was causing ENOENT error inside child_process https://github.com/direnv/direnv-vscode/pull/673#issuecomment-1837824571

Notes
Tests
Local tests are not working on Windows.
We may need to fix all occurrences of path.foo() as path.posix.foo(), for example:
- const extensionDevelopmentPath = path.resolve(__dirname, '../..')
+ const extensionDevelopmentPath = path.posix.resolve(__dirname, '../..')

But since tests on Windows weren't running from the beginning, we might be able to fix this afterwards, since this change affects all test files and also CI for POSIX systems.
(opinions are welcome...)
To have direnv work on Windows
After you install direnv on Windows and before launching vscode, you need to have your Environmental values set.
refer to: https://github.com/direnv/direnv/issues/1105
(this might be fixed in the future)
Note that you need to set your machine-wide env values, so the commands should be e.g.
setx DIRENV_CONFIG %APPDATA%\direnv\conf /m

(using setx ... /m, instead of set)
on CMD.exe, or
[Environment]::SetEnvironmentVariable('DIRENV_CONFIG', '%APPDATA%\direnv\conf', 'Machine')

on PowerShell.

Awesome, thank you!


Embedded static resources

Proposal
Go's 1.16 new embed feature is great to bundle static resources into the binary, making it easier to distribute it. Currently, the frameworks relies on a non-interfaced filesystem, which makes it a bit harder to use embedded resources. Only the configuration supports it. I would like to provide a solution for developers wanting to embed their files.

Create a new handler similar to router.Static(), but taking io/fs.FS as a parameter.
Add the ability to use an io/fs.FS to load language files. (This may require a bit of refactoring into the framework so it's possible to load a language file by file)
Provide an abstracted version of the helper/filesystem package so it works with io/fs too.
Allow Request to use generic file system.

On top of adding the ability to embed files, this would also let developers use virtual filesystems and fetch files from other sources more easily. However, the io/fs packge is still a bit young in my opinion, and lacks interfaces for writable FS. I wouldn't want to create a temporary non-standard interface that will probably not be compatible with a potential future standard one. So for now, this issue will stay on standby until more development on the io/fs package.
Because the embed feature is only available in go 1.16+ and that the io.FS interface is required for what I would like to achieve here, we can't build this into the framework without breaking compatibility with prior versions. I don't want to stop supporting older versions (yet), so we could create an external library. Later on, we could consider merging this library into the framework. With v4, I dropped go versions < 1.16.
Possible drawbacks
None.
Additional information
This issue is a feature proposal and is meant to be discussed. The design is not set yet neither.
It is also a good candidate if you want to contribute to the project.

Check how wails v2 handles embedded assets. We could take inspiration from this.

Fully supported in v5.


Doesn't install for node v10.14.2 on macOS Mojave

><EMAIL_ADDRESS>install /myproject/node_modules/shamirsecretsharing
> node-gyp rebuild

xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

Traceback (most recent call last):
  File "/myproject/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py", line 16, in <module>
    sys.exit(gyp.script_main())
  File "/myproject/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 545, in script_main
    return main(sys.argv[1:])
  File "/myproject/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 538, in main
    return gyp_main(args)
  File "/myproject/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 523, in gyp_main
    generator.GenerateOutput(flat_list, targets, data, params)
  File "/myproject/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py", line 2170, in GenerateOutput
    part_of_all=qualified_target in needed_targets)
  File "/myproject/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py", line 795, in Write
    self.Pchify))
  File "/myproject/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py", line 1190, in WriteSources
    cflags = self.xcode_settings.GetCflags(configname)
  File "/myproject/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py", line 551, in GetCflags
    archs = self.GetActiveArchs(self.configname)
  File "/myproject/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py", line 420, in GetActiveArchs
    xcode_archs_default = GetXcodeArchsDefault()
  File "/myproject/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py", line 118, in GetXcodeArchsDefault
    xcode_version, _ = XcodeVersion()
  File "/myproject/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py", line 1265, in XcodeVersion
    version = re.match(r'(\d\.\d\.?\d*)', version).groups()[0]
AttributeError: 'NoneType' object has no attribute 'groups'
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (/myproject/node_modules/npm/node_modules/node-gyp/lib/configure.js:336:16)
gyp ERR! stack     at ChildProcess.emit (events.js:182:13)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:240:12)
gyp ERR! System Darwin 18.2.0
gyp ERR! command "/usr/local/bin/node" "/myproject/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /myproject/node_modules/shamirsecretsharing
gyp ERR! node -v v10.14.2
gyp ERR! node-gyp -v v3.6.0
gyp ERR! not ok
npm ERR! Darwin 18.2.0
npm ERR! argv "/usr/local/bin/node" "/myproject/node_modules/.bin/npm" "install" "--save" "dsprenkels/sss-node"
npm ERR! node v10.14.2
npm ERR! npm  v2.15.12
npm ERR! code ELIFECYCLE

npm ERR<EMAIL_ADDRESS>install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>install script 'node-gyp rebuild'.
npm ERR! This is most likely a problem with the shamirsecretsharing package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs shamirsecretsharing
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!
npm ERR!     npm owner ls shamirsecretsharing
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /myproject/npm-debug.log

Thanks for the buf report!
It looks like Node cannot detect the Xcode version? I have no Apple machine to debug on though, so I'll need a volunteer to fix this. :(

I think this issue has been superseded by #11.


#328: Update demo_content to formulate the password for example_content.yml

Aligns with 3rd party repo change to yaml syntax.
Escapes slashes in the user-supplied password.
Eliminates unneeded escaping for a colon.
Resolves #328.

Thanks for the update!


Set permissions on backup files

So only owner can read and update the backup. https://github.com/nanocurrency/raiblocks/issues/928.

The permissions should be set before anything is written to the file. Otherwise someone could theoretically read the file right after it's closed.

@alexbakker Agreed, I'll push an update.


GitHub Workflows security hardening

This PR adds explicit permissions section to workflows. This is a security best practice because by default workflows run with extended set of permissions (except from on: pull_request from external forks). By specifying any permission explicitly all others are set to none. By using the principle of least privilege the damage a compromised workflow can do (because of an injection or compromised third party tool or action) is restricted.
It is recommended to have most strict permissions on the top level and grant write permissions on job level case by case.

Thanks for the contribution - will go ahead and merge it.

Codecov Report

Merging #1747 (b599546) into trunk (3b63d93) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##            trunk    #1747   +/-   ##
=======================================
  Coverage   83.29%   83.29%
=======================================
  Files         400      400
  Lines       87770    87770
  Branches    10689    10689
=======================================
  Hits        73104    73104
  Misses      11486    11486
  Partials     3180     3180

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 3b63d93...b599546. Read the comment docs.


Revert "Migrate Postwoman to Nuxt.js (full Vue and SCSS support)"

Reverts liyasthomas/postwoman#44, aae579c65073e4bf5a7ad5225f384af27cb2840b, and<PHONE_NUMBER>24d32bb528c3ffad37add52c1e776a.
The aforementioned PR, while good in intention, does not currently deploy properly to GitHub pages and has thus taken down the app. Let's get the app back up and running by temporarily reverting it and the Travis CI config changes that came after it.

Hey @larouxn,
Your changes look good to me!
View build log
TravisBuddy Request Identifier: 82464b40-c67c-11e9-be9f-2924d72427a9

Hey @larouxn,
Your changes look good to me!
View build log
TravisBuddy Request Identifier: 827830b0-c67c-11e9-be9f-2924d72427a9

Hey @larouxn,
Your changes look good to me!
View build log
TravisBuddy Request Identifier: 91781080-c67c-11e9-be9f-2924d72427a9

Hey @larouxn,
Your changes look good to me!
View build log
TravisBuddy Request Identifier: a0802db0-c67c-11e9-be9f-2924d72427a9


rewrite keyword as in Agda and Coq?

As title.
For example, suppose we have +-comm and (p + m) <= (p + n), and we want to prove (m + p) <= (n + p). We could just rewrite twice in Agda and Coq. Can we do it in Aya like this right now?

@tonfeiz No.

Personally, I don't like rewrite as a keyword. It should be a tactic like in Coq or Arend.

That's fine, it doesn't have to be a keyword. So we don't have this kind of mechanism now?

@tonfeiz Yes

Got it.

In case you're interested https://github.com/JetBrains/arend-lib/blob/master/meta/src/main/java/org/arend/lib/meta/RewriteMeta.java

Also a mad scientist' work https://github.com/agda/agda-stdlib/pull/1658

That's great! I'll have look at them. BTW, do we plan to do it in the future?

@tonfeiz Of course, it's a must. Before that we need a good tactic framework, which I guess we can steal some ideas from Lean and Agda. I think Agda has a good tactic framework, but it's been 10 years that nobody's trying to make a set of standard tactics and let everybody use them.

Arend has got a good reference on what tactics should be implemented: https://arend-lang.github.io/documentation/standard-tactics
But I believe the standard tactics of Lean and Coq are more important as they're used by more people so better tested

I'd like to do it in Agda's approach, but first consider dealing with bindings in a dependently typed language... We're about to (or maybe far from -- it all depends on @wsx-ucb) have HOAS in the core, so maybe we can reflect it to the object language. Maybe someone should read https://jesper.sikanda.be/posts/1001-syntax-representations.html

That's OK. I'll first have a look at the post when I have time. Then maybe I'll try to learn something about tactic framework. I don't know much about it now.


White screen Angular integration with marzipano

I tried making an app using angular. I followed the documentation on creating a basic scene but it looks like the scene is not showing properly. It is only showing a white screen but the drag icon is showing so I think the viewer loaded?
Are there any advices on this?
#edit
upon checking, it looks like the cause was Angular material. But I'm still curious why did this happen?

I understand very little about Angular, but usually this sort of problem occurs when you don't set the necessary CSS properties on the viewer element (width, height, etc)

@08BRYLL23 can you explain how did you fix this? i am having the exact white screen but no console errors and everything seems to be loaded. i dont have any other libraries like Material in my project. thanks

anyone else having problem integrating this with Angular here is a working example https://github.com/beshad/angular-marzipano-sandbox

anyone else having problem integrating this with Angular here is a working example https://github.com/beshad/angular-marzipano-sandbox

Thanks @beshad so much!!