Confusion over documentation

Detailed description
Hi! wanted to ask some questions as I am confused over the documentation given the use of a generic word like 'entity'
Imagine I have 2 models. SoftDrink and User with the following rules:

1 DrinkingUser hasMany SoftDrink.
1 SoftDrink belongsTo 1 DrinkingUser

My questions are below:

Do I have to add InstantFields trait to both SoftDrinkCrudController and DrinkingUserCrudController?

Do I have to do this to both DrinkingUser and SoftDrink backpack routes?

CRUD::resource('soft-drink', 'SoftDrinkCrudController')->with(function () {
        Route::any('soft-drink/ajax/{mode?}', 'SoftDrinkCrudController@handleAjaxRequest');
    });

CRUD::resource('drinking-user', 'DrinkingUserCrudController')->with(function () {
        Route::any('drinking-user/ajax/{mode?}', 'DrinkingUserCrudController@handleAjaxRequest');
    });

Am I correct to say that $this->setAjaxEntity('soft-drink'); is added to setup() method of SoftDrinkCrudController only?

I'm going to add this field definition to DrinkingUserCrudController but it doesn't seem to work (after all users table has no soft_drink_id. Is UserCrudController the right place? Or is this supposed to be added to SoftDrinkCrudController to allow create/edit user to show the field to add soft drinks?

[
    'name'                 => 'soft_drink_id',
    'type'                 => 'select2_from_ajax',
    'label'                => 'Soft Drink',
    'view_namespace'       => 'webfactor::fields',
    'model'                => SoftDrink::class,
    'entity'               => 'soft-drink',
    'attribute'            => 'name',
    'placeholder'          => 'Choose',
    'minimum_input_length' => 0,
    'on_the_fly'           => [
        'entity'        => 'soft-drink', // e. g. user, contact, company etc...
    ],
],

For instant create button in list view, May I assume it is this?

Inside DrinkingUserCrudController

$this->addInstantCreateButtonToList(
        'soft-drink', // foreign entity. Should it be soft-drink or softDrinks?
        'add soft drink', // content of the button
        'soft-drink-id', // the name of the ID of the current entity will be
    );

Thank you!

Hi @ziming
I know this is a bit confusing, but there are some technical limitations in Laravel Backpack so I had to trick a bit. That's the reason why I recommend using the trait and routes for all (involved) CrudControllers.

yes
yes
yes - should be enough in your case but:
this won't work for you currently*
yes, should be right

The kind of field type you need is not available yet:

You need a corresponding field type to the function of the button (5.) in the crud list. I definitively see the requirement for such a field type and hope we can provide it soon, because we also need it.

The module is awesome but documentation is .... unclear
Can you please add simple example with something obvious like Country + City?
Where to use trait etc.
Thanks


Increase the size of the webauthn_credential credential_id field (#18739)

Backport #18739
Backport #18760
Unfortunately credentialIDs in u2f are 255 bytes long which with base32 encoding
becomes 408 bytes. The default size of a xorm string field is only a VARCHAR(255)
This problem is not apparent on SQLite because strings get mapped to TEXT there.
Fix #18727
Signed-off-by: Andrew Thornton<EMAIL_ADDRESS>

Please wait #18760

Just merge that in here

Contains backport for #18760

make lgtm work

Still does not work
2022/02/14 22:19:29 ...ations/migrations.go:467:Migrate() [I] Migration[207]: Add webauthn table and migrate u2f data to webauthn
2022/02/14 22:19:30 ...ations/migrations.go:467:Migrate() [I] Migration[208]: Use base32.HexEncoding instead of base64 encoding for cred ID as it is case insensitive
2022/02/14 22:19:30 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column name but struct has not related field
2022/02/14 22:19:30 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column lower_name but struct has not related field
2022/02/14 22:19:30 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column user_id but struct has not related field
2022/02/14 22:19:30 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column public_key but struct has not related field
2022/02/14 22:19:30 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column attestation_type but struct has not related field
2022/02/14 22:19:30 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column aaguid but struct has not related field
2022/02/14 22:19:30 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column sign_count but struct has not related field
2022/02/14 22:19:30 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column clone_warning but struct has not related field
2022/02/14 22:19:30 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column created_unix but struct has not related field
2022/02/14 22:19:30 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column updated_unix but struct has not related field
2022/02/14 22:19:30 routers/common/db.go:33:InitDBEngine() [E] ORM engine initialization attempt #1/10 failed. Error: migrate: migration[208]: Use base32.HexEncoding instead of base64 encoding for cred ID as it is case insensitive failed: Error 1406: Data too long for column 'credential_id' at row 1

I guess it is now base32 and 410 bytes are not enough again...

@zeripath
Sorry, I tested probably while you pressed the merge button

The U2F documentation says that the keyHandle should be at most 255 bytes.
https://neowave.fr/pdfs/FIDO-U2F-CHEAT-SHEET.pdf

keyHandle: unique Key index [up to 255 bytes], generated by U2F device, can be purely random or used to wrap private keys related information (can be unsafe)

Base32 represents a 5 bits as 1 byte.
255 * 8 / 5 = 408.
a) ensure that your table is varchar(410) and that you're not rerunning on a previously partially migrated db
b) You need to tell me how long you need this field. I'm not going to make any further guesses.

@zeripath
You are right 410 should be enough when converting 255 bytes into base32, sorry.
But.
a) I did this on a clean gitea 1.15 database, no partially migrated db
b) The migration is broken and truncates data, if gitea depends on truncation (relaxed sql mode that allows it), this should be documented. But I think this is dangerous and should be handled at a layer above the database system itself.
In the end I have to look at the code and see what is being migrated exactly - and what exceeds 255 bytes so that converting to base32 exceeds 410 bytes.

In case you're not aware I am trying to change this so it doesn't truncate data.

changing v208 to
// Copyright 2021 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.

package migrations

import (
	"encoding/base32"
	"encoding/base64"
	"fmt"

	"xorm.io/xorm"
)

func useBase32HexForCredIDInWebAuthnCredential(x *xorm.Engine) error {
	// Create webauthnCredential table
	type webauthnCredential struct {
		ID           int64  `xorm:"pk autoincr"`
		CredentialID string `xorm:"INDEX VARCHAR(410)"`
	}
	if err := x.Sync2(&webauthnCredential{}); err != nil {
		return err
	}

	var start int
	maxLength := 0
	maxLengthID := int64(0)
	regs := make([]*webauthnCredential, 0, 50)
	for {
		err := x.OrderBy("id").Limit(50, start).Find(&regs)
		if err != nil {
			return err
		}

		for _, reg := range regs {
			credID, _ := base64.RawStdEncoding.DecodeString(reg.CredentialID)
			reg.CredentialID = base32.HexEncoding.EncodeToString(credID)
			if maxLength < len(reg.CredentialID) {
				maxLength = len(reg.CredentialID)
				maxLengthID = reg.ID
			}
		}

		if len(regs) < 50 {
			break
		}
		start += 50
		regs = regs[:0]
	}

	fmt.Printf("MaxLength: %d on ID: %d\n", maxLength, maxLengthID)

	return nil
}

@zeripath
I am not sure if this helps, but it seems that the migration happens from the raw blob column. Those have varying sizes from 472 to 1234 bytes.
(I typed this before your last comment, this is not meant to be a reply)
MariaDB [gitea]> select min(octet_length(raw)),max(octet_length(raw)) from u2f_registration;
+------------------------+------------------------+
| min(octet_length(raw)) | max(octet_length(raw)) |
+------------------------+------------------------+
|                    473 |                   1234 |
+------------------------+------------------------+

migration[208]: Use base32.HexEncoding instead of base64 encoding for cred ID as it is case insensitive failed: MaxLength: 408 on ID: 486

So v207 works (base64) but migrating to base32 fails. I double checked that the column is varchar(410)

the maxlength there is 408 chars not 410
how can 410 not be long enough?!

I bet the table is actually being sync'd at 255 because I forgot to update models/auth/webauthn.go too.

Could you update models/auth/webauthn.go:46 to:
	CredentialID    string `xorm:"INDEX VARCHAR(410)"`

(and restore v208.go)

I can try but this looked correct to me:
MariaDB [gitea]> describe webauthn_credential;
+------------------+--------------+------+-----+---------+----------------+
| Field            | Type         | Null | Key | Default | Extra          |
+------------------+--------------+------+-----+---------+----------------+
| id               | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| name             | varchar(255) | YES  |     | NULL    |                |
| lower_name       | varchar(255) | YES  |     | NULL    |                |
| user_id          | bigint(20)   | YES  |     | NULL    |                |
| credential_id    | varchar(410) | YES  | MUL | NULL    |                |
| public_key       | blob         | YES  |     | NULL    |                |
| attestation_type | varchar(255) | YES  |     | NULL    |                |
| aaguid           | blob         | YES  |     | NULL    |                |
| sign_count       | bigint(20)   | YES  |     | NULL    |                |
| clone_warning    | tinyint(1)   | YES  |     | NULL    |                |
| created_unix     | bigint(20)   | YES  |     | NULL    |                |
| updated_unix     | bigint(20)   | YES  |     | NULL    |                |
+------------------+--------------+------+-----+---------+----------------+

I just don't understand why else the db would be moaning about a string being too large when it's smaller than the size of the column. I mean 408 is clearly smaller than 410 (https://github.com/go-gitea/gitea/pull/18756#issuecomment-1039641638)

Me neither, ran a test but still
ORM engine initialization attempt #1/10 failed. Error: migrate: migration[208]: Use base32.HexEncoding instead of base64 encoding for cred ID as it is case insensitive failed: Error 1406: Data too long for column 'credential_id' at row 1
``

OK I guess we just try increasing the size of that column until MySQL doesn't moan anymore. Shall we say VARCHAR(500)?
You should just be able to update the table to VARCHAR(500) and rerun the migration - (v209 will then likely fail but meh we'll need yet another PR)

I can try after sleeping, I still find it weird that it fails.

2022/02/15 00:14:31 routers/common/db.go:34:InitDBEngine() [I] Backing off for 3 seconds
2022/02/15 00:14:34 routers/common/db.go:27:InitDBEngine() [I] ORM engine initialization attempt #3/10...
2022/02/15 00:14:34 cmd/web.go:153:runWeb() [I] PING DATABASE mysql
2022/02/15 00:14:34 ...ations/migrations.go:427:Migrate() [I] [SQL] SELECT `TABLE_NAME` from `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_SCHEMA`=? and `TABLE_NAME`=? [gitea version] - 1.543746ms
2022/02/15 00:14:34 models/db/engine.go:190:InitEngineWithMigration() [I] [SQL] SELECT `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = ? AND `TABLE_NAME` = ? AND `COLUMN_NAME` = ? [gitea version id] - 2.380338ms
2022/02/15 00:14:34 models/db/engine.go:190:InitEngineWithMigration() [I] [SQL] SELECT `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = ? AND `TABLE_NAME` = ? AND `COLUMN_NAME` = ? [gitea version version] - 1.877032ms
2022/02/15 00:14:34 ...orm@v1.2.5/engine.go:1139:Get() [I] [SQL] SELECT `id`, `version` FROM `version` WHERE `id`=? LIMIT 1 [1] - 1.567687ms
2022/02/15 00:14:34 ...ations/migrations.go:467:Migrate() [I] Migration[208]: Use base32.HexEncoding instead of base64 encoding for cred ID as it is case insensitive
2022/02/15 00:14:34 ...ations/migrations.go:50:Migrate() [I] [SQL] SELECT `TABLE_NAME`, `ENGINE`, `AUTO_INCREMENT`, `TABLE_COMMENT` from `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_SCHEMA`=? AND (`ENGINE`='MyISAM' OR `ENGINE` = 'InnoDB' OR `ENGINE` = 'TokuDB') [gitea] - 3.828226ms
2022/02/15 00:14:34 ...s/migrations/v208.go:21:useBase32HexForCredIDInWebAuthnCredential() [I] [SQL] SELECT `COLUMN_NAME`, `IS_NULLABLE`, `COLUMN_DEFAULT`, `COLUMN_TYPE`, `COLUMN_KEY`, `EXTRA`, `COLUMN_COMMENT`, (INSTR(VERSION(), 'maria') > 0 && (SUBSTRING_INDEX(VERSION(), '.', 1) > 10 || (SUBSTRING_INDEX(VERSION(), '.', 1) = 10 && (SUBSTRING_INDEX(SUBSTRING(VERSION(), 4), '.', 1) > 2 || (SUBSTRING_INDEX(SUBSTRING(VERSION(), 4), '.', 1) = 2 && SUBSTRING_INDEX(SUBSTRING(VERSION(), 6), '-', 1) >= 7))))) AS NEEDS_QUOTE FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = ? AND `TABLE_NAME` = ? ORDER BY `COLUMNS`.ORDINAL_POSITION [gitea webauthn_credential] - 2.895565ms
2022/02/15 00:14:34 ...s/migrations/v208.go:21:useBase32HexForCredIDInWebAuthnCredential() [I] [SQL] SELECT `INDEX_NAME`, `NON_UNIQUE`, `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`STATISTICS` WHERE `TABLE_SCHEMA` = ? AND `TABLE_NAME` = ? [gitea webauthn_credential] - 1.514677ms
2022/02/15 00:14:34 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column name but struct has not related field
2022/02/15 00:14:34 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column lower_name but struct has not related field
2022/02/15 00:14:34 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column user_id but struct has not related field
2022/02/15 00:14:34 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column public_key but struct has not related field
2022/02/15 00:14:34 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column attestation_type but struct has not related field
2022/02/15 00:14:34 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column aaguid but struct has not related field
2022/02/15 00:14:34 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column sign_count but struct has not related field
2022/02/15 00:14:34 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column clone_warning but struct has not related field
2022/02/15 00:14:34 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column created_unix but struct has not related field
2022/02/15 00:14:34 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column updated_unix but struct has not related field
2022/02/15 00:14:34 ...s/migrations/v208.go:28:useBase32HexForCredIDInWebAuthnCredential() [I] [SQL] SELECT `id`, `credential_id` FROM `webauthn_credential` ORDER BY id LIMIT 50 [] - 944.579µs
2022/02/15 00:14:34 ...ations/migrations.go:50:Migrate() [I] [SQL] UPDATE `webauthn_credential` SET `credential_id` = ?  [<long-string-here>] - 1.077227ms
2022/02/15 00:14:34 routers/common/db.go:33:InitDBEngine() [E] ORM engine initialization attempt #3/10 failed. Error: migrate: migration[208]: Use base32.HexEncoding instead of base64 encoding for cred ID as it is case insensitive failed: Error 1406: Data too long for column 'credential_id' at row 1
2022/02/15 00:14:34 routers/common/db.go:34:InitDBEngine() [I] Backing off for 3 seconds

I enabled the Gitea SQL log.
Look at the string I repalced with <long-string-here>. Piping it through wc -m (and -c for the record) returns 425. Is this helpful? I can try to gather more information, but I'm just getting into this topic, and need my portion of sleep sooner or later, too.

I've put up a PR to make it 500. Hopefully that will fix this.
https://github.com/go-gitea/gitea/pull/18771
Please try that and report if that works.

@zeripath I was trying to understand this migration, but my brain is failing at two points.
First of all, I notice that the SQL statement is just "UPDATE" without a where. This means, each record is always being updated, and all credential_id's are the very same in the end. Is this expected? I don't know much about webauthn, but it sounds off that the id is not unique?
Secondly, for some reason the size of the records grows with each batch of fifty. I kinda suppose it's re-encoding the data over and over again, that is also likely the reason for the failing size check.
I'll check with varchar 500, but if the code behaves the way it appears to my tired eyes, this will just shift the failing to later.

... indeed: with varchar(500) it now tried inserting a string with 505 characters after a chunk of 50 credentials more.

I think the safest thing to do is to simply remigrate all of u2f keys

2022/02/15 00:14:34 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column name but struct has not related field
2022/02/15 00:14:34 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column lower_name but struct has not related field
2022/02/15 00:14:34 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column user_id but struct has not related field
2022/02/15 00:14:34 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column public_key but struct has not related field
2022/02/15 00:14:34 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column attestation_type but struct has not related field
2022/02/15 00:14:34 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column aaguid but struct has not related field
2022/02/15 00:14:34 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column sign_count but struct has not related field
2022/02/15 00:14:34 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column clone_warning but struct has not related field
2022/02/15 00:14:34 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column created_unix but struct has not related field
2022/02/15 00:14:34 routers/common/db.go:28:InitDBEngine() [W] Table webauthn_credential has column updated_unix but struct has not related field

The warning is also wired.


Update PlannerMdParser to support appt commands

Update parseCommand to support appt commands
Add AppointmentCommand and skeletons of propose Appointment commands
Add AppointmentCommand flags
Add AppointmentCommands prefixes
Add AppointmentCommandParser to parse flags inputted

Codecov Report

Merging #105 (e506375) into master (c996bad) will decrease coverage by 0.51%.
The diff coverage is 41.66%.

@@             Coverage Diff              @@
##             master     #105      +/-   ##
============================================
- Coverage     74.72%   74.21%   -0.52%
- Complexity      689      694       +5
============================================
  Files           117      125       +8
  Lines          2034     2067      +33
  Branches        227      229       +2
============================================
+ Hits           1520     1534      +14
- Misses          459      478      +19
  Partials         55       55

Impacted Files
Coverage Δ

...in/java/seedu/plannermd/commons/core/Messages.java
0.00% <ø> (ø)

...ic/commands/apptcommand/AddAppointmentCommand.java
0.00% <0.00%> (ø)

...logic/commands/apptcommand/AppointmentCommand.java
0.00% <0.00%> (ø)

...commands/apptcommand/DeleteAppointmentCommand.java
0.00% <0.00%> (ø)

...c/commands/apptcommand/EditAppointmentCommand.java
0.00% <0.00%> (ø)

...commands/apptcommand/FilterAppointmentCommand.java
0.00% <0.00%> (ø)

.../apptcommand/FilterUpcomingAppointmentCommand.java
0.00% <0.00%> (ø)

...c/commands/apptcommand/ListAppointmentCommand.java
0.00% <0.00%> (ø)

...annermd/logic/parser/AppointmentCommandParser.java
53.33% <53.33%> (ø)

.../seedu/plannermd/logic/parser/PlannerMdParser.java
91.17% <75.00%> (+3.29%)
:arrow_up:

... and 2 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 c996bad...e506375. Read the comment docs.


enable replace tests in version upgrade

Description
Enable replace tests in version upgrade framework with source major version = 13.
This test was earlier hanging in Github actions due to BABEL-5169 which has been fixed now with https://github.com/babelfish-for-postgresql/babelfish_extensions/pull/2849.
Also removed replace-before-14_3-vu-* test files since these were/are not running in any framework.
Issues Resolved
[No-Jira]
Check List

[x] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is under the terms of the Apache 2.0 and PostgreSQL licenses, and grant any person obtaining a copy of the contribution permission to relicense all or a portion of my contribution to the PostgreSQL License solely to contribute all or a portion of my contribution to the PostgreSQL open source project.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>9
Details

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

Totals

Change from base Build<PHONE_NUMBER>8:
0.0%

Covered Lines:
44431

Relevant Lines:
60016

💛  - Coveralls


add text to support sending cloned packet to multicast group

Thanks!  I think this does a good job of matching the desired multicast clone capability, and what the P4Runtime API does.

Can I merge this?

@cc10512 Do you want to look at this before it is merged?


Setup vdebug & nvim & xdebug & lampp & arch linux

Following #318, I'm creating a new issue to resolve my setup issues, using:

Arch Linux
Neovim v0.2.1
Xdebug 2.6.0-1
XAMPP for Linux 7.1.9-0
vdebug installed with Plug

Config files
~/.vimrc
call plug#end()
Plug 'joonty/vdebug'  " PHP
call plug#end()

" PHP debug
let g:vdebug_options = {'ide_key': 'netbeans-xdebug'}
let g:vdebug_options = {'break_on_open': 0}
let g:vdebug_options = {'server': '<IP_ADDRESS>'}
let g:vdebug_options = {'port': '10000'}

/opt/lampp/etc/php.ini
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

zend_extension=/usr/lib/php/modules/xdebug.so

[debug]
; Remote settings
xdebug.remote_autostart=on
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=10000

; General
xdebug.auto_trace=off
xdebug.collect_includes=on
xdebug.collect_params=off
xdebug.collect_return=off
xdebug.default_enable=on
xdebug.extended_info=1
xdebug.manual_url=http://www.php.net
xdebug.show_local_vars=0
xdebug.show_mem_delta=0
xdebug.max_nesting_level=100
xdebug.idekey=netbeans-xdebug

; Trace options
xdebug.trace_format=0
xdebug.trace_output_dir=/tmp
xdebug.trace_options=0
xdebug.trace_output_name=crc32

; Profiling
xdebug.profiler_append=0
xdebug.profiler_enable=0
xdebug.profiler_enable_trigger=0
xdebug.profiler_output_dir=/tmp
xdebug.profiler_output_name=crc32

Test

start lampp: sudo /opt/lampp/lampp start
Open the app in the browser
Open a php file from a Phalcon project
Press  to start vdebug.

Try going to http://localhost:10000/ .

@Fandekasp could you test with latest master?

Updated my .vimrc with Plug 'joonty/vdebug', { 'branch': 'master' } to make sure I'm on master, then ran :PlugUpdate.
uncommented all the configs shared in the first message of this issue
started lampp
Opened a php file and pressed <F5>
Saw message Vdebug will wait for a connection in the background
Went to my browser, opened the application
Got error Error starting Vdebug: Modified buffers must be saved before debugging
Saved my file in case, tried again
Nothing happens as I browse the app, the vim file keep showing Vdebug will wait for a connection in the background forever

Assumption: Pressing <F5> doesn't set a breakpoint on the line where my cursor is ? (In that I was expecting the code to be interrupted at that line for me to interact with the code at that step frame)

@Fandekasp Indeed you have no breakpoints set to it will not interrupt anywhere. Could you first test with let g:vdebug_options = {'break_on_open': 1}?

 will set breakpoints btw, you can find how to navigate and step with :help vdebug

@Fandekasp do you still have this issue?

Haven't found the time to test it out yet, sorry. Hopefully I'll come back with more info by next week


[Python][FlightRPC] Inconsistent Schema Validation in Flight DoExchange Call with MetadataRecordBatchWriter

Describe the bug, including details regarding any error messages, version, and platform.
In the server-side implementation of an Apache Arrow Flight DoExchange call, the MetadataRecordBatchWriter does not enforce schema validation for tables written to the stream. Specifically, after calling stream.begin(schema) to set an initial schema, there is no check to ensure that subsequent tables written with stream.write_table() conform to this schema.
Steps to Reproduce:

Start a Flight DoExchange stream on the server side.
Call stream.begin(schema) to define the schema for the stream.stream.begin(schema)

Use stream.write_table() to send data to the stream.

Expected Behavior:
Once a schema is set with stream.begin(schema), only tables matching this schema should be allowed in stream.write_table(). The system should raise an error or otherwise validate that the written table conforms to the defined schema.
Actual Behavior:
There is no validation to ensure the written table matches the schema passed to stream.begin(schema). This could lead to unintended behavior or data inconsistency if tables with different schemas are written to the stream.
Impact:
Without schema validation, downstream consumers may receive data that does not conform to the expected structure, potentially causing errors or misinterpretations of the data.
Suggested Solution:
Implement schema validation in stream.write_table() to check that any table written to the stream matches the schema set by stream.begin(schema). If there is a mismatch, the system should raise an appropriate error.
Environment:

Apache Arrow version: 17.0.0

Component(s)
FlightRPC, Python

https://github.com/apache/arrow/issues/31977

The problem is mostly with the common IPC machinery and isn't specific to Flight; I'm not sure if C++ contributors have any appetite to change how things work here

Duplicate of #31977


Add Ollama Embedding Driver

[X] I have read and agree to the contributing guidelines for submitting new pull requests.

Describe your changes
Adds Ollama Embedding Driver for use with Ollama embedding models.
Issue ticket number and link
https://discord.com/channels/1096466116672487547/1105169591619027055/1254032622959460442

📚 Documentation preview 📚: https://griptape--953.org.readthedocs.build//953/

Ah good call, I will update this PR to include that.

@cjkindel leaving a Structure Config out for this reason.


De-incubate UntrackedTask annotation

De-incubates UntrackedTask annotation and related Task.doNotTrackState().

@bot-gradle test this

OK, I've already triggered the following builds for you:

PullRequestFeedback build

@bot-gradle test and merge

OK, I've already triggered a build for you.

Pre-tested commit build failed.

I think a build agent is broken. Let's retry.
@bot-gradle test and merge

Your PR is queued. See the queue page for details.

OK, I've already triggered a build for you.


Support for bitflags enums

Hi,
Before going into the very heart on this issue, I would like to say that you made a really good work here. Relying on your generator to write the Zig binding generator I am working on, removed a lot of unsatisfactory code I wrote. Even if my tool is not ready to be used, using your generator makes the quality of my tool far better then it was. So thank you for this.
Now that this has been said, some small parts of this ugly code remain and I am opening this issue with the hope to remove some of them.
Currently I am working on the enums section of your JSON generated file. When looking more accurately on the name field of the enumerations, we can divide them into 2 groups:

bitflags enumerations: its name contains Flags and most of its members are power of 2 unsigned integers to use bitwise operators on them.
other enumerations.

To make the distinction between them I have to parse the name field (this is an ugly part of the code I want to remove).
I want to make the distinction between them to treat bitflags enumerations as Zig struct. If you are interested in why I want to achieve that, I suggest you to look at this section of the Snektron/vulkan-zig README. This binding generator deals with Vulkan bitflags enumerations in a very clever way I want to implement on the tool I am working on.
I have several proposals to make bitflags enumerations management easier:

add a is_bitflags_enum bool field to avoid users to parse the name field,
only for involved enumeration' elements:

add 3 new fields: lvalue (int), rvalue (int) and bitwise_operator (string) fields to avoid users to parse the value field,
or add 1 new field: is_bitwise_expr bool field to allow users to know when parse the value field safely.

I do not know if other bindings relying on your generator will take advantage of this, but it allows users that want to apply special process for this enumeration kind to do it in a more robust way.
Do you think it could be a feature that you could add to your generator or it goes uncomfortably in the direction of featuritis ?
Thank you.

On the subject of parsing the values, my gut feeling is that it would probably be best to go all the way and actually evaluate the final value and expose that

Yeah, I aggre with you: evaluating the final value and expose it, sounds like a better idea.
But I think that adding an other field to say that the element is a bitflag element is also necessary for 2 reasons:

there are a lot of bitflags enumerations with mask element that should definitely not be considered as a bitflag element but rather as a constant,
maybe the Imgui API will expose static members for bitflag enumerations like it is already done for other enumerations (Imgui_..._COUNT elements for example) so we need to make the distinction between what should (or not) be considered as an integer where we can make bit-wise operation on it.

I'm not sure I can see how to meaningfully differentiate between (say) ImGuiTableFlags_SizingMask_ and ImGuiTableFlags_Borders, both of which are defined as combinations of bits.

I do not think you should make the distinction between ImGuiTableFlags_SizingMask_ and ImGuiTableFlags_Borders. Both of them are combinations of bits and we would like to make bit-wise operations but they are not power of 2. I am considering both of them as static elements because these elements are referring to other elements. From my side, if ImGuiTableFlags is translated as a struct of independant booleans (all set to false by default),  ImGuiTableFlags_SizingMask_ and ImGuiTableFlags_Borders are particular case of ImGuiTableFlags struct where some bitfields are already set to true value.
So for me the is_hidden should not be based on the trailing _ but on the value field. If the value field is a power of two AND is unique (so the value field is not referring to other bitflag elements), it is set to true, otherwise it is false.
For example:

ImGuiTableFlags_SizingStretchProp is not a power of 2 so its is_hidden is false,
ImGuiTableFlags_SizingFixedSame is a power of 2 so its is_hidden is true,
ImGuiTableFlags_SizingMask_ and ImGuiTableFlags_Borders are not power of 2 are referring to others bitflag elements so their is_hidden fields are false,
ImGuiButtonFlags_MouseButtonDefault_ is a power of 2 but it is referring to ImGuiButtonFlags_MouseButtonLeft so its is_hidden is false.

Maybe is_hidden is not the best name for this ?

I've added evaluation of enum values, so the value field in the JSON is now an integer that contains the actual value of that element. The old value field (the "raw" expression from the C header) is now called value_expression to differentiate it.
I've also done a little bit of tweaking with regards to enum element flags - is_internal is now set to true on elements that end with a _ (previously it was set if the value had an explicit "Internal" comment, but that didn't catch all cases). I've also added is_count, which is set on _COUNT elements.
The more I thought about trying to generate some sort of unified is_hidden flag, the more I started to think that it would be very difficult to make those decisions with Dear Bindings, as different languages have different ideas about what they want there. For example, _COUNT values could be usefully hidden in many cases in C# (as reflection can be used to achieve the same effect), but they are required in C-like languages that lack introspection features.
Reading what you've written above, it sounds like in that example is_hidden is more is_single_unique_bit or similar? In other words, it indicates that the enum value uniquely represents a single bit in the bitfield?
That kinda makes sense, but I still worry that there's no rule that says that a single-bit value today won't become a multi-bit value tomorrow because of some internal implementation change (say the addition of a "ImGuiTableFlags_LegacySizingBehaviour" flag or similar that is then ORed into all the existing enum values), so basing API exposure on that seems a little dangerous.
And more broadly, it feels like the precise definition of what is wanted here is likely to be language/implementation dependent, so I'm a little concerned that trying to wrap all that complexity into a generic flag is going to result in confusion when other implementations try to use it but find it ends up being "almost, but not quite" what they want.
So my gut feeling right now is that the best route forward may be to expose any data that is needed as simple unambiguous flags (in other words flags based on traits of the data, rather than assumed use-cases) which the implementation can then combine as they want to generate the precise definition they need. How does that sound as a route forwards? (and if it makes sense, what other flags would you need exposed for your implementation...? is_single_unique_bit is doable but given that I'm not sure how universally useful it is would it make more sense to use the new value field and just check that implementation-side?)

Oh, whoops - sorry, yeah, I completely forgot about marking flags enums when I was implementing the other stuff. I've added is_flags_enum to the JSON for enums now... hopefully that makes life a little easier!

Thank you !


[Q] Python Binding get tsp.output() into a variable

Hi hello, sorry to bother you, I have a quick question.
How do I get the tsp.output into a var ? I couldn't find anything in the sample examples
Thank you really much in advance.

Hey mb with better research on google, i found the documentation needed for that
https://tsduck.io/doxy/jpbindings.html#jpplugincomm
Still thanks a lot


How  to test my own dataset in the HADAR-network?

Hi, FanglinBao
I am very interested in your work, but when I try to input my own hyperspectral data into the HADAR network for testing, I have a problem. I hope to input only hyperspectral data without other data, like T,e,v grountruth, but your code seems to load all these data while not only training and verification, but also testing, which makes me confused.

I have solved this problem, thanks

I have solved this problem, thanks

Hi, I am wondering whether your own data is captured by a certain hyperspectral imager and how many channels the data contains? Do you directly used the author's TeX-Net python code to test your own data or you made some modifications to the original code, like the dataloader part? How about the results? Have you compared the TeX-Net results with TeX-SGD results？And do you successfully visualize the results(to get the TeX-vision)? I appreciate it if you're willing to answer my questions.

Hi,
1.the testing hyperspectral dataset is generated by simulations, which contains 7 channels.
2.I do some modifications, add 'test_step' function in model.py
3.the result is bad, because my dataset is quite different from the HADAR dataset, like objects in them, so the Tex-Net's perfommance is poor.
4.I haven't done it, because SGD method is so slow, using near 20 hours on my computer.
5.yes

by the way, I graduated from NJU last year, hhh

@keke-2000 请问你有联系方式吗？我们可以交流一下。我的邮箱<EMAIL_ADDRESS>


Adding docs webview

Motivation

JIRA: https://issues.jboss.org/browse/AEROGEAR-3288
Description
I've added a documentation webview.  You can test this through the service not available dialog's show documentation option now.
Progress

[x] Docs View
[x] Docs URLs loading from https://groups.google.com/forum/#!topic/aerogear/EIwDWbwTEuM
[x] Wire service not available dialog Show documentation button

Additional Notes
The URLs don't have content yet.  Also, open question, where should the notes-service documentation link to?

verified it is working as expected on the emulator.
@secondsun there will be no notes service once the new nav menu is in place.

@wei-lee Ok.  @danielpassos Merge?


Compatibility with rackup gem.

Fixes https://github.com/socketry/falcon/issues/200.
Types of Changes

Bug fix.
Maintenance.

Contribution

[ ] I added tests for my changes.
[x] I tested my changes locally.
[x] I agree to the Developer's Certificate of Origin 1.1.

I've confirmed this fixes the issue.
rack/handler/falcon and rackup/handler/falcon are expected to diverge over time, so they are copied.


#163683967 Get specific political party

What does this PR do?

Builds the endpoint to get a party by id
Description of Task to be completed?

[x] Write tests for getting a party with an id
[x] Write tests for response status code when the requested party is not found
[x] Add response message to the endpoint
[x] Add response message for party not found

How should this be manually tested?
After cloning the repository to your local machine - check
README.md for instructions checkout to ft-get-political-party-163683967 branch. Install the requirements and launch the flask server check here for instructions. Using Postman open create a POST request with this header
Key Content-Type: application/json.
Put this in the json body
{
	"party_name": "Actionated Party",
	"hq_address": "Mountain View 23"
}

From the reponse body copy the party_id and create a GET request and append the party_id:
/parties/7994d63c-102b-4870-8754-a53e00411bf9

What are the relevant pivotal tracker stories?
#163683967
Postman Documentation.
Postman Docs
Screenshots
Success GET /parties/<id>

Not Found GET /parties/<id>

Coverage remained the same at 100.0% when pulling c40d6aff5b682aa1fc0e9138f24a97f301b04313 on ft-get-political-party-163683967 into 3465c9f213ccc444fe4d78a4934fe3e247ce37fa on develop.


Acknowledgement for your tool

Hello Author.
Your repository implementation has helped me a lot. Perhaps the repository mentioned in the README refers to the tool I created, but I have already included the quoted comment in the source code a few days ago as a thank you to you.
https://github.com/PINTO0309/onnx2tf/blob/71fa4e112440a5a604b1e99a794a77699bfcded4/onnx2tf/ops/MaxPool.py#L127-L137
I was unaware that your useful tools existed and accidentally started creating my own tools.
I am sorry if I have caused you any discomfort. I do not intend to interfere with your activities at all. I myself find your tool very easy to handle.
My tool is very different in concept from onnx2tflite because I am very conscious of implementing as many means of avoiding conversion errors as possible, instead of allowing for code complexity. I am aware that my code is too complex and probably very difficult for other engineers, except you, to understand. Therefore, I have no intention of attracting many people to my side of the tool.
If a model could not be converted by your tool, there were several times when an issue was posted on my side of the tool, and I would try to politely respond to the issue. Since your repository is by far the more popular, I don't feel any desire to be a counter-rival now. I also do not expect any more Star in my repository.
I have not been able to find a way to contact you by DM or other means, so I am posting this issue to express my gratitude to you.  If even this issue offends you, you may delete it.
Short sentences do not do a good job of conveying to you how I usually think.
Thank you again.

you are welcome.


Update workflow/tests to use latest pybids

Instead of installing from a commit, go for release

This issue was moved to PsychoinformaticsLab/neuroscout-cli#2


Remove current UI search bar

Currently search doesn't do much useful, and we have few enough datasets that a user can browse them all. Remove search bar for the time being.


Can Flocker do disk space limitation and replication of data volume?

Hi,
I am a freshman of Flocker. Honestly, I am attracted by it with the description of data volume manager.
Now I wonder if Flocker can do disk space limitation and replication of data volume? As we all konw when we use devicemapper storage driver to limit the disk space of container, actually it will not take data volume and bind mount into consideration? However, data volume is the most useful storage directory of a data storage container, such as mysql, mongo,...
Anything helps.
Thanks in advance.

Hey,
Flocker can do both disk space limitation and replication.  We are currently working on an upcoming release (0.4.0) which has a REST api which enables you to create datasets.
One of the properties of a dataset in the REST api is 'maximum_size' - this controls the size of the filesystem in the underlying data volume which means the size limitation still works from inside the container.
Migration is the classic use case for the ZFS storage backend.  When you use flocker to deploy a container with a named volume, flocker will check the state of the cluster to see if the volume already exists elsewhere.
If it does exist elsewhere - Flocker will migrate the data to the new host (using ZFS snapshots).
We are also working on a block device backend for OpenStack, the classic use case for which is High Availability.

Thanks, Binocarlos.
That sounds great. space limitation I can understand your way.
But in the aspect of  replication, just one confusion.
Can ZFS storage backend  use ZFS snapshot to backup without the interrupt of available time of the  living container?  In a traditional way of filesystem, I cannot backup the mysql storage data lively in /var/lib/mysql using compress into a .tar. If i did this, probably I can not recover a mysql server with the data in .tar.
Thanks

@allencloud flocker does what is called a 2 phase push.
This means that the first ZFS snapshot is taken and migrated while the container is still running.  The first phase will push the majority of the data.
Once the first push has complete - flocker will stop connections to the container (using iptables) and then complete the second push.  The second push is normally very small (Mbs) and fast (seconds) because it is only the diff from the first.
So the answer is that there is a small interrupt of the living container but it is minimised because of the 2 phase push.

Closing this issue now - please re-open if you have further questions...


Adds --from-pem to the new-wallet cli command

Implements #68

Sorry you reviewed some not-ready-to-review code, btw.
I pushed with WIP as a commit msg and thought it was enough, but should have been clearer.
Maybe I could tag you in a comment to explicitly say something is ready, next time?

It seems the PR doesn't treat the case where the password is not specified as an argument.


[Search] Implement index interface for Software Catalog

What / Why
We want to enable end-users of Backstage to be able to search (via a search text field, as well as via filtering) for anything in the Software Catalog by any/all properties.  In order to do so, we need to refine how Software Catalog entities are indexed.
Scope / UAT

[ ] It should be possible to configure a path pattern in the backend for the location property for a given entity during collation.  (This is necessary because the source of truth for entity page routes is the front-end.)
[ ] All well-known properties on well-known entity types should be exposed on the Indexable type and populated during the collation process.

Implementation Details
Note: A skeleton of an implementation for this exists in DefaultCatalogCollator, which should be refined in this issue.

Thought while mobbing on this: instead of going down the Backstage config route for configurable locations...  Let's just expose a public property or something on the DefaultCatalogCollator where a path pattern can be configured in code.  (Similar to how path patterns are configured in code / JSX on the front-end).  ...More advanced customization can be handled by extending the collator or writing a new collator.


Update samples to latest approuter

Update samples to latest approuter when issue is resolved: https://github.wdf.sap.corp/xs2/approuter.js/issues/1347
Find latest approuter here: https://www.npmjs.com/package/@sap/approuter

PR: #328


selectable chooser?

someone want to test whether this does something useful?

The Driver Station & Dashboard are only on the school lappys; we'll have to test when we have access. I'll see if I can snag the grey driver station before we leave for SKILLS and test on there.


Use fetch method from stores

Proposed Semver Increment Bump: [MAJOR/MINOR/PATCH]
Changes Proposed in this Pull Request (List new items in CHANGELOG.MD)

(If Applicable) What Issue does it fix?
channel.fetchMessage, client.fetchUser, guild.fetchMember are no longer available => replaced in Resolver by [store].fetch

This isn't really needed atm since package-locks lock us in to a commit prior to this breaking change.
Will leave this open though

It seems to be already usable :

Komada is using a different Discord.JS version than yours, that's why.

But I do not use Discord.JS directly anymore, only through Komada. It is not in my package.json.

Can you give us the package-lock hash for Discord.JS

{
  "dependencies": {
    "discord.js": {
      "version": "https://registry.npmjs.org/discord.js/-/discord.js-11.1.0.tgz",
      "integrity": "sha1-U1HVnjeY9TbeGXXpLK5NEa89kmY=",
      "requires": {
        "long": "https://registry.npmjs.org/long/-/long-3.2.0.tgz",
        "prism-media": "https://registry.npmjs.org/prism-media/-/prism-media-0.0.1.tgz",
        "snekfetch": "https://registry.npmjs.org/snekfetch/-/snekfetch-3.1.7.tgz",
        "tweetnacl": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
        "ws": "https://registry.npmjs.org/ws/-/ws-2.3.1.tgz"
      }
    },
    "komada": {
      "version": "github:dirigeants/komada#2c3d69870f780b714ee929a7fe836c006d7c877f",
      "requires": {
        "chalk": "2.1.0",
        "discord.js": "github:hydrabolt/discord.js#3c532f16bc48175597a7bbed4fbba4637812184d",
        "fs-nextra": "0.2.0",
        "moment": "2.18.1",
        "moment-duration-format": "1.3.0",
        "performance-now": "2.1.0"
      },
      "dependencies": {
        "discord.js": {
          "version": "github:hydrabolt/discord.js#3c532f16bc48175597a7bbed4fbba4637812184d",
          "requires": {
            "long": "3.2.0",
            "prism-media": "0.0.1",
            "snekfetch": "3.2.9",
            "tweetnacl": "1.0.0",
            "ws": "3.1.0"
          }
        }
      }
    }
  }
}

It looks like I forgot to npm prune.
But my version was based on NPM package, not master branch.

NPM Komada shouldn't even be this far into d.js
You also have d.js 11.1
And the underlying d.js within your Komada install does not match the package-lock in the repository
In fact, it's at least 10 commits ahead,

I meant my d.js version was from NPM

Regardless, you have two version of d.js installed.
For the purpose of debugging, I want you to ensure ur package.json only has Komada in it.
And I want you to delete node_modules and package-lock.json
Run npm install and test the fetchMessage and messages.fetch for me.

Removed node_modules and package-lock.json. Only komada in package.json :
package.json
{
   ...
  "dependencies": {
    "discord-emoji": "^1.1.1",
    "komada": "github:dirigeants/komada#master",
    "moment": "^2.18.1",
    "moment-duration-format": "^1.3.0",
    "ytdl-core": "^0.17.0"
  },
}

The other dependencies were installed by komada on the first run
package-lock.json
{
  "dependencies": {
    "komada": {
      "version": "github:dirigeants/komada#2c3d69870f780b714ee929a7fe836c006d7c877f",
      "requires": {
        "chalk": "2.1.0",
        "discord.js": "github:hydrabolt/discord.js#b7c55f02c20bee5dab107ff453a6d3ea1a4a776a",
        "fs-nextra": "0.2.0",
        "moment": "2.18.1",
        "moment-duration-format": "1.3.0",
        "performance-now": "2.1.0"
      },
      "dependencies": {
        "discord.js": {
          "version": "github:hydrabolt/discord.js#b7c55f02c20bee5dab107ff453a6d3ea1a4a776a",
          "requires": {
            "long": "3.2.0",
            "prism-media": "0.0.1",
            "snekfetch": "3.2.9",
            "tweetnacl": "1.0.0",
            "ws": "3.1.0"
          }
        }
      }
    }
  }
}

hmm, I have no idea why, but it's completely ignoring komada's package-locks.
What version of npm

$ npm -v
5.3.0
$ node -v
v8.3.0

NPM seems to be ignoring the package-locks.
Going to manually merge this with a updated package-lock.
Komada will increase to 0.20.8


 tag looks weird with `margin: 0`

Minima's _base.scss file resets the margin of the <hr> tag to zero:
https://github.com/rust-gamedev/rust-gamedev.github.io/blob/8dab245a216cf789c77f33b041f70083a7e3c0ee/_sass/minima/_base.scss#L4-L7
And it results in that Markdown's horizontal line ------ sticks to the next line uncomfortably close:

With this brute-force patch:
$ git diff _sass/
diff --git a/_sass/minima/_base.scss b/_sass/minima/_base.scss
index db7d5a1..cac4ba7 100644
--- a/_sass/minima/_base.scss
+++ b/_sass/minima/_base.scss
@@ -37,6 +37,7 @@ body {
 h1, h2, h3, h4, h5, h6,
 p, blockquote, pre,
 ul, ol, dl, figure,
+hr,
 %vertical-rhythm {
   margin-bottom: $spacing-unit / 2;
 }

it looks much better to me:

But I'm note sure if that's the correct way of doing it.

Also, something seems to be wrong with nested lists' margins:

The only downside to editing the minima files would be we'd have to diff them if we upgrade to a newer version or risk losing your changes - the alternative would be to add hr { margin-bottom: $spacing-unit / 2; } to extra.scss, but that would bump the filesize a little. Tradeoffs to both ways :)
The nested list issue is my bad - change this part of extra.scss:
li {
    // For consistency with other elements.
    margin-bottom: 15px;
}

To this:
li {
    // For consistency with other elements.
    margin: 15px 0;
}

Might be worth adding these tweaks (and any others) to the newsletter PR if they're in service of making the newsletter look better!


Scheduled ingestion of CaDeT assets

Where and how should this ingestion be scheduled
DataHub actions API?
Should the ingestion recipes live in GitHub?
Do it live

We think yes, github actions is the way to go here. It will be a proof of concept for other ingestion types, and it will enable us to add custom transformers if we need to (e.g. to assign domains)

TODO:

[ ] allow Github actions to authenticate with datahub
[ ] allow Github actions to access DBT outputs in s3
[ ] set up a scheduled workflow

To allow github actions to access this bucket, we need

[ ] A policy for reading from the bucket
[ ] A role assumable by github actions

An OIDC assumable role looks something like this:
data "aws_iam_policy_document" "ci_ingestion_role" {
  statement {
    effect  = "Allow"
    actions = ["sts:AssumeRoleWithWebIdentity"]

    principals {
      type        = "Federated"
      identifiers = ["arn:aws:iam::${data.aws_caller_identity.current.account_id}:oidc-provider/token.actions.githubusercontent.com"]
    }
    condition {
      test     = "StringEquals"
      values   = ["sts.amazonaws.com"]
      variable = "token.actions.githubusercontent.com:aud"
    }
    condition {
      test     = "StringLike"
      values   = ["repo:ministryofjustice/find-moj-data:*"]
      variable = "token.actions.githubusercontent.com:sub"
    }
  }
}

Policy datahubReadCaDeTBucket is already defined in the analytical-platform repo


tweak can only work over models even though the passed in object is a model instance

Reproducible test case here:

https://github.com/mindreframer/mobx-keystone-draft-issue

Code:
import { toJS } from "mobx";
import { Draft, draft, model, Model, modelAction, prop } from "mobx-keystone";

/**
 * In this example we use a mobx - keystone instance for Settings
 * that is reused in the form as plain non-observable field
 */

@model("myApp/Tag")
export class Tag extends Model({ label: prop<string>("").withSetter() }) {}

/**
 * actual settings data
 */
@model("myApp/Settings")
export class Settings extends Model({
  name: prop<string>().withSetter(),
  tags: prop<Tag[]>(() => []),
}) {}

/**
 * Settings form, contains functions to manipulate settings / run validations
 * - we want to support undo/redo for it + editing on a detached node (drafts)
 * - that's why draft is a `prop`, and not just plain object field
 */
@model("myApp/SettingsForm")
export class SettingsForm extends Model({
  settingsDraft: prop<Draft<Settings> | undefined>(),
}) {
  @modelAction setSettings(val: Settings) {
    this.settingsDraft = draft<Settings>(val);
  }
  @modelAction deleteTag(tags: Tag[], index: number) {
    tags.splice(index, 1);
  }
}

/**
 * Top-level node
 */
@model("myApp/Root")
export class Root extends Model({
  settings: prop<Settings | undefined>(),
  settingsForm: prop<SettingsForm | undefined>(),
}) {
  onInit() {
    if (this.settings) {
      this.setSettings(this.settings);
    }
  }
  @modelAction setSettings(val: Settings) {
    this.settings = val;
    this.settingsForm = new SettingsForm({});
    this.settingsForm.setSettings(this.settings);
  }
}

Not sure what I'm doing wrong here...

this.settingsDraft = draft<Settings>(val);
you are trying to assign as a child node something that is not a node.
draft is not really a model or anything, but really an api that works over the data you pass inside.
maybe what you intended is to make settingsDraft a plain variable (outside of mobx-keystone?
@model("myApp/SettingsForm")
export class SettingsForm extends Model({
  settings: prop<Settings | undefined>(),
}) {
  @observable.ref
  settingsDraft?: Draft<Settings>;

  @modelAction setSettings(val: Settings) {
    this.settings = val;
    this.settingsDraft = draft<Settings>(val);
  }
  @modelAction deleteTag(tags: Tag[], index: number) {
    tags.splice(index, 1);
  }
}

Although I'd advise you to create the draft in the form component and then do a draft.commit() once you press the "save" button

@sisp might be better at explaining how draft works than I am, since it was his idea :)

Looking at it all again it looks to me like SettingsForm in its totality should not even be part of mobx-keystone, but of the from component state.

@xaviergonz OK, understood! So drafts do not belong to models. I'll try your suggestion and see if it works better!
Thanks for the super-quick response!

no problem 👌

I wanted to have a place to arrange functions for data manipulation and I wanted to keep it outside of the settings data model. It can be a big data structure and my desire was to display / modify / validate parts of settings model in form instances, that hold on to a subtree from the full settings model. To be able to use @modelAction decorator I have decided to implement the form classes as mobx-keystone state model. (I tried to use plain mobx classes, but this led to some issues)
So, basically my requirements are:

support undo/redo middleware
support drafts (so that the currently edited subtree is not propagating changes to the complete settings model)

I'll provide a more complete example

@xaviergonz I have updated the example to following code:

https://github.com/mindreframer/mobx-keystone-draft-issue/blob/main/src/use-with-indo.ts

import { observable } from "mobx";
import { Draft, draft, model, Model, modelAction, prop } from "mobx-keystone";

@model("myApp/Tag")
export class Tag extends Model({ label: prop<string>("").withSetter() }) {}
@model("myApp/Settings")
export class Settings extends Model({
  name: prop<string>("").withSetter(),
  tags: prop<Tag[]>(() => []),
}) {}
@model("myApp/Root")
export class Root extends Model({
  settings: prop<Settings | undefined>(),
}) {
  @observable.ref settingsDraft: Draft<Settings> | undefined;
  onInit() {
    if (this.settings) {
      this.setSettings(this.settings);
    }
  }
  @modelAction setSettings(val: Settings) {
    this.settings = val;
    this.settingsDraft = draft(this.settings);
  }
  @modelAction commit() {
    this.settingsDraft?.commit();
  }

  @modelAction deleteTag(index: number) {
    this.settingsDraft?.data.tags.splice(index, 1);
  }
}

    const root = new Root({});
    root.setSettings(new Settings({}));
    const settings = new Settings({
      tags: [new Tag({ label: "tag1" }), new Tag({ label: "tag2" })],
    });
    root.setSettings(settings);
    // wrap just the data part from draft with the undoMiddlware
    const undoManagerSettingsDraft = undoMiddleware(root.settingsDraft!.data);
    root.deleteTag(1);
    logAll(root.settingsDraft, "DRAFT BEFORE COMMIT");
    logAll(undoManagerSettingsDraft.store.undoEvents, "UNDO EVENTS:");
    root.commit();
    logAll(root.settingsDraft, "DRAFT AFTER COMMIT");

The undoManager is not recording any changes to the draft.
Is it possible to use the undo middleware in combination with drafts at all?

undoMiddleware records only changes made directly by actions on the settings model. If we make changes through the root model, they are not recorded .
import { observable } from "mobx";
import { Draft, draft, model, Model, modelAction, prop } from "mobx-keystone";

@model("myApp/Tag")
export class Tag extends Model({ label: prop<string>("").withSetter() }) {}
@model("myApp/Settings")
export class Settings extends Model({
  name: prop<string>("").withSetter(),
  tags: prop<Tag[]>(() => []),
}) {
  @modelAction deleteTag(index: number) {
    this.tags.splice(index, 1);
  }
}
@model("myApp/Root")
export class Root extends Model({
  settings: prop<Settings | undefined>(),
}) {
  @observable.ref settingsDraft: Draft<Settings> | undefined;
  onInit() {
    if (this.settings) {
      this.setSettings(this.settings);
    }
  }
  @modelAction setSettings(val: Settings) {
    this.settings = val;
    this.settingsDraft = draft(this.settings);
  }
  @modelAction commit() {
    this.settingsDraft?.commit();
  }

  @modelAction deleteTag(index: number) {
    this.settingsDraft?.data.tags.splice(index, 1);
  }
}

describe("Root", () => {
  it("should support drafts wrapped in undo/redo middleware ", () => {
    const root = new Root({});
    root.setSettings(new Settings({}));
    const settings = new Settings({
      tags: [new Tag({ label: "tag1" }), new Tag({ label: "tag2" })],
    });
    root.setSettings(settings);
    const undoManagerSettingsDraft = undoMiddleware(root.settingsDraft!.data);
    const draftModel = root.settingsDraft!;

    root.deleteTag(0); // this is not recorded
    logAll(root.settingsDraft, "DRAFT after modification by root");

    draftModel.data.deleteTag(0); // this is recorded
    logAll(root.settingsDraft, "DRAFT after direct modification");

    root.settingsDraft?.data.setName("HELLO");
    logAll(undoManagerSettingsDraft.store.undoEvents, "UNDO EVENTS:");
    root.commit();
    logAll(root.settingsDraft, "DRAFT AFTER COMMIT");
  });
});

I guess this is something that one has to take into consideration if undo/redo if of importance.

I don't think I ever tried, but I'd try attaching an undo middleware to the draft(settings).data. That object the modified clone of the settings (in a separate tree) and gets merged into the main tree once the commit function is called.

Ah, I see you just did that. In order to support undo/redo to both the root store and the draft I guess you'd need to attach an undo middleware to each. Your issue is that you want to combine both undo/redo events into a single queue I guess?

Yes, I guess I wanted to be smug and have it all without effort 😄 Tracking just the draft, yet keep logic for modification in other classes. Had to change my strategy, now all actions are on the Settings class.
This is a closer representation of the required model:

https://github.com/mindreframer/mobx-keystone-draft-issue/blob/d13192b161ec6a6882d0f7d2087514728a855f1d/src/use-with-indo.ts

import { observable } from "mobx";
import {
  Draft,
  draft,
  findParentPath,
  model,
  Model,
  modelAction,
  prop,
  resolvePath,
} from "mobx-keystone";

@model("myApp/Tag")
export class Tag extends Model({ label: prop<string>("").withSetter() }) {}
@model("myApp/Form1")
export class Form1 extends Model({
  tags: prop<Tag[]>(() => []).withSetter(),
  name: prop<string>("").withSetter(),
}) {}

@model("myApp/Form2")
export class Form2 extends Model({
  tags: prop<Tag[]>(() => []).withSetter(),
  name: prop<string>("").withSetter(),
}) {}

export namespace SettingsUtils {
  /**
   * pathFromChild
   * @param child
   * @returns list of path segments for the given child under Settings
   */
  export const pathFromChild = (child: any) => {
    const res = findParentPath(
      child,
      (parent) => parent instanceof Settings,
      5 // how deep?
    );
    return res?.path;
  };

  /**
   *
   * @param path list of path segments
   * @param instance settings instance to resolve the path on
   * @returns found child instance / undefined
   */
  export const childFromPath = (path: Path | undefined, instance: Settings) => {
    if (!path) {
      return;
    }
    return resolvePath(instance, path);
  };
}

@model("myApp/Settings")
export class Settings extends Model({
  name: prop<string>("").withSetter(),
  form1List: prop<Form1[]>(() => []).withSetter(),
  form2List: prop<Form2[]>(() => []).withSetter(),
  tags: prop<Tag[]>(() => []),
}) {
  @modelAction arrayRemoveAt(array: any[], index: number) {
    array.splice(index, 1);
  }

  @modelAction arrayPush(array: any[], item: any) {
    array.push(item);
  }

  @modelAction addForm1() {
    this.form1List.push(new Form1({}));
  }

  @modelAction addForm2() {
    this.form2List.push(new Form2({}));
  }
}

type Path = ReadonlyArray<string | number>;

@model("myApp/Root")
export class Root extends Model({
  settings: prop<Settings | undefined>(),
  selectionPath: prop<Path | undefined>(),
}) {
  @observable.ref settingsDraft: Draft<Settings> | undefined;
  @observable.ref selectedChild: any;
  onInit() {
    if (this.settings) {
      this.setSettings(this.settings);
    }
  }
  @modelAction setSettings(val: Settings) {
    this.settings = val;
    this.settingsDraft = draft(this.settings);
    this.setChildFromSelectionPath();
  }
  @modelAction commit() {
    this.settingsDraft?.commit();
  }

  @modelAction setSelectionPath(child: any) {
    this.selectedChild = child;
    this.selectionPath = SettingsUtils.pathFromChild(child);
  }

  @modelAction setChildFromSelectionPath() {
    if (!this.selectionPath) {
      return;
    }
    const res = SettingsUtils.childFromPath(
      this.selectionPath,
      this.settingsDraft?.data!
    );
    if (res?.resolved) {
      this.selectedChild = res.value;
    } else {
      this.selectedChild = undefined;
    }
  }
}

This seems to work OK. I also need to hold on to the path of the subtree currently in edit mode, because when I update the model with the response from the backend after saving the objects in-memory become stale and I need to reflect the server update for a particular subtree on the screen.
By keeping the path I can resolve a fresh subtree for this path and swap the subtree model with the updated one.
Not sure if this is somewhat over-engineered, I could not figure out a simpler or more straightforward solution.

@xaviergonz I'm going to close this issue, and I hope this discussion might be useful for somebody else hitting similar issues. Thanks for quick response!
Another side-note: those array helper functions that I have used (arrayPush  and arrayRemove) can be replaced with the build-in standardActions - https://mobx-keystone.js.org/standardActions.
It took me some time to figure that out 😅


Example: Adding codegen example from blog post

Codecov Report

Merging #769 (196156f) into main (287e48a) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #769   +/-   ##
=======================================
  Coverage   93.55%   93.55%
=======================================
  Files          42       42
  Lines        6419     6419
  Branches      377      377
=======================================
  Hits         6005     6005
  Misses        414      414

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 287e48a...196156f. Read the comment docs.

Hmm, getting some errors in the tests now: https://github.com/nhost/nhost/runs/7112457367?check_suite_focus=true.
Do you know what I need to do @plmercereau ?

Hmm, getting some errors in the tests now: https://github.com/nhost/nhost/runs/7112457367?check_suite_focus=true.
Do you know what I need to do @plmercereau ?

propably a problem with the lock file. I cleaned it and built all packages locally, it seems to have solved the problem


i want to show which field is error

For example ：  "status_code"  422 is not one of [42211]
How should I do it？
Use ValidationError？
thanks

Hi. Please leave the bug tracker for bugs, and use other resources (the JSON Schema IRC channel, or Slack channel, or the mailing lists, or StackOverflow) for usage questions.
In your case though yes, I'd recommend starting by reading the docs on ValidationError


Display a warning dialog when the FirebaseDB component is used.

Change-Id: I83175a2a311a3ca874e8d02d060ceecc4316c5c8

@halatmit @afmckinney Please Review

@josmas I should internationalize it. I'll take care of it.

@josmas I've added the Internationalization

LGTM

Moving to Gerrit

Squashed


"Unable to create a new remote session and the app does not exist or is not accessible" error appears when try to run the second BDD scenario

Issue:
unable to create new remote session for the second BDD scenario running ( app is not exist)  although its installed at the first scenario running successfully .
Environment :
java : 17.0.2
Appium/ appium flutter :1.22.2
platform : Android
Framework : java +TestNG+ Cucumber
Capabilities:
public AndroidDriver setup() throws MalformedURLException {
File rootFile = new File("");
File appFile = new File(rootFile.getAbsolutePath() + appPtah);
appPtah = appFile.getAbsolutePath();
    DesiredCapabilities flutterCapabilities = new DesiredCapabilities();
    flutterCapabilities.setCapability( "deviceName", deviceName );
    flutterCapabilities.setCapability( "platformName", platformName );
    flutterCapabilities.setCapability( "platformVersion", platformVersion);
    flutterCapabilities.setCapability("udid",udid);
    flutterCapabilities.setCapability("app",appPtah);
    flutterCapabilities.setCapability("automationName", "Flutter");
    flutterCapabilities.setCapability("skipUnlock","true");
    flutterCapabilities.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, "com.rabbit.mart.staging");
    flutterCapabilities.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, "com.rabbit.mart.MainActivity");
    flutterCapabilities.setCapability("noReset", false);
    flutterCapabilities.setCapability("fullReset", true);
    flutterCapabilities.setCapability("autoDismissAlerts", true);
    flutterCapabilities.setCapability("autoGrantPermissions", "true");
    flutterCapabilities.setCapability("newCommandTimeout", "45000");
    driver = new AndroidDriver<MobileElement>(new URL("http://<IP_ADDRESS>:4723/wd/hub"), flutterCapabilities);

Hooks
@Before
public void setUp() throws MalformedURLException {
baseObject=new BaseClass();
baseObject.setup();
System.out.println("Before all step check");
}
@After
public void tearDown() throws MalformedURLException {
    baseObject=new BaseClass();
    driver.quit();
    System.out.println("After all step check");
}

Appium Error
[UiAutomator2] Capability 'fullReset' set to 'true', Uninstalling 'com.rabbit.mart.staging'
[ADB] Uninstalling com.rabbit.mart.staging
[ADB] Getting install status for com.rabbit.mart.staging
[ADB] Running '/Users/mayadaabdelsalam/Library/Android/sdk/platform-tools/adb -P 5037 -s 8ABY0HBCZ shell dumpsys package com.rabbit.mart.staging'
[FlutterDriver] Connection to ws://<IP_ADDRESS>:38941/IbWgrhTEYzE=/ws closed
[ADB] 'com.rabbit.mart.staging' is installed
[ADB] Running '/Users/mayadaabdelsalam/Library/Android/sdk/platform-tools/adb -P 5037 -s 8ABY0HBCZ shell am force-stop com.rabbit.mart.staging'
[ADB] Running '/Users/mayadaabdelsalam/Library/Android/sdk/platform-tools/adb -P 5037 -s 8ABY0HBCZ uninstall com.rabbit.mart.staging'
[Instrumentation] The process has exited with code 0
[ADB] 'adb uninstall com.rabbit.mart.staging' command output: Success
[ADB] com.rabbit.mart.staging was successfully uninstalled
[Logcat] Stopping logcat capture
[ADB] Removing forwarded port socket connection: 8200
[ADB] Running '/Users/mayadaabdelsalam/Library/Android/sdk/platform-tools/adb -P 5037 -s 8ABY0HBCZ forward --remove tcp:8200'
[UiAutomator2] Restoring hidden api policy to the device default configuration
[ADB] Running '/Users/mayadaabdelsalam/Library/Android/sdk/platform-tools/adb -P 5037 -s 8ABY0HBCZ shell 'settings delete global hidden_api_policy_pre_p_apps;settings delete global hidden_api_policy_p_apps;settings delete global hidden_api_policy''
[BaseDriver] Event 'quitSessionFinished' logged at<PHONE_NUMBER>192 (12:37:35 GMT+0200 (Eastern European Standard Time))
[W3C (897cc5bc)] Received response: null
[W3C (897cc5bc)] But deleting session, so not returning
[W3C (897cc5bc)] Responding to client with driver.deleteSession() result: null
[HTTP] <-- DELETE /wd/hub/session/897cc5bc-d4b4-462b-998b-11d2f090e8e2 200 1745 ms - 14
[HTTP]
[HTTP] --> POST /wd/hub/session
[HTTP] {"desiredCapabilities":{"app":"/Users/mayadaabdelsalam/Desktop/Apollo-framework-Israa/Users/mayadaabdelsalam/Desktop/Apollo-framework-Israa/AppBuild/app-staging-debug-5.apk","appPackage":"com.rabbit.mart.staging","noReset":false,"autoDismissAlerts":true,"deviceName":"Pixel3XL","fullReset":true,"appActivity":"com.rabbit.mart.MainActivity","newCommandTimeout":"45000","platformVersion":"11","automationName":"Flutter","autoGrantPermissions":"true","skipUnlock":"true","platformName":"Android","udid":"8ABY0HBCZ"},"capabilities":{"firstMatch":[{"appium:app":"/Users/mayadaabdelsalam/Desktop/Apollo-framework-Israa/Users/mayadaabdelsalam/Desktop/Apollo-framework-Israa/AppBuild/app-staging-debug-5.apk","appium:appActivity":"com.rabbit.mart.MainActivity","appium:appPackage":"com.rabbit.mart.staging","appium:autoDismissAlerts":true,"appium:autoGrantPermissions":"true","appium:automationName":"Flutter","appium:deviceName":"Pixel3XL","appium:fullReset":true,"appium:newCommandTimeout":"45000","appium:noReset":false,"platf...
[W3C] Calling AppiumDriver.createSession() with args: [{"app":"/Users/mayadaabdelsalam/Desktop/Apollo-framework-Israa/Users/mayadaabdelsalam/Desktop/Apollo-framework-Israa/AppBuild/app-staging-debug-5.apk","appPackage":"com.rabbit.mart.staging","noReset":false,"autoDismissAlerts":true,"deviceName":"Pixel3XL","fullReset":true,"appActivity":"com.rabbit.mart.MainActivity","newCommandTimeout":"45000","platformVersion":"11","automationName":"Flutter","autoGrantPermissions":"true","skipUnlock":"true","platformName":"Android","udid":"8ABY0HBCZ"},null,{"firstMatch":[{"appium:app":"/Users/mayadaabdelsalam/Desktop/Apollo-framework-Israa/Users/mayadaabdelsalam/Desktop/Apollo-framework-Israa/AppBuild/app-staging-debug-5.apk","appium:appActivity":"com.rabbit.mart.MainActivity","appium:appPackage":"com.rabbit.mart.staging","appium:autoDismissAlerts":true,"appium:autoGrantPermissions":"true","appium:automationName":"Flutter","appium:deviceName":"Pixel3XL","appium:fullReset":true,"appium:newCommandTimeout":"45000","appium:noReset":false,"platformName":"android","appium:platf...
[BaseDriver] Event 'newSessionRequested' logged at<PHONE_NUMBER>357 (12:37:35 GMT+0200 (Eastern European Standard Time))
[BaseDriver] The following capabilities are not standard capabilities and should have an extension prefix:
[BaseDriver]   skipUnlock
[BaseDriver] Number capability passed in as string. Functionality may be compromised.
[Appium] Appium v1.22.0 creating new FlutterDriver (v0.0.32) session
[Appium] Applying relaxed security to 'FlutterDriver' as per server command line argument. All insecure features will be enabled unless explicitly disabled by --deny-insecure
[BaseDriver] W3C capabilities and MJSONWP desired capabilities were provided
[BaseDriver] Creating session with W3C capabilities: {
[BaseDriver]   "alwaysMatch": {
[BaseDriver]     "platformName": "android",
[BaseDriver]     "appium:skipUnlock": "true",
[BaseDriver]     "appium:app": "/Users/mayadaabdelsalam/Desktop/Apollo-framework-Israa/Users/mayadaabdelsalam/Desktop/Apollo-framework-Israa/AppBuild/app-staging-debug-5.apk",
[BaseDriver]     "appium:appActivity": "com.rabbit.mart.MainActivity",
[BaseDriver]     "appium:appPackage": "com.rabbit.mart.staging",
[BaseDriver]     "appium:autoDismissAlerts": true,
[BaseDriver]     "appium:autoGrantPermissions": "true",
[BaseDriver]     "appium:automationName": "Flutter",
[BaseDriver]     "appium:deviceName": "Pixel3XL",
[BaseDriver]     "appium:fullReset": true,
[BaseDriver]     "appium:newCommandTimeout": "45000",
[BaseDriver]     "appium:noReset": false,
[BaseDriver]     "appium:platformVersion": "11",
[BaseDriver]     "appium:udid": "8ABY0HBCZ"
[BaseDriver]   },
[BaseDriver]   "firstMatch": [
[BaseDriver]     {}
[BaseDriver]   ]
[BaseDriver] }
[BaseDriver] Number capability passed in as string. Functionality may be compromised.
[BaseDriver] Capability 'newCommandTimeout' changed from string ('45000') to integer (45000). This may cause unexpected behavior
[BaseDriver] The following capabilities were provided, but are not recognized by Appium:
[BaseDriver]   skipUnlock
[BaseDriver]   app
[BaseDriver]   appActivity
[BaseDriver]   appPackage
[BaseDriver]   autoDismissAlerts
[BaseDriver]   autoGrantPermissions
[BaseDriver] Session created with session id: 57877637-d961-411a-bdd5-ba270b3f2b30
[FlutterDriver] Starting an Android proxy session
[BaseDriver] W3C capabilities and MJSONWP desired capabilities were provided
[BaseDriver] Creating session with W3C capabilities: {
[BaseDriver]   "alwaysMatch": {
[BaseDriver]     "platformName": "android",
[BaseDriver]     "appium:skipUnlock": "true",
[BaseDriver]     "appium:app": "/Users/mayadaabdelsalam/Desktop/Apollo-framework-Israa/Users/mayadaabdelsalam/Desktop/Apollo-framework-Israa/AppBuild/app-staging-debug-5.apk",
[BaseDriver]     "appium:appActivity": "com.rabbit.mart.MainActivity",
[BaseDriver]     "appium:appPackage": "com.rabbit.mart.staging",
[BaseDriver]     "appium:autoDismissAlerts": true,
[BaseDriver]     "appium:autoGrantPermissions": "true",
[BaseDriver]     "appium:automationName": "Flutter",
[BaseDriver]     "appium:deviceName": "Pixel3XL",
[BaseDriver]     "appium:fullReset": true,
[BaseDriver]     "appium:newCommandTimeout": "45000",
[BaseDriver]     "appium:noReset": false,
[BaseDriver]     "appium:platformVersion": "11",
[BaseDriver]     "appium:udid": "8ABY0HBCZ"
[BaseDriver]   },
[BaseDriver]   "firstMatch": [
[BaseDriver]     {}
[BaseDriver]   ]
[BaseDriver] }
[BaseDriver] Number capability passed in as string. Functionality may be compromised.
[BaseDriver] Capability 'skipUnlock' changed from string to boolean. This may cause unexpected behavior
[BaseDriver] Capability 'autoGrantPermissions' changed from string to boolean. This may cause unexpected behavior
[BaseDriver] Capability 'newCommandTimeout' changed from string ('45000') to integer (45000). This may cause unexpected behavior
[BaseDriver] The following capabilities were provided, but are not recognized by Appium:
[BaseDriver]   autoDismissAlerts
[BaseDriver] Session created with session id: 8d1c4788-ca2a-4391-9f2e-27432afda3a0
[UiAutomator2] Deleting UiAutomator2 session
[FlutterDriver] Deleting Flutter Driver session
[BaseDriver] Event 'newSessionStarted' logged at<PHONE_NUMBER>384 (12:37:35 GMT+0200 (Eastern European Standard Time))
[W3C] Encountered internal error running command: Error: The application at '/Users/mayadaabdelsalam/Desktop/Apollo-framework-Israa/Users/mayadaabdelsalam/Desktop/Apollo-framework-Israa/AppBuild/app-staging-debug-5.apk' does not exist or is not accessible
[W3C]     at /Applications/Appium Server GUI.app/Contents/Resources/app/node_modules/appium/node_modules/appium-base-driver/lib/basedriver/helpers.js:234:13
[HTTP] <-- POST /wd/hub/session 500 28 ms - 981
[HTTP]

Could you try out the latest flutter driver with Appium 2?
They have some improvements related to the initial connection.

Please try out Appium 2 and latest appium-flutter-driver


Step 4 of separating out interpretations

Finishes out #336 by moving interpretation-specific amendment processing and tree building into plugins.

Coverage decreased (-0.2%) to 91.725% when pulling d5fadaea3bd670db760f5e2720e144337f557b3f on cmc333333:separate-interp-4 into c20e760078da04153544ffd20cf05a643a3a6637 on eregs:master.

This looks like a lot of new code, but it's largely just moving logic around. The failures are still from #347 and #348, so I'm going to merge this without their success.


Add DeviceSet to Cluster

Add DeviceSet to Cluster so we can access memory allocators when running grappler optimizations.
This is required by the TensorRT integration with TF.

@samikama


Design layout of the Organization Management screen

Is this referring to the "View My Organizations" page?

Sorry, I didn't see your comment here. It is referring to the "Edit Organization" page. I should've named this better, my apologies.

Acceptance Criteria:

[ ] I should be able to access this page from the "Organization Page" (the page on which I can view details regarding a given organization
[ ] On this page, I should be able to edit all the same details I inputted when I created the organization
[ ] I should also be able to mark another user as an admin by inputting the other user's username
[ ] If I am not an admin of this organization, I should not be able to access this page


requestLayout() improperly called by AppCompatTextView

Hello. I have this issue that infinitely print in log:
W/View: requestLayout() improperly called by android.support.v7.widget.AppCompatTextView{b2debd V.ED..C.. ........ 36,47-348,120 #7f090275 app:id/tvTitle} during second layout pass: posting in next frame
W/View: requestLayout() improperly called by android.widget.RelativeLayout{2d66426 V.E...C.. ......I. 0,0-1080,168 #7f090163 app:id/header_view} during second layout pass: posting in next frame
You know something about it?

This is caused by using this library?

Yes. When i disabled this lib, issue was disappeared.
Issue description: When recyclerView in start position - there are no errors. But when i start scroll in log appear this errors.
I also found that requestLayout method called in  StickyHeaderPositioner.java .Maybe issue is here.
I will be very grateful if you solve this issue. Thanks.

Понедельник, 18 декабря 2017, 8:20 +05:00 от Brandon Gogetap <<EMAIL_ADDRESS>>:
This is caused by using this library?
—
You are receiving this because you authored the thread.
Reply to this email directly,  view it on GitHub , or  mute the thread .

requestLayout is required in the waitForLayoutAndRetry method of StickyHeaderPositioner. Though I'll see if just calling it on the header view itself is sufficient.
The other one that's called in attachHeader may be redundant.
I'll mess around with them a bit and maybe get a snapshot out that you can try.

Any update on this? Having the same issue.

You can try removing the call I mentioned in my previous comment. I'm hesitant to put it in a release, though the current UI tests pass with it. I'll comment here if I do go ahead with it.

Any changes?


Added Penrith workshop details (Don't merge yet)

👍

There's a typo in mine, but can't edit this PR:
show ane example ussing  ==> show one example using
👍 merge! (After fix)


Nothing about changing the tier of an individual blob

How do you change the tier of a blob with powershell?

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

ID: 0d0e9698-bb66-e1cc-a941-ffe341f86a5c
Version Independent ID: cf4bf131-32d6-f700-382b-1f134ba3383d
Content: Perform operations on Azure Blob storage (object storage) with PowerShell | Microsoft Docs
Content Source: articles/storage/blobs/storage-how-to-use-blobs-powershell.md
Service: storage
GitHub Login: @tamram
Microsoft Alias: tamram

@jordanmills
Thanks for the feedback! We are currently investigating and will update you shortly.

@jordanmills  There is an option to use Azure CLI to change the tiers, you can check the following link: https://docs.microsoft.com/en-us/cli/azure/storage/blob?view=azure-cli-latest#az_storage_blob_set_tier
And using Powershell using Set-AzureRmStorageAccount (This is for the full storage account and not blob), more info can be found here: https://docs.microsoft.com/en-us/azure/storage/common/storage-powershell-guide-full
I'd recommend also checking the following article which has the option to use the "Set Blob Tier" : https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-tier
this is via api but unfortunately not in PowerShell, let me know if this helps.


Fix JSDoc annotation in R.drop

The [a] format was causing the jsdoc binary to choke when building the website docs

Not quite a duplicate of #2030. ;)

Haha, @kedashoe was too quick. Is there a preference of {*} vs {Array}?

I originally had Array as well but changed it to {*} to match take. Both seem pretty bad, I just figured to make them the same for now and address it in the future?

I'll close this one in favour of #2030


Failed not read fragment from cache

I'm trying to read fragment from cache with this code
_graphQLClient.readFragment_ConvergedCartDetailsTest(         idFields: {'__typename': 'ConvergedCart', 'ccid': ccid},       );
here is a fragment definition
fragment ConvergedCartDetailsTest on ConvergedCart{
  ccid
  version
  subCarts
  {
    itemGroups {
      items
      {
        price {
          ...priceFragment
        }
      }
    }
  }
}

fragment priceFragment on Price
{
  priceId
  ... on SubsidyPrice {
    payTodayPrice
  }
}

but, it loads incomplete data for the fragment and it fails to parse from json because of required fields missing

priceId and payTodayPrice fields are missing.
although, if I don't insert price query as a fragment then it works.
The fragment:
fragment ConvergedCartDetailsTest on ConvergedCart{
 ccid
 version
 subCarts
 {
   itemGroups {
     items
     {
       price {
         priceId
         ... on SubsidyPrice {
           payTodayPrice
         }
       }
     }
   }
 }
}

In this case I can successfully read the fragment

I done some research and these values are lost during the normalization and they are not saved into the cache if I use first fragment where another fragment is used for price field which is an interface type.

this is the schema for Price type
""" Can be subsidy or loan """
interface Price {
    priceId: String!
    payTodayPrice: Float
  #  other fields removed
}

""" Represents a subsidy price """
type SubsidyPrice implements Price {
    priceId: String!
    payTodayPrice: Float
  #  other fields removed
}

""" Represents a loan price """
type LoanPrice implements Price {
    priceId: String!
    payTodayPrice: Float
  #  other fields removed
}

On the face of it, this doesn't sound like an issue with graphql codegen. A simple test would be to see if you are experiencing the same issues by calling the underlying client directly. Unless you find some errors in the generated code, I suspect you will be able to find the same issues.
I don't know how you populate or configure your cache, but that would be my recommendation for you to look at first.

that's a only configuration for the cache

I'll check querying without the generated method to see if it caches properly in this case.


Structurizr overwrites manual allocation of the elements

Description
Views with manual layouts overwritten in structurizr.editable=false mode, anyway. There should be a way to make workspace.json really read-only.
Update: Structurizr resets allocations of the elements in the named views voiding the hours of work. It's a bug IMO.
Priority
I have no budget and there's no rush, please add this feature for free
More information

Workaround for docker compose:  :ro flag mounting the folder
Workaround for K8S: set 444 permissions on workspace.json

The file system needs to be writeable - Lite parses the DSL file to create the JSON file, with structurizr.editable=false making the diagrams non-editable from the UI. I think you're running into a different issue, but I'm unable to reproduce it given the limited information provided unfortunately.

Non-editable diagrams should be non-editable completely. ATM the embedding via iframe overwrites diagrams.

Embedding diagrams via an iframe isn't supported by Lite, so I'd recommend using the on-premises installation instead -> https://docs.structurizr.com/onpremises/embed#iframe-embed

I see the business points, with full respect.
For the community. EmbedController has 2 endpoints for embedding. The Lite can be deployed in the Intranet and integrated with Confluence using iframe and /workspace/embed endpoint.

I see the business points, with full respect.
For the community.

The on-premises installation is free and open source too, with features specifically designed for embedding via an iframe -> https://github.com/structurizr/onpremises


Wait for at least one account to have been created before starting the account benchmarks

Problem
Consider a benchmark like the one in #3959. Presently, that PR causes a lot of this to be echoed when the benchmark first starts up:
[2024-12-05T22:22:43.421033375Z INFO  solana_accounts_cluster_bench] get_account_info: No accounts have yet been created; skipping
[2024-12-05T22:22:43.421044166Z INFO  solana_accounts_cluster_bench] get_account_info: No accounts have yet been created; skipping
[2024-12-05T22:22:43.421054506Z INFO  solana_accounts_cluster_bench] get_account_info: No accounts have yet been created; skipping
[2024-12-05T22:22:43.421065336Z INFO  solana_accounts_cluster_bench] get_account_info: No accounts have yet been created; skipping
[2024-12-05T22:22:43.421075706Z INFO  solana_accounts_cluster_bench] get_account_info: No accounts have yet been created; skipping

Summary of Changes
Wait on the creation of the first accounts before starting the benchmark.
Related: #3959.

Updated implementation to use Barrier for synchronization.

@steveluscher Can you please do not merge with red CI.
This has broken CI for others:
https://buildkite.com/anza/agave/builds/15530#0193ac9c-ff2e-4c03-a763-be27344672ab
@yihau didn't we have a check to prevent people to merge without a green CI.

Can you please do not merge with red CI.

Wild. I'm really diligent about this. Let me see what happened here.

I see what happened. I had a ton of PRs in a stack, none of which pushed this method over the limit itself, but the rebased version of this one (on top of one of the others) did.
I'll send a PR to fix that now.

#4023.


Missing token_endpoint capabilities.

oic.oauth2.message.MissingRequiredAttribute: Missing required attribute
'token_endpoint'

@nicemid do you mind checking why the tests fail?

This is already supported. You need to add "code" as one of the "response_types_supported" in the config and token_endpoint will be added to your configuration as seen in https://github.com/SUNET/SATOSA/blob/a7d3dff25b93c9fc8334843804b52594ae9e1c9b/src/satosa/frontends/openid_connect.py#L179-L183

The test fails as it should. The test case that fails asserts that we don't advertise a token_endpoint when only the implicit grant flow is enabled.


How to send the accepted commit to remote server

Hi, I'm using the gerrit-intelij plugin and i don't understand some point. I entered  a new path(ssh://gerrit_uName@gerrit_host:29418/gerrit_projectName: refs/for/master) in intelij and all my commits are being pushed to gerrit server, the reviewers are checking it and submitting. But how are these changes are getting the remote(gitswarm) server? In which point of process I'm inserting the remote path?
Thanks.

I do not know your infrastructure. Normally, Gerrit is used as Git repo. If other users are cloning the repo from Gerrit, they should get your commits after you have submitted them in Gerrit.
If you need to synchronize it with another Git remote, you need to setup some type of synchronization. I think there are plugins for this task, but I have never configured it.
I think this question is something for the Gerrit community (chat or mailing list): https://www.gerritcodereview.com/#get-in-touch

uwolfer : Thank you for the quick response. I think that gerrit replication is  exactly what i need.


Restrict scaling in x-axis for a model.

how to restrict scaling my model lengthwise by pinch gesture ?

Duplicate #623


How to use my own dataset

Hi, I am wondering whether this work support using our own dataset?

you can use whatever dataset you want with this work ;) Datasets are just Numpy arrays.

Hi, I read the MusicNet official page, but would you please clarify their labeling format? Is every single complex value labeled in time with the particular note that it is a part of?


Create sample for storage demo & Map basic operations

Purpose:
Create sample for storage demo & Map basic operations.

#90

Screenshot:

@tuancoltech thanks Tuan, this looks great. Could you also setup GitHub Actions so it'd be possible to download APK and try it without compiling?

@tuancoltech thanks Tuan, this looks great. Could you also setup GitHub Actions so it'd be possible to download APK and try it without compiling?

@kirillt Certainly. I've setup Github Actions for sample app and now APKs are ready to be downloaded.


Create a GetCoreSchemaHandler class

Adding the class which as discussed with @dmontagu makes it (1) easier to locate the API, (2) less verbose to type out the type annotations and (3) lets us add more methods down the road without breaking anything.

cc @dmontagu

please review


"Method not found Exception" on an Azure Function

Hello,
I have two Azure functions hosted on a "Classic Plan".
Both are :

Written using C#
Reference an external business DLL using #r "MyDll.dll"
Have no compilation / package restore problems

When I restart my host

I manualy run function A
A succeed
I manualy run function B
B has a Method not found Exception on the first method call of my "MyDll.dll".

2016-11-23T17:53:43.200 Exception while executing function: Functions.FunctionB. mscorlib: Exception has been thrown by the target of an invocation. FunctionB: Method not found: 'Void BizDll..ctor(System.Guid, args)'.

Then i restart my host

I manualy run function B, before function A
B succeed
I manualy run function A
A has a Method not found Exception on the first method call of my "MyDll.dll" (different method from A because business logic is different).

Do you know how to solve this issue?
Regards,
Florent.

@santinf this points to that assembly being a different binary in each function, but having the same assembly identity.
There are a couple of ways you can go about this:

Make sure you properly version the assemblies when you make changes to it
If you expect the 2 functions to share the same exact logic (i.e. the assemblies are supposed to be the same), you may want to consider removing the assembly from each function's bin folder, creating a shared folder on the root of your function app (e.g. sharedassemblies) and modifying the reference to ```#r "../sharedassemblies/MyDll.dll". This approach will make this dependency a bit easier to manage.

Thank you @fabiocav .
I tried (2) with a shared directory

I copied all my business DLL in shared
I reference them throw #r "../shared/biz.dll"
My business DLL are well load.

When my function invoke the shared DLL, all the assemblies they used and referenced throw nuget are no longer loaded.
For exemple, I have a
"2016-11-24T17:30:08.438 Exception while executing function: Functions.A. mscorlib: Exception has been thrown by the target of an invocation. mscorlib: Could not load file or assembly 'Microsoft.Azure.SqlDatabase.ElasticScale.Client, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified."
In my Azure A function and B function project.json I have this kind of configuration 👍
{
  "frameworks": {
        "net46": {
              "frameworkAssemblies": {
                "System.Data": "<IP_ADDRESS>"
      }
        }
  },
  "dependencies": {
    "Microsoft.Extensions.Configuration": "1.0.0",
    "Microsoft.Extensions.Configuration.Abstractions": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Sendgrid": "8.0.4",
    "WindowsAzure.Storage": "7.2.0",
    "Newtonsoft.Json": "9.0.1",
    "Microsoft.Azure.SqlDatabase.ElasticScale.Client": "1.3.3",
    "EntityFramework": "6.1.3",
    "EntityFramework.Functions": "1.3.1"
  }
}

How can i shared a project.json dependencies configuration between Azure functions?


Install Helper - The operation couldn’t be completed. (CFErrorDomainLaunchd.4)

Describe the bug
I can't install the helper. The helper installation error is in the title and in the screenshot. This affects the Xcode installation process.
To Reproduce
click Install helper on the advanced settings
Expected behavior
Helper is installed.
Screenshots

Version

macOS 14.2.1 (23C71)
Xcodes 2.0.0 (20)

fixed in 2.0.2


Direct app interaction/injection

Branching from the comment made in https://github.com/chrislennon/pogoqr/issues/3#issuecomment-399754193
Until there is more official support, some investigation could be made to see if app-url:// injection could be used to add friend codes in a more streamlined fashion.

Android - from AndroidManifest.xml it appears the following app link is enabled.
               <data android:scheme="http"/>
                <data android:scheme="https"/>
                <data android:host="pokemongolive.com"/>
                <data android:pathPrefix="/launchapp"/>

As such https://pokemongolive.com/launchapp will open the app
Still to test/check:

iOS capability on the same URL
if friend code can be passed through (unlikely)

From digging around, I see a bunch of interesting incoming facebook deep linking potential but on the surface nothing further can be uncovered/injected at this stage - at least without some proper breach of ToS 😂


JWT authentication

Intro
Change Bearer tokens from simple UUID string to JWT and introduce short-live access tokens. Existing API keys will by kept and used in JWT payload (so we don't have to save whole token in the database).
Token types

api_key: without expiration
access_token: 5min expiration
refresh_token: 24h expiration

Implemented and described in Security wiki page.


TypeError in /clan/itony-2ccp2p8j

Error in ClashLeaders
TypeError in /clan/itony-2ccp2p8j
Cannot read property '__symbol@@0.5850664304212398' of undefined
View on Bugsnag
Stacktrace
https://www.clashleaders.com/static/js/vendors.8d68595a3daede5c357b.js:13 - s.Et.Ht.get [as __symbol@@0.5850664304212398]

View full stacktrace
Created automatically via Bugsnag

An error linked to this issue has been marked as fixed in Bugsnag
TypeError in /clan/itony-2ccp2p8j