Async IModelValidator

The Validate method on Microsoft.AspNet.Mvc.ModelBinding.IModelValidator should be ValidateAsync. Sure, validating DataAnnotations, etc. are sync. However, some validation is not.
One simple example is checking the availability of a UserName during user registration. This usually involves some query of a data store, which is clearly async work. But since the interface does not allow for this, this validation will have to be done at some different time in the pipeline. The framework comes up short in this case. Not ideal.
To validate synchronously with ValidateAsync, return Task.FromResult(errors). No problem. And if you do need to query a data store, async work is enabled.

We don't think this is a common scenario enough to worry about. We have discussed this in detail and decided it is not useful enough to make the validation pipeline async considering that making one thing async is a viral change all the way up the stack from it.
For the scenario described above:
When you validate a user in views you use a remote attribute.
You can validate the business decision in the action itself rather than in a validation rule for the object.

I  understand this decision and knew you would have talked about this. Unfortunately for me though, my company's core validation cannot be ported over the use Mvc's model binding now. For good reason, our model validation implementation is async all the way up our stack. And we can't provably call our async code in Mvc's sync interfaces without deadlock issues (or always enforce ConfigureAsync(false)).
So we'll need to keep throwing typed exceptions in our Mvc apps and catch them in filters. Not ideal but I do understand why the masses wouldn't need async model validation 90% of the time. Oh well.
Thanks for the reply.

The good news is that filters are async so you can do the work in global action filter and not throw
-----Original Message-----
From: "Brendan Ridenour"<EMAIL_ADDRESS>Sent: 1/28/2015 4:02 PM
To: "aspnet/Mvc"<EMAIL_ADDRESS>Cc: "Yishai Galatzer"<EMAIL_ADDRESS>Subject: Re: [Mvc] Async IModelValidator (#1884)
I understand this decision and knew you would have talked about this. Unfortunately for me though, my company's core validation cannot be ported over the use Mvc's model binding now. For good reason, our model validation implementation is async all the way up our stack. And we can't provably call our async code in Mvc's sync interfaces without deadlock issues (or always enforce ConfigureAsync(false)).
So we'll need to keep throwing typed exceptions in our Mvc apps and catch them in filters. Not ideal but I do understand why the masses wouldn't need async model validation 90% of the time. Oh well.
Thanks for the reply.
—
Reply to this email directly or view it on GitHub.=


Update templates for sidecar webhook installtion and remove old ones.

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: linsun
Assign the PR to them by writing /assign @linsun in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@yusuoh: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-pilot-e2e-v1alpha3.sh
c6321a49c83da366a319821795dc39a9991e0425
link
/test istio-pilot-e2e-v1alpha3

prow/istio-pilot-e2e.sh
c6321a49c83da366a319821795dc39a9991e0425
link
/test istio-pilot-e2e

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@yusuoh: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-pilot-e2e.sh
c6321a49c83da366a319821795dc39a9991e0425
link
/test istio-pilot-e2e

prow/istio-pilot-e2e-v1alpha3.sh
15d129b89255bfb33bddf48c55500e8eeb3db258
link
/test istio-pilot-e2e-v1alpha3

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@yusuoh: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-pilot-e2e-v1alpha3.sh
15d129b89255bfb33bddf48c55500e8eeb3db258
link
/test istio-pilot-e2e-v1alpha3

prow/istio-pilot-e2e.sh
15d129b89255bfb33bddf48c55500e8eeb3db258
link
/test istio-pilot-e2e

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@yusuoh: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-pilot-e2e-v1alpha3.sh
5e5b7411c89dd2a5b5b85cb36726b2f8473441e2
link
/test istio-pilot-e2e-v1alpha3

prow/istio-pilot-e2e.sh
5e5b7411c89dd2a5b5b85cb36726b2f8473441e2
link
/test istio-pilot-e2e

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@costinm could you please approve it?

Approved - it was tested with tiller and it seems it works. This makes it closer to 0.7 istio.yaml, so less risks
for people upgrading and probably easier.

/lgtm

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: costinm
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [costinm]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@yusuoh: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-pilot-e2e-v1alpha3.sh
5e5b7411c89dd2a5b5b85cb36726b2f8473441e2
link
/test istio-pilot-e2e-v1alpha3

prow/istio-pilot-e2e.sh
5e5b7411c89dd2a5b5b85cb36726b2f8473441e2
link
/test istio-pilot-e2e

prow/istio-unit-tests.sh
5e5b7411c89dd2a5b5b85cb36726b2f8473441e2
link
/test istio-unit-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@yusuoh: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-pilot-e2e-v1alpha3.sh
5e5b7411c89dd2a5b5b85cb36726b2f8473441e2
link
/test istio-pilot-e2e-v1alpha3

prow/istio-pilot-e2e.sh
5e5b7411c89dd2a5b5b85cb36726b2f8473441e2
link
/test istio-pilot-e2e

prow/istio-unit-tests.sh
5e5b7411c89dd2a5b5b85cb36726b2f8473441e2
link
/test istio-unit-tests

prow/istio-presubmit.sh
5e5b7411c89dd2a5b5b85cb36726b2f8473441e2
link
/test istio-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

New changes are detected. LGTM label has been removed.

@costinm Removed the sidecar yaml. PTAL.

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: costinm
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [costinm]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@yusuoh: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-pilot-e2e-v1alpha3.sh
81b46ea2faab31f36ac3333091f96743a13e1d67
link
/test istio-pilot-e2e-v1alpha3

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.


[CT-1331] [Feature] Add metadata to a model without running the model

Is this your first time submitting a feature request?

[X] I have read the expectations for open source contributors
[X] I have searched the existing issues, and I could not find an existing issue for this feature
[X] I am requesting a straightforward extension of existing dbt-bigquery functionality, rather than a Big Idea better suited to a discussion

Describe the feature
The ability to add metadata (descriptions, policy tags) to a model as defined in a .yml file without running the model or needing the corresponding .sql file (in the case of objects not created through dbt).
For our main use case, we have CDC processes running that create tables, load data, and modify table schemas as they evolve in the source database (eg. columns being added, etc.). It would be very nice to have a way to add metadata to tables that were not directly created through dbt.
Describe alternatives you've considered
The workarounds for this that we've been using are:

For models created through dbt - Re-run the whole model
This is not ideal because it may be reprocessing data unnecessarily
For models not created through dbt - Create a trivial .sql file that does not load any data. Example:

    {{ config(materialized='incremental') }}

    SELECT * FROM {{ this }} WHERE false

This was not ideal because it's repetitive code that needs to be added for every object. Also not ideal because this will still process data in BigQuery and increase costs

Using Terraform to add policy tags
This was not a viable solution because Terraform requires the entire table schema to be defined. This is a problem because if the table schema is modified by an external process, Terraform will drop and recreate the table to get it back to its defined schema.

Who will this benefit?
Anybody that wants to manage all their metadata (including policy tags) with one tool.
Are you interested in contributing this feature?
No response
Anything else?
BigQuery policy tags in dbt: https://docs.getdbt.com/reference/resource-configs/bigquery-configs#policy-tags

Hey @nolan-jardine, I totally hear the ask here. There's a past issue that seems relevant to this request: https://github.com/dbt-labs/dbt-core/issues/4226
To summarize the discussion over there: It's probably possible, as a one-off operation, to perform the metadata updates you have in mind. That's a workaround that still enables you to define this metadata in dbt .yml files, and take advantage of its underlying constructs (models, BigQuery API requests, ...). We're less likely to support this natively as a first-class dbt pattern in the near term.
That said, I have heard this story before:

For our main use case, we have CDC processes running that create tables, load data, and modify table schemas as they evolve in the source database (eg. columns being added, etc.).

Could you say a bit more about what processes are updating those tables, and the handoff between those processes (loading/modifying the data) and dbt (defining the metadata)? Could you imagine wanting to orchestrate those CDC processes via dbt in the future?


internal/fuzz: test_fuzz_minimize_interesting failures with "cannot unmarshal empty string"

go test proxy running at GOPROXY=http://<IP_ADDRESS>:54100/mod
--- FAIL: TestScript (0.01s)
    --- FAIL: TestScript/test_fuzz_minimize_interesting (3.78s)
        script_test.go:257:
            # Test that when an interesting value is discovered (one that expands coverage),
            # the fuzzing engine minimizes it before writing it to the cache.
            #
            # The program below starts with a seed value of length 100, but more coverage
            # will be found for any value other than the seed. We should end with a value
            # in the cache of length 1 (the minimizer currently does not produce empty
            # strings). check_cache.go confirms that.
            #
            # We would like to verify that ALL values in the cache were minimized to a
            # length of 1, but this isn't always possible when new coverage is found in
            # functions called by testing or internal/fuzz in the background. (3.574s)
            > go test -c -fuzz=.  # Build using shared build cache for speed.
            > env GOCACHE=$WORK/gocache
            > exec ./fuzz.test$GOEXE -test.fuzzcachedir=$GOCACHE/fuzz -test.fuzz=FuzzMinCache -test.fuzztime=1000x
            [stdout]
            --- FAIL: FuzzMinCache (0.60s)
                cannot unmarshal empty string
            FAIL
            [stderr]
            fuzz: elapsed: 0s, gathering baseline coverage: 0/1 completed
            fuzz: elapsed: 0s, gathering baseline coverage: 1/1 completed, now fuzzing with 16 workers
            fuzz: elapsed: 1s, execs: 551 (1226/sec), new interesting: 4 (total: 4)
            [exit status 1]
            FAIL: testdata\script\test_fuzz_minimize_interesting.txt:18: unexpected command failure

FAIL
FAIL	cmd/go	277.000s

greplogs --dashboard -md -l -e '(?ms)FAIL: TestScript/test_fuzz_minimize_interesting.*cannot unmarshal empty string'
2022-01-13T20:43:56-6891d07/windows-amd64-longtest
2021-12-02T22:53:18-fd4b391/windows-arm64-10
2021-12-01T10:19:34-0e1d553/windows-arm64-10
2021-10-18T20:39:22-267abbe/windows-amd64-longtest
2021-09-30T18:10:18-205640e/windows-arm64-10
2021-09-29T16:45:42-2fad7db/windows-amd64-race
(attn @katiehockman @rolandshoemaker)

Pinging as this issue is a release blocker for Go 1.18. Any updates?

Thanks, I'll take a look at it this week.

Just a side note: we thought we fixed this in https://github.com/golang/go/issues/48721, but apparently not. It's also still only affecting Windows it seems.


[Don't Close] Use App node instead of a Login node

Explore the possibility of using an app node for the bash wrapper script instead of the current practice of using the login node.
Using this issue as an example for ZenHub

I only use a login nodes for data transfer with my laptop.
Example:
rsync my_directory sug-login1.hgsc.bcm.edu:/groups/submissions/users/hale

On my laptop, I have this script:
(main) bin$ cat sa1
#!/usr/bin/env bash

login_host=${DEFAULT_SUG_LOGIN:-$s4}

ssh -t $login_host ssh sug-app1 "$@"

This is equivalent to:
ssh -t sug-login4.hgsc.bcm.edu ssh sug-app1

The -t on the outer ssh says:

Do not allocate a pseudo-terminal just pass the connection through to the inner ssh, which will allocate the one pseudo-terminal.

@eskinner What are your thoughts on this? Should we document this as internal SOP?

@walkerh I only use login nodes, so I don't have much of an opinion except that switching over might confuse me.

@mahitha-raj add a summary of this convesation to cram-processing-tools/docs and then close this issue.


[Bug] Adding foliage Resources with Multi Mesh generates unwanted initial mesh causing lag and crash

Godot Version: v4.3.stable.mono.official [77dcf97d8]
System Info: Godot v4.3.stable.mono - Windows 10.0.26100 - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 3060 Laptop GPU (NVIDIA; <IP_ADDRESS>94) - 11th Gen Intel(R) Core(TM) i5-11400H @ 2.70GHz (12 Threads)
Problems:
When adding a new FoliageResource with a Random mesh and a MultiMesh strategy, clicking Update Terrain generates an unknown amount of plane mesh at the center. This causes lag and can cause the editor to crash.

Steps to reproduce:

Create a new project in mono and install TerraBrush in AssetLib
Create a new 3D Scene, add a new TerraBrush Node, and click CreateTerrain in TerraBrush Node
Create new Foliages with everything in default, add a new Box Mesh, and click Update Terrain

Minimal reproduction project (MRP):
terrabrush.zip

Hey @superhighlevel ! Thanks for the reproduction, I'll have to check that!
I think this is the samething as this one, right?
https://github.com/spimort/TerraBrush/issues/158

@superhighlevel It should be fixed with the version 0.9.3Alpha.
Let me know if it works! 🙂
I'll close the issue for now, we can reopen it if needed.


Filtering "cloned" lists on one page doesn't work

Hello,
I know list.js does not support flitering nested lists. That is why I feel the possibility to filter "cloned" lists with the same filter would already increase its usabilty tremendously.
What I am trying to achieve: place multiple "cloned" lists on one page and have a filter button which will filter the  elements in all lists (the lists are built identically).
Even though list.js looks for the ul class (e.g. .list) within the defined div it only applies the filter to the first list - not all lists with that same class.
Here a fiddle to demonstrate the problem:
http://jsfiddle.net/5mz5kefy/
When clicking the "Swedish" filter it filters the Sweden entries in the first list - not all three.
How can we achieve this?
Please forgive me if that is straight forward - I am new to jquery and have spent many hours trying to make progress.
Thank you for your help
Tobais

You'll have to create three separate List.js instances. Your solution won't work.


Can't create Project from Giter8 Template

Hello,
I tried to create project from Giter8 Template but I'm getting Auth Fail error
https://www.dropbox.com/s/sf00dzthl0sqfdv/Screenshot 2019-09-30 21.31.05.png?dl=0

Do you have ssh setup for github?

Yes! I did setup SSH for github... How can I access the template via HTTPS


Readme: add rails g migration example for counter_cache for model

provide one-liner for counter_cache migration via rails g m in README

I agree that the section on counter cache could use a better explanation, but i think it might be better to remove the column section altogether, since it's explained in the note just above. Maybe a example under, with proper defaults etc?

Yes, that could be better :) Unlikely that I find time to improve thing further in near future.

Thanks for the PR. I agree with @rchrand that the counter cache section in the docs could be improved. In my mind it needs more work than this, but since this is making it better and not worse, I think it should be merged.


fix: cache option in TerserPlugin config not valid

According to the documentation https://webpack.js.org/plugins/terser-webpack-plugin/ the cache parameter does not seem to be a valid parameter. When running cantara there is also reported this error message:
Serverless: Could not load webpack config '***/api_serverlessWebpackConfig.js'
ValidationError: Invalid options object. Terser Plugin has been initialized using an options object that does not match the API schema.

options has an unknown property 'cache'.
...

Bereits gefixt: https://github.com/CantaraJS/cantara/pull/151


Appstudio update test-custom-default-branch-zeez

Pipelines as Code configuration proposal

Pipelines as Code CI/test-custom-default-branch-zeez-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
20 seconds
init

✅ Succeeded
24 seconds
clone-repository

✅ Succeeded
1 minute
build-container

✅ Succeeded
23 seconds
deprecated-base-image-check

✅ Succeeded
15 seconds
sanity-inspect-image

✅ Succeeded
33 seconds
clamav-scan

✅ Succeeded
14 seconds
clair-scan

✅ Succeeded
10 seconds
sbom-json-check

✅ Succeeded
9 seconds
sanity-label-check

✅ Succeeded
8 seconds
sanity-optional-label-check

✅ Succeeded
4 seconds
show-summary


[Web] The exception TypeErrorImpl in : js_primitives.dart:30 is not handled when use release mode for web platform

Steps to reproduce
1.- run flutter run --release
Expected results
an Exception
The following TypeErrorImpl was thrown while handling a gesture:
js_primitives.dart:30 Expected a value of type 'String', but got one of type 'Null'
Actual results
Array content: [null]
js_primitives.dart:42 valid parsing JSON
Code sample
Create a simple flutter project sample using flutter create for web
Code sample
in void _incrementCounter() function add this code
and then press plus floating button
void _incrementCounter() {
    const String invalidJsonArray = '{"test":[null]}'; // invalid cast to List
    final json = jsonDecode(invalidJsonArray);
    List<String> testArray = [];
    testArray = List<String>.from(json['test']);
    print('Array content: $testArray');
    print('valid parsing JSON');

    setState(() {
      // This call to setState tells the Flutter framework that something has
      // changed in this State, which causes it to rerun the build method below
      // so that the display can reflect the updated values. If we changed
      // _counter without calling setState(), then the build method would not be
      // called again, and so nothing would appear to happen.
      _counter++;
    });
  }

Screenshots or Video

Screenshots / Video demonstration
using (debug mode)
flutter run

but using
flutter run --release

The expected is to have same exception in release mode in order to validate a parsing json

Logs
Logs
Log in debug mode:

══╡ EXCEPTION CAUGHT BY GESTURE ╞═══════════════════════════════════════════════════════════════════
The following TypeErrorImpl was thrown while handling a gesture:
Expected a value of type 'String', but got one of type 'Null'

When the exception was thrown, this was the stack:
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 294:3       throw_
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 127:3       castError
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 818:12  cast
dart-sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart 674:17                as
dart-sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart 545:37                from
packages/test_js_exception/main.dart 66:17                                        [_incrementCounter]
packages/flutter/src/material/ink_well.dart 1183:21                               handleTap
packages/flutter/src/gestures/recognizer.dart 275:24                              invokeCallback
packages/flutter/src/gestures/tap.dart 652:11                                     handleTapUp
packages/flutter/src/gestures/tap.dart 309:5                                      [_checkUp]
packages/flutter/src/gestures/tap.dart 242:7                                      handlePrimaryPointer
packages/flutter/src/gestures/recognizer.dart 630:9                               handleEvent
packages/flutter/src/gestures/pointer_router.dart 98:7                            [_dispatch]
packages/flutter/src/gestures/pointer_router.dart 143:9                           <fn>
dart-sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart 21:7           forEach
packages/flutter/src/gestures/pointer_router.dart 141:17                          [_dispatchEventToRoutes]
packages/flutter/src/gestures/pointer_router.dart 127:7                           route
packages/flutter/src/gestures/binding.dart 488:5                                  handleEvent
packages/flutter/src/gestures/binding.dart 468:14                                 dispatchEvent
packages/flutter/src/rendering/binding.dart 439:11                                dispatchEvent
packages/flutter/src/gestures/binding.dart 413:7                                  [_handlePointerEventImmediately]
packages/flutter/src/gestures/binding.dart 376:5                                  handlePointerEvent
packages/flutter/src/gestures/binding.dart 323:7                                  [_flushPointerEventQueue]
packages/flutter/src/gestures/binding.dart 292:9                                  [_handlePointerDataPacket]
lib/_engine/engine/platform_dispatcher.dart 1289:5                                invoke1
lib/_engine/engine/platform_dispatcher.dart 273:5                                 invokeOnPointerDataPacket
lib/_engine/engine/pointer_binding.dart 168:30                                    [_onPointerData]
lib/_engine/engine/pointer_binding.dart 768:16                                    <fn>
lib/_engine/engine/pointer_binding.dart 720:7                                     <fn>
lib/_engine/engine/pointer_binding.dart 317:9                                     loggedHandler
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 574:37  _checkAndCall
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 579:39  dcall

Handler: "onTap"
Recognizer:
  TapGestureRecognizer#71218
════════════════════════════════════════════════════════════════════════════════════════════════════

Flutter Doctor output
Doctor output
[✓] Flutter (Channel stable, 3.16.7, on macOS 14.2.1 23C71 darwin-arm64, locale en-US)
    • Flutter version 3.16.7 on channel stable at /Users/digitalvaultstudiodvs/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision ef1af02aea (19 hours ago), 2024-01-11 15:19:26 -0600
    • Engine revision 4a585b7929
    • Dart version 3.2.4
    • DevTools version 2.28.5

[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, please use
      `flutter config --android-sdk` to update to that location.

[!] Xcode - develop for iOS and macOS (Xcode 15.2)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15C500b
    ✗ Unable to get list of installed Simulator runtimes.
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[!] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions).

[✓] VS Code (version 1.85.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.80.0

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-arm64   • macOS 14.2.1 23C71 darwin-arm64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 120.0.6099.216

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

! Doctor found issues in 3 categories.

Thanks for filing this @luisrodas-digital.
I see this is being handled now on the latest master channel.

master flutter doctor -v

[!] Flutter (Channel master, 3.19.0-4.0.pre.42, on macOS 14.2.1 23C71 darwin-arm64, locale en-NG)
    • Flutter version 3.19.0-4.0.pre.42 on channel master at /Users/damilolaalimi/fvm/versions/master
    ! Warning: `dart` on your path resolves to /opt/homebrew/Cellar/dart/3.1.5/libexec/bin/dart, which is not inside your current Flutter SDK checkout at /Users/damilolaalimi/fvm/versions/master. Consider adding /Users/damilolaalimi/fvm/versions/master/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 5931b4f21d (5 hours ago), 2024-01-11 20:42:07 -0800
    • Engine revision 44a0a6ee4d
    • Dart version 3.4.0 (build 3.4.0-16.0.dev)
    • DevTools version 2.31.0
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/damilolaalimi/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • ANDROID_HOME = /Users/damilolaalimi/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15C65
    • CocoaPods version 1.14.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)

[!] Android Studio (version unknown)
    • Android Studio at /Users/damilolaalimi/Downloads/Android Studio Preview.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    ✗ Unable to determine Android Studio version.
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)

[✓] VS Code (version 1.85.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.78.0

[✓] VS Code (version 1.83.1)
    • VS Code at /Users/damilolaalimi/Downloads/Visual Studio Code.app/Contents
    • Flutter extension version 3.78.0

[✓] Connected device (6 available)
    • sdk gphone64 arm64 (mobile)         • emulator-5554                        • android-arm64  • Android 14 (API 34) (emulator)
    • Damilola’s iPhone (mobile)          • 00008110-001964480AE1801E            • ios            • iOS 17.1.1 21B91
    • iPhone SE (3rd generation) (mobile) • 2512805F-1CB0-4FAF-89B3-4E9EC54CD6D2 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-17-2 (simulator)
    • iPhone 15 (mobile)                  • DBCC5388-DA57-470E-8F0E-477EA0AA3C3A • ios            • com.apple.CoreSimulator.SimRuntime.iOS-17-2 (simulator)
    • macOS (desktop)                     • macos                                • darwin-arm64   • macOS 14.2.1 23C71 darwin-arm64
    • Chrome (web)                        • chrome                               • web-javascript • Google Chrome 120.0.6099.216

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

! Doctor found issues in 2 categories.

I see in master channel uses new flutter version 3.19.x and dart sdk 3.4.0, but still no able to be used for releases projects.
I did made a custom cast
List<T> castList<T>(dynamic list) {
    if (list is! List) throw Exception('Invalid list');
    for (final item in list) {
      if (item is! T) throw Exception('Invalid list');
    }
    return list.cast<T>();
  }

Yeah, works as expected


Creating a new instance of yt-dlp at channel join

Is your feature request related to a problem? Please describe.
Currently, there is quite a delay between sending a play command and the bot actually playing the song.
Describe the solution you'd like
I think the main issue is that a new yt-dlp instance is created for each time the play command is executed (add_song method in voice.rs). The documentation of songbird mentions a high cost of creating a new instance, which I think has something to do with the relatively long loading times. I think a possible solution would be creating a new instance when the bot joins a channel (the join method in voice.rs) and cache the resuling instance with a package like this. I would implement it myself if I knew how 😅.

Thanks for the issue! I'm currently investigating this.
From what I got so far from going through the docs and source code of songbird is, that the costs for "restarting and seeking [on a track] will probably be very high: expect a pause if you seek backwards" ¹. By calling the ytdl function from songbird we basically just call the yt-dlp executable which will return the song in a certain format or at least metadata of the song. So I don't think that we could cache something here (correct me if I got you wrong).
However, currently we are adding every song lazy to the queue. This is at least for the first song not optimal. Because lazy means, from what I understood, that we are fetching the metadata first and start to serve the song only as needed. This doesn't make sense for the first song in the queue as we need this one immediately (² and ³).
So one change I will try out here is to only add tracks lazy to the queue if they are not the first. This should in theory improve the performance here. But be aware that this is probably only a drop in the ocean as the most important aspects here are e.g. the network connection (yt-dlp download), yt-dlp execution (python) and correct encoding to a format that discord can understand (there is already some work on improving the encoding https://github.com/serenity-rs/songbird/issues/123 ).

@TeaDrinkingProgrammer I pushed a change to the development branch. This should reduce the time until the fist track starts playing slightly.

@TeaDrinkingProgrammer I pushed a change to the development branch. This should reduce the time until the fist track starts playing slightly.

I just tried cold-booting both Jmusicbot (my current go-to musicbot) and cadencyrs and they were quite similar, even without the new optimisation :). Only thing that was a bit slower in Cadencyrs is the processing of commands like skip or play when the bot is already up, but I understand now that this is also because Songbird is also still under heavy development. I am interested to see where this goes and I hope I can ditch Jmusicbot soon :).

Thanks for your feedback! :)
I will continue looking into more performance optimizations for the audio commands as there is definitely room for improvement. However, I'll add the help-wanted tag to the issue as I'm open to suggestions how we can achieve this.

With the move to serenity 0.12.x and songbird 0.4.x the behavior changed quite a bit. Now every time a song is added to the from serenity managed queue we just save the metadata to the queue. The song is then fetched, encoded and played lazy only when actually needed. Therefore, I'm gonna close this issue.
The rest stays the same. Serenity/Songbird still just call yt-dlp under the hood.
Close with #133


unable to load type on mac

Unable to use on mac.
The error that I get when running import-DefaultModule is bellow.
Looks like ITheme is not available
Cannot convert value "/Users/LIO2MU/.local/share/powershell/Modules/EzTheme/0.1.0/Themes/Darkly.theme.psd1" to type "Theme". Error: "Exception calling "InvokeReturnAsIs" with "1" argument(s): "Cannot process argument transformation on parameter 'Type'. Cannot convert the "PoshCode.PowerLine.PowerLineBlock" value of type "System.String" to type "System.Type".""
At /Users/LIO2MU/.local/share/powershell/Modules/EzTheme/0.1.0/EzTheme.psm1:246 char:9
+          >>>$Theme = [Theme]$Path<<<

Hmm. One of the problems with serializing custom types is that if you try to deserialize and the type isn't available, it doesn't work right. I'll have a look at PoshCode/Metadata to see if I can make those just import as PSCustomObject when the type isn't available (instead of crashing).
In the meantime, you just need to either install PowerLine, or delete the "PowerLine" block from that Darkly theme.
https://github.com/Jaykul/EzTheme/blob/58c5883514f787e42e0cd4aaef864c299542cc2d/Source/EzTheme/Themes/Darkly.theme.psd1#L107-L192


use newer ellipses syntax and also new environment variables

@kow3ns @soltysh can you guys PTAL at this PR? it would be helpful to adopt the newer friendlier syntax for minio deployment.
Thanks


ci: Update macos runner to self hosted

Updates macos runner to new self hosted runners from AWS
Signed-off-by: Eli Uriegas<EMAIL_ADDRESS>

We got some weird failings which are probably unrelated:
2022-07-21T11:40:40.4916820Z         t = transforms.RandomCrop(48)
2022-07-21T11:40:40.4916950Z         img = torch.ones(3, 32, 32)
2022-07-21T11:40:40.4917140Z         with pytest.raises(ValueError, match=r"Required crop size .+ is larger then input image size .+"):
2022-07-21T11:40:40.4917310Z >           t(img)
2022-07-21T11:40:40.4917610Z E           AssertionError: Regex pattern 'Required crop size .+ is larger then input image size .+' does not match 'Required crop size (48, 48) is larger than input image size (32, 32)'.

Let me update the branch with latest main and restart tests.

The changes LGTM. We should merge on Green CI.
@seemethere Given that now we have 45 runners for M1, we would like run these tests not after merging on main but also on the PRs. This will help us move towards beta support of M1. Given our resources are still constraint, we consider running the full unit-tests on a single python config. Any thoughts on this?

Should be fine, but would still limit it to 1 python config for the time being

@seemethere I'm a bit confused on why this is failing. The issue seems unrelated as the changes don't affect CircleCI. Nevertheless while running the same test on main branch (see dummy PR #5009), it passes. The issue seems related to the dependency with PyTorch. Any idea?

@seemethere I'm a bit confused on why this is failing. The issue seems unrelated as the changes don't affect CircleCI. Nevertheless while running the same test on main branch (see dummy PR #5009), it passes. The issue seems related to a dependency with PyTorch. Any idea?

I think I understand the issue here, the windows runners don't have python3 installed by default so it should default to python when python3 isn't available

Is this something we need to cherry-pick for the bugfix release @seemethere ?


Add an explanation as to why so many permissions are required for Firefox add-on

Currently needed permissions for the Firefox Add-On are very heavy and it would be nice to add to the documentation an explanation as to why all those permissions are required.

"permissions": [
      "http://*/",
      "https://*/",
      "tabs",
      "storage",
      "notifications"
  ],

These are the permissions required by Altair. I would assume they are all self explanatory.
"http://*/", "https://*/", for triggering the extension from anywhere.
tab for opening the tab for the extension.
storage for storing extension options.
notifications for push notifications.

Fair enough, I was wondering why it required the access to all websites data but seems like the permissions really require that for sending requests.
Thanks!


TAMU DSpace 7 Upgrade Sprint 2

Closing as Reimplement Community Tree Browser Aspect#14 was not approved and we have to exclude https://github.com/TAMULib/dspace-angular/pull/28 and upstream updates.


React Native Compatibility

This won't work with React Native will it?  What would something like that take?

@tomcartwrightuk please do you know the answer?
react native has websocket implementation, but will it work seamlessly with socket.io-p2p?
https://facebook.github.io/react-native/docs/network#websocket-support


Fix Type Declarations for ESModule

Changes made in this PR will add type declarations for the ESModule version of this package.
In doing so, this PR will fix #17.

Look. We have problems with index.d.mts file.
When we use inside mjs or cjs file this code snippet:
import gulpEsbuild, {createGulpEsbuild} from "gulp-esbuild";

console.log(gulpEsbuild);
console.log(createGulpEsbuild);
console.log(gulpEsbuild.createGulpEsbuild);

import("gulp-esbuild")
	.then(result => {
		console.log('dynamic import');
		console.log(result.createGulpEsbuild);
		console.log(result.default);
		console.log(result.default.createGulpEsbuild);
	})

Typescript uses index.d.mts and shows us, what out package has gulpEsbuild.createGulpEsbuild. But actually it is not the truth.
[Function: plugin]
[Function: createGulpEsbuild]
undefined
dynamic import
[Function: createGulpEsbuild]
[Function: plugin]
undefined

Should mts declaration file have import from index.js file? I think no.

I mean mts declaration file should looks like:
import {Transform} from 'stream'
import {BuildOptions} from 'esbuild'

type Options = Omit<
	BuildOptions,
	'write' | 'incremental' | 'entryPoints' | 'stdin' | 'watch' | 'allowOverwrite' | 'absWorkingDir' | 'nodePaths'
> & {
	metafileName?: string
}

interface CreateOptions {
	incremental?: boolean
	pipe?: boolean
}

type GulpEsbuild = (options: Options) => Transform
type CreateGulpEsbuild = (options: CreateOptions) => GulpEsbuild

declare const gulpEsbuild: GulpEsbuild;
declare const createGulpEsbuild: CreateGulpEsbuild

export {createGulpEsbuild}
export default gulpEsbuild

Without & from d.ts

Thanks, I totally missed that one
I'll fix it asap

Alright! Fixed it now.
Sorry for the inconvenience


Always start a new row of content for s

On Firefox, I was having the issues mentioned in https://github.com/bitcoinops/bitcoinops.github.io/pull/30#issuecomment-406467996 despite the fix introduced in #31, so here's a solution that works for me (tested in FF and Chromium with various screen widths).

Looks great. ACK 217007cba9c0c4d90b0a95ead016cf47f212c92e. Thanks @harding !


Initial value in combo (Select2Editor)

I am trying to set initial value in Hardcoded Values Editor, but it does not seem to work.
And I cannot find any OnInitialize event, where I could set the value.
any idea how to do it?
    @Serenity.Decorators.registerEditor()
    export class PatternSearchEditor extends Serenity.Select2Editor<any, any> {

        constructor(container: JQuery) {
            super(container, null);

            // add option accepts a key (id) value and display text value
            this.addOption("s", "starts with");
            this.addOption("%", "includes");
            this.addOption("|", "ends with");

            //this does not work
            this.set_value("s");

        }

Try using this.value = "S" instead of this.set_values

OMFG! I must have been stoned or braindead. I would swear it did not work when I tried it the first time.
WORKS NOW, THX @Estrusco


Latest md_events.  Plumbing for MD_MDOMAIN

Latest md_events - see commits for details.
Document consolidating external program interface notes.  WIP, good time to comment.
I realized that mod_md uses "domain" with two distinct meanings in the interfaces:

As the mdomain name - that is, the <MDomain> or <MDMember> name - also the certs CN.
As the name of the test domain being probed by the CA's validator - that is, some name from the SAN list to be applied to DNS (or HTTP01).

The second use is a problem for an external program that wants to find its configuration.  It's also somewhat confusing that the test domain name is logged, but not the mdomain.  If one has a lot of domains, it may require effort to get from the (automagically selected) test domain name to the mdomain...
This commit includes code that should pass MD_MDOMAIN as an environment variable to
the setup and teardown of dns-01, and provides the necessary value to the other challenges.
You'll need it when you implement external program responses for http-01...
I updated some of the log messages to include mdomain, but there are more to do.  But I'm out of time for now.
It is not easy for me to test this - since you have the test environment, would you?
In a MDChallengeDns01 program, the value of MD_DOMAIN should be the primary <MDomain> name, for every SAN tested (or both tests of a wildcard).

Wow, lots of work! You've been busy.
Scanning things through: I am not convinced that we actually need more than one tls-alpn-01 challenge certificate. I think if a CA chooses to sign certificates with key type X, the should also accept alpn challenge certificates of that key type.
Once a domain has been validated, the CA will not doc that again for the next certificate that we request. It suffices to have a challenge cert for the first key type, unless I am overlooking something here?

RE: the challenges - we both thought that only one would be enough.  We missed the fact that two certs are installed before the protocol switch.  And so sometimes the validation response would send the fallback cert of the "other" type.  See the other thread for details.
RE: "Busy" = Actually, I have another branch which is where I've really been busy.
Hope to be able to share later this week.  I'm sure you'll have suggestions for improvement, but I think you'll like.
Meantime, what you could do that I can't:

Decide how best to handle the envvar issue, including any httpd core change. #198
Handle getting the http-01 challenges to call out the events script when any domain in the certificate is not a local fhost.  (To allow events to push the challenge files.)  #189
Handle getting the mod_ssl changes merged - after double-checking my work. #200
Handle #187 - Excluding status from MDRequireHttps (I haven't looked at this, you know the code)

I think that's priority order (from my point of view).  While the mod_ssl changes are important, they only effect people who use tls-alpn-01 with dual certs.  The others are blocking progress on the events work.
Many thanks for your support.


Upgrade to 0.37.1 has bug: column dbs.allow_cvas does not exist

Hi
I just upgraded superset from 0.36.0 to 0.37.1 per instructions in docs. Now when I try to open any dashboard or slice, I get a 500 error.
Expected results
The dashboards to open.
Actual results
A 500 error, with this stacktrace:
Sorry, something went wrong
500 - Internal Server Error
Stacktrace
        Traceback (most recent call last):
  File "/home/superset/.env/superset/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1278, in _execute_context
    cursor, statement, parameters, context
  File "/home/superset/.env/superset/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 593, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.UndefinedColumn: column dbs.allow_cvas does not exist
LINE 1: ...low_csv_upload, dbs.allow_ctas AS dbs_allow_ctas, dbs.allow_...
                                                             ^
HINT:  Perhaps you meant to reference the column "dbs.allow_ctas".

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/superset/.env/superset/lib/python3.6/site-packages/flask/app.py", line 2447, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/superset/.env/superset/lib/python3.6/site-packages/flask/app.py", line 1952, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/superset/.env/superset/lib/python3.6/site-packages/flask/app.py", line 1821, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/superset/.env/superset/lib/python3.6/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/home/superset/.env/superset/lib/python3.6/site-packages/flask/app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/superset/.env/superset/lib/python3.6/site-packages/flask/app.py", line 1936, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/superset/.env/superset/lib/python3.6/site-packages/flask_appbuilder/security/decorators.py", line 109, in wraps
    return f(self, *args, **kwargs)
  File "/home/superset/.env/superset/lib/python3.6/site-packages/superset/views/core.py", line 1616, in dashboard
    for datasource, slices in datasources.items()
  File "/home/superset/.env/superset/lib/python3.6/site-packages/superset/views/core.py", line 1616, in <dictcomp>
    for datasource, slices in datasources.items()
  File "/home/superset/.env/superset/lib/python3.6/site-packages/superset/connectors/base/models.py", line 276, in data_for_slices
    data = self.data
  File "/home/superset/.env/superset/lib/python3.6/site-packages/superset/connectors/sqla/models.py", line 602, in data
    data_ = super().data
  File "/home/superset/.env/superset/lib/python3.6/site-packages/superset/connectors/base/models.py", line 244, in data
    "database": self.database.data,  # pylint: disable=no-member
  File "/home/superset/.env/superset/lib/python3.6/site-packages/sqlalchemy/orm/attributes.py", line 287, in __get__
    return self.impl.get(instance_state(instance), dict_)
  File "/home/superset/.env/superset/lib/python3.6/site-packages/sqlalchemy/orm/attributes.py", line 723, in get
    value = self.callable_(state, passive)
  File "/home/superset/.env/superset/lib/python3.6/site-packages/sqlalchemy/orm/strategies.py", line 760, in _load_for_state
    session, state, primary_key_identity, passive
  File "<string>", line 1, in <lambda>
  File "/home/superset/.env/superset/lib/python3.6/site-packages/sqlalchemy/orm/strategies.py", line 850, in _emit_lazyload
    session.query(self.mapper), primary_key_identity
  File "/home/superset/.env/superset/lib/python3.6/site-packages/sqlalchemy/ext/baked.py", line 616, in _load_on_pk_identity
    result = list(bq.for_session(self.session).params(**params))
  File "/home/superset/.env/superset/lib/python3.6/site-packages/sqlalchemy/ext/baked.py", line 445, in __iter__
    return q._execute_and_instances(context)
  File "/home/superset/.env/superset/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 3528, in _execute_and_instances
    result = conn.execute(querycontext.statement, self._params)
  File "/home/superset/.env/superset/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1014, in execute
    return meth(self, multiparams, params)
  File "/home/superset/.env/superset/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 298, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File "/home/superset/.env/superset/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1133, in _execute_clauseelement
    distilled_params,
  File "/home/superset/.env/superset/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1318, in _execute_context
    e, statement, parameters, cursor, context
  File "/home/superset/.env/superset/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1512, in _handle_dbapi_exception
    sqlalchemy_exception, with_traceback=exc_info[2], from_=e
  File "/home/superset/.env/superset/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 178, in raise_
    raise exception
  File "/home/superset/.env/superset/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1278, in _execute_context
    cursor, statement, parameters, context
  File "/home/superset/.env/superset/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 593, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedColumn) column dbs.allow_cvas does not exist
LINE 1: ...low_csv_upload, dbs.allow_ctas AS dbs_allow_ctas, dbs.allow_...
                                                             ^
HINT:  Perhaps you meant to reference the column "dbs.allow_ctas".

[SQL: SELECT dbs.created_on AS dbs_created_on, dbs.changed_on AS dbs_changed_on, dbs.id AS dbs_id, dbs.verbose_name AS dbs_verbose_name, dbs.database_name AS dbs_database_name, dbs.sqlalchemy_uri AS dbs_sqlalchemy_uri, dbs.password AS dbs_password, dbs.cache_timeout AS dbs_cache_timeout, dbs.select_as_create_table_as AS dbs_select_as_create_table_as, dbs.expose_in_sqllab AS dbs_expose_in_sqllab, dbs.allow_run_async AS dbs_allow_run_async, dbs.allow_csv_upload AS dbs_allow_csv_upload, dbs.allow_ctas AS dbs_allow_ctas, dbs.allow_cvas AS dbs_allow_cvas, dbs.allow_dml AS dbs_allow_dml, dbs.force_ctas_schema AS dbs_force_ctas_schema, dbs.allow_multi_schema_metadata_fetch AS dbs_allow_multi_schema_metadata_fetch, dbs.extra AS dbs_extra, dbs.encrypted_extra AS dbs_encrypted_extra, dbs.impersonate_user AS dbs_impersonate_user, dbs.server_cert AS dbs_server_cert, dbs.created_by_fk AS dbs_created_by_fk, dbs.changed_by_fk AS dbs_changed_by_fk
FROM dbs
WHERE dbs.id = %(param_1)s]
[parameters: {'param_1': 2}]
(Background on this error at: http://sqlalche.me/e/13/f405)

How to reproduce the bug

Install version 0.36.0
Setup some charts and dashboards
Upgrade to version 0.37.0 using commands written in docs:

pip install apache-superset --upgrade
superset db upgrade
superset init

Go to any dashboard/slice.

Environment
(please complete the following information):

superset version: Superset 0.37.1
python version: Python 3.6.11

@sazary Hi, guy, must run database migration script:
$ superset db upgrade

Hi
I did it, as I've mentioned in steps to reproduce

From: Yongjie Zhao<EMAIL_ADDRESS>Sent: Sunday, September 27, 2020 10:18:19 AM
To: apache/incubator-superset<EMAIL_ADDRESS>Cc: Soroosh Azary Marhabi<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [apache/incubator-superset] Upgrade to 0.37.1 has bug: column dbs.allow_cvas does not exist (#11080)
@sazaryhttps://github.com/sazary Hi, guy, must run database migration script:
$ superset db upgrade
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/apache/incubator-superset/issues/11080#issuecomment-699594284, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAJ6MLIEBBI2NTBMZC63PBLSH3N3HANCNFSM4R25DEMA.

Can you post the output from superset db upgrade ? Also are you using docker-compose or some other install method?

sorry I don't have the output now, but as far as I could see there wasn't any error in it.
I've installed & upgraded it using pip

I am having the same issue as well, when using 0.37.2 release, docker-compose up --build

Steps to reproduce:

Check out 0.37.2 tag
docker-compose up --build --force-recreate
< < wait for compose >>
Shell into superset-app, run superset db upgrade and I get this error message.

superset@5c7e780d5110:/app$ superset db upgrade
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 567, in _build_master
    ws.require(__requires__)
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 884, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 775, in resolve
    raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (pyarrow 0.17.0 (/usr/local/lib/python3.7/site-packages), Requirement.parse('pyarrow<1.1,>=1.0.1'), {'apache-superset'})

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/superset", line 33, in <module>
    sys.exit(load_entry_point('apache-superset', 'console_scripts', 'superset')())
  File "/usr/local/lib/python3.7/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/flask/cli.py", line 586, in main
    return super(FlaskGroup, self).main(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.7/site-packages/click/core.py", line 1254, in invoke
    cmd_name, cmd, args = self.resolve_command(ctx, args)
  File "/usr/local/lib/python3.7/site-packages/click/core.py", line 1297, in resolve_command
    cmd = self.get_command(ctx, cmd_name)
  File "/usr/local/lib/python3.7/site-packages/flask/cli.py", line 527, in get_command
    self._load_plugin_commands()
  File "/usr/local/lib/python3.7/site-packages/flask/cli.py", line 517, in _load_plugin_commands
    import pkg_resources
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3238, in <module>
    @_call_aside
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3222, in _call_aside
    f(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3251, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 569, in _build_master
    return cls._build_from_requirements(__requires__)
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 582, in _build_from_requirements
    dists = ws.resolve(reqs, Environment())
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 770, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'pyarrow<1.1,>=1.0.1' distribution was not found and is required by apache-superset
superset@5c7e780d5110:/app$

@nh43de , looks like a different error

Steps to reproduce:

Check out 0.37.2 tag
docker-compose up --build --force-recreate
< < wait for compose >>
Shell into superset-app, run superset db upgrade and I get this error message.

(note: this problem does not happen in main/master branch, everything behaves normally)
superset@5c7e780d5110:/app$ superset db upgrade
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 567, in _build_master
    ws.require(__requires__)
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 884, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 775, in resolve
    raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (pyarrow 0.17.0 (/usr/local/lib/python3.7/site-packages), Requirement.parse('pyarrow<1.1,>=1.0.1'), {'apache-superset'})

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/superset", line 33, in <module>
    sys.exit(load_entry_point('apache-superset', 'console_scripts', 'superset')())
  File "/usr/local/lib/python3.7/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/flask/cli.py", line 586, in main
    return super(FlaskGroup, self).main(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.7/site-packages/click/core.py", line 1254, in invoke
    cmd_name, cmd, args = self.resolve_command(ctx, args)
  File "/usr/local/lib/python3.7/site-packages/click/core.py", line 1297, in resolve_command
    cmd = self.get_command(ctx, cmd_name)
  File "/usr/local/lib/python3.7/site-packages/flask/cli.py", line 527, in get_command
    self._load_plugin_commands()
  File "/usr/local/lib/python3.7/site-packages/flask/cli.py", line 517, in _load_plugin_commands
    import pkg_resources
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3238, in <module>
    @_call_aside
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3222, in _call_aside
    f(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3251, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 569, in _build_master
    return cls._build_from_requirements(__requires__)
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 582, in _build_from_requirements
    dists = ws.resolve(reqs, Environment())
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 770, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'pyarrow<1.1,>=1.0.1' distribution was not found and is required by apache-superset
superset@5c7e780d5110:/app$

I'm too.  Have you solved the problem?

@keehl1213 no i just gave up

Any update

Since this problem doesn't happen in the most recent released versions of superset, and this is a bug from a 0.x version, i'm going to close it out

I'm seeing this problem after upgrading to v1.4.2

I have just upgraded to 1.4.2 seeing a problem.
superset_app            | [SQL: SELECT dbs.uuid AS dbs_uuid, dbs.created_on AS dbs_created_on, dbs.changed_on AS dbs_changed_on, dbs.id AS dbs_id, dbs.verbose_name AS dbs_verbose_name, dbs.database_name AS dbs_database_name, dbs.sqlalchemy_uri AS dbs_sqlalchemy_uri, dbs.password AS dbs_password, dbs.cache_timeout AS dbs_cache_timeout, dbs.select_as_create_table_as AS dbs_select_as_create_table_as, dbs.expose_in_sqllab AS dbs_expose_in_sqllab, dbs.configuration_method AS dbs_configuration_method, dbs.allow_run_async AS dbs_allow_run_async, dbs.allow_csv_upload AS dbs_allow_csv_upload, dbs.allow_ctas AS dbs_allow_ctas, dbs.allow_cvas AS dbs_allow_cvas, dbs.allow_dml AS dbs_allow_dml, dbs.force_ctas_schema AS dbs_force_ctas_schema, dbs.allow_multi_schema_metadata_fetch AS dbs_allow_multi_schema_metadata_fetch, dbs.extra AS dbs_extra, dbs.encrypted_extra AS dbs_encrypted_extra, dbs.impersonate_user AS dbs_impersonate_user, dbs.server_cert AS dbs_server_cert, dbs.created_by_fk AS dbs_created_by_fk, dbs.changed_by_fk AS dbs_changed_by_fk
superset_app            | FROM dbs
superset_app            | WHERE dbs.id = %(param_1)s]
superset_app            | [parameters: {'param_1': 1}]
superset_app            | (Background on this error at: http://sqlalche.me/e/13/f405)
superset_app            | Traceback (most recent call last):
superset_app            |   File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1276, in execute_context
superset_app            |     self.dialect.do_execute(
superset_app            |   File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
superset_app            |     cursor.execute(statement, parameters)
superset_app            | psycopg2.errors.UndefinedColumn: column dbs.allow_csv_upload does not exist
superset_app            | LINE 1: ...thod, dbs.allow_run_async AS dbs_allow_run_async, dbs.allow...
superset_app            |                                                              ^
superset_app            |
superset_app            |
superset_app            | The above exception was the direct cause of the following exception:
superset_app            |
superset_app            | Traceback (most recent call last):
superset_app            |   File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1950, in full_dispatch_request
superset_app            |     rv = self.dispatch_request()
superset_app            |   File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1936, in dispatch_request
superset_app            |     return self.view_functionsrule.endpoint
superset_app            |   File "/usr/local/lib/python3.8/site-packages/flask_appbuilder/security/decorators.py", line 104, in wraps
superset_app            |     return f(self, *args, **kwargs)
superset_app            |   File "/app/superset/views/base_api.py", line 85, in wraps
superset_app            |     raise ex
superset_app            |   File "/app/superset/views/base_api.py", line 82, in wraps
superset_app            |     duration, response = time_function(f, self, *args, **kwargs)
superset_app            |   File "/app/superset/utils/core.py", line 1471, in time_function
superset_app            |     response = func(*args, **kwargs)
superset_app            |   File "/app/superset/utils/log.py", line 242, in wrapper
superset_app            |     value = f(*args, **kwargs)
superset_app            |   File "/app/superset/charts/api.py", line 736, in data
superset_app            |     return self.get_data_response(command)
superset_app            |   File "/app/superset/charts/api.py", line 547, in get_data_response
superset_app            |     result = command.run(force_cached=force_cached)
superset_app            |   File "/app/superset/charts/commands/data.py", line 50, in run
superset_app            |     payload = self.query_context.get_payload(
superset_app            |   File "/app/superset/common/query_context.py", line 305, in get_payload
superset_app            |     query_results = [
superset_app            |   File "/app/superset/common/query_context.py", line 306, in
superset_app            |     get_query_results(
superset_app            |   File "/app/superset/common/query_actions.py", line 186, in get_query_results
superset_app            |     return result_func(query_context, query_obj, force_cached)
superset_app            |   File "/app/superset/common/query_actions.py", line 98, in get_full
superset_app            |     payload = query_context.get_df_payload(query_obj, force_cached=force_cached)
superset_app            |   File "/app/superset/common/query_context.py", line 468, in get_df_payload
superset_app            |     query_result = self.get_query_result(query_obj)
superset_app            |   File "/app/superset/common/query_context.py", line 254, in get_query_result
superset_app            |     result = self.datasource.query(query_object.to_dict())
superset_app            |   File "/app/superset/connectors/sqla/models.py", line 1472, in query
superset_app            |     query_str_ext = self.get_query_str_extended(query_obj)
superset_app            |   File "/app/superset/connectors/sqla/models.py", line 764, in get_query_str_extended
superset_app            |     sqlaq = self.get_sqla_query(**query_obj)
superset_app            |   File "/app/superset/connectors/sqla/models.py", line 1003, in get_sqla_query
superset_app            |     template_processor = self.get_template_processor(**template_kwargs)
superset_app            |   File "/app/superset/connectors/sqla/models.py", line 761, in get_template_processor
superset_app            |     return get_template_processor(table=self, database=self.database, **kwargs)
superset_app            |   File "/usr/local/lib/python3.8/site-packages/sqlalchemy/orm/attributes.py", line 294, in get
superset_app            |     return self.impl.get(instance_state(instance), dict)
superset_app            |   File "/usr/local/lib/python3.8/site-packages/sqlalchemy/orm/attributes.py", line 730, in get
superset_app            |     value = self.callable(state, passive)
superset_app            |   File "/usr/local/lib/python3.8/site-packages/sqlalchemy/orm/strategies.py", line 759, in _load_for_state
superset_app            |     return self._emit_lazyload(
superset_app            |   File "", line 1, in
superset_app            |   File "/usr/local/lib/python3.8/site-packages/sqlalchemy/orm/strategies.py", line 847, in _emit_lazyload
superset_app            |     q(session)
superset_app            |   File "/usr/local/lib/python3.8/site-packages/sqlalchemy/ext/baked.py", line 615, in _load_on_pk_identity
superset_app            |     result = list(bq.for_session(self.session).params(**params))
superset_app            |   File "/usr/local/lib/python3.8/site-packages/sqlalchemy/ext/baked.py", line 444, in iter
superset_app            |     return q._execute_and_instances(context)
superset_app            |   File "/usr/local/lib/python3.8/site-packages/sqlalchemy/orm/query.py", line 3560, in _execute_and_instances
superset_app            |     result = conn.execute(querycontext.statement, self._params)
superset_app            |   File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1011, in execute
superset_app            |     return meth(self, multiparams, params)
superset_app            |   File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 298, in _execute_on_connection
superset_app            |     return connection._execute_clauseelement(self, multiparams, params)
superset_app            |   File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1124, in _execute_clauseelement
superset_app            |     ret = self._execute_context(
superset_app            |   File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1316, in _execute_context
superset_app            |     self.handle_dbapi_exception(
superset_app            |   File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1510, in handle_dbapi_exception
superset_app            |     util.raise(
superset_app            |   File "/usr/local/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 182, in raise
superset_app            |     raise exception
superset_app            |   File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1276, in execute_context
superset_app            |     self.dialect.do_execute(
superset_app            |   File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
superset_app            |     cursor.execute(statement, parameters)
superset_app            | sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedColumn) column dbs.allow_csv_upload does not exist
superset_app            | LINE 1: ...thod, dbs.allow_run_async AS dbs_allow_run_async, dbs.allow...
superset_app            |                                                              ^
superset_app            |

Since this problem doesn't happen in the most recent released versions of superset, and this is a bug from a 0.x version, i'm going to close it out

still i am getting it in 1.4.1 and 1.4.2 version, same issue how to fix it ?

Still facinf same issue in 1.5.2, 2.0.0, 2.0.1. Must be something with the settings, but what?


[5.7] Validate client mime/extension for UploadedFile

Foreword
Since submitting this PR, I've dug a little deeper and found my issue residing in the MimeTypeGuesser class. A description below.
Description
For my application, I have uploaded an SVG file, image.svg. DDing the image from my request returns this UploadedFile:

There are two ways that I can validate that this is an svg file; file|mimes:svg or file|mimetypes:image/svg+xml.
The former, calls validateMimes in the ValidatesAttributes trait.
https://github.com/laravel/framework/blob/70a72fcac9d8852fc1a4ce11eb47842774c11876/src/Illuminate/Validation/Concerns/ValidatesAttributes.php#L1080-L1091
In this case, $value is an instance of UploadedFile, and the method guessExtension() is called. To determine the extension, it also has to guess the mimetype with getMimeType().
https://github.com/symfony/http-foundation/blob/0960a2a60fc84513a2a8e215e62034b369a0ac72/File/File.php#L43-L80
The MimeTypeGuesser instance iterates over a number of guessers and returns the first non-null result. To test the output, I've DDed the result of each guesser:

The FileinfoMimeTypeGuesser has incorrectly guessed the mimetype as "text/plain", which is ruining my validation. I'm currently looking into why this is happening, and will update this PR with my findings if it's relevant to Laravel (though it likely is not)
What has been changed
~validateMimes() has been updated to follow a similar convention to shouldBlockPhpUpload() for checking file extensions. validateMimetypes() now checks if the file is an instance of UploadedFile, in which case it will use the client mimetype for validation.~
~Currently, mimetypes are guessed through Symfony's MimeTypeGuesser. This always returns "text/plain" on temporary file paths without a file extension.~

This needs full description of what is changing and why. What bug is being fixed? What potential breaking changes are there, etc.

Sorry for the lack of description. I've put in a bit more effort to flesh this out, and in doing so, found the issue residing in the FileinfoMimeTypeGuesser component of Symfony. I've updated my description to explain how I arrived at this, though at this point, the issue/PR is no longer relevant to the Laravel codebase.


Update upstream Knative eventing operator to 0.12.0 - do not merge

DO NOT MERGE.
Verification for https://github.com/operator-framework/community-operators/pull/1192 with custom images
Signed-off-by: Ali Ok<EMAIL_ADDRESS>Thanks submitting your Operator. Please check below list before you create your Pull Request.

Flat operator directory structure is obsolete from 23-rd of October 2019, only nested directory structure will be accepted.

New Submissions

[ ] Has you operator nested directory structure?
[ ] Have you selected the Project Community Operator Submissions in your PR on the right-hand menu bar?
[ ] Are you familiar with our contribution guidelines?
[ ] Have you packaged and deployed your Operator for Operator Framework?

[ ] Have you tested your Operator in all supported installation modes?
[ ] Is your submission signed?

Updates to existing Operators

[ ] Is your new CSV pointing to the previous version with the replaces property?
[ ] Is your new CSV referenced in the appropriate channel defined in the package.yaml ?
[ ] Have you tested an update to your Operator when deployed via OLM?
[ ] Is your submission signed?

Your submission should not

[ ] Modify more than one operator
[ ] Modify an Operator you don't own
[ ] Rename an operator - please remove and add with a different name instead
[ ] Submit operators to both upstream-community-operators and community-operators at once
[ ] Modify any files outside the above mentioned folders
[ ] Contain more than one commit. Please squash your commits.

Operator Description must contain (in order)

[ ] Description about the managed Application and where to find more information
[ ] Features and capabilities of your Operator and how to use it
[ ] Any manual steps about potential pre-requisites for using your Operator

Operator Metadata should contain

[ ] Human readable name and 1-liner description about your Operator
[ ] Valid category name1
[ ] One of the pre-defined capability levels2
[ ] Links to the maintainer, source code and documentation
[ ] Example templates for all Custom Resource Definitions intended to be used
[ ] A quadratic logo

Remember that you can preview your CSV here.
--
1 If you feel your Operator does not fit any of the pre-defined categories, file a PR against this repo and explain your need
2 For more information see here

Just created this PR to see if my changes at https://github.com/knative/eventing-operator/pull/100 fixes the problem at https://github.com/operator-framework/community-operators/pull/1192


Wrong comment

Hi everyone, everything fine?
Browsing through the documentation, some code comments on the "https://fresh.deno.dev/docs/examples/creating-a-crud-api" page are inconsistent with the page structure presented by the beginning of the explanation. For example, the comment "//routes/api/index.ts" should be //routes/api/users/index.ts (given the structure shown).
I'm learning the framework and maybe some newbies might end up getting confused.

Thanks for pointing this out @vit0rBianchini. I have a fix up for review now.


tests: only adjust SysProcAttr on linux

Fixes compilation and local test runs on darwin.
Signed-off-by: Alfred Landrum<EMAIL_ADDRESS>

so this one can be close now.

Sorry I missed this PR. #1584 does the same. Closing here.


CLI Install issue

Hi Erik,
Not exactly sure if there is something I'm overlooking but I followed the instructions outlined and for some reason when I move the CLI tools to "/usr/bin/local/sift" the sift commands aren't available. I've also tried compiling from source and nodejs is giving me errors when attempting to run the sift-cli.js
SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:374:25)
at Object.Module._extensions..js (module.js:417:10)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Function.Module.runMain (module.js:442:10)
at startup (node.js:136:18)
at node.js:966:3
Any clue what exactly I'm doing wrong or indicator on how to resolve it?

You have to make sure that your path variable includes /usr/local/bin.

On Jun 19, 2017, at 09:18, dnice77<EMAIL_ADDRESS>wrote:
Hi Erik,
Not exactly sure if there is something I'm overlooking but I followed the instructions outlined and for some reason when I move the CLI tools to "/usr/bin/local/sift" the sift commands aren't available. I've also tried compiling from source and nodejs is giving me errors when attempting to run the sift-cli.js
SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:374:25)
at Object.Module._extensions..js (module.js:417:10)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Function.Module.runMain (module.js:442:10)
at startup (node.js:136:18)
at node.js:966:3
Any clue what exactly I'm doing wrong or indicator on how to resolve it?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

I ran this command export PATH=$PATH:/usr/local/bin/ still nothing...I gotta be missing something.

Does it work if you do sudo /usr/local/bin/sift --help
Sent from my iPhone

On Jun 19, 2017, at 10:19, dnice77<EMAIL_ADDRESS>wrote:
I ran this command export PATH=$PATH:/usr/local/bin/ still nothing...I gotta be missing something.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

I moved the sift-cli-linux to /usr/local/bin/sift and ran your command. output is "command not found"

The move must not have been successful, can you walk me through all your steps?
Sent from my iPhone

On Jun 19, 2017, at 10:57, dnice77<EMAIL_ADDRESS>wrote:
I moved the sift-cli-linux to /usr/local/bin/sift and ran your command. output is "command not found"
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

Let me say that this was a clean install from an 16.04 VM...
I literally followed the instructions verbatim:
Go to the Latest Releases
Download all the release files
sift-cli-linux
sift-cli-linux.sha256.asc
Import the PGP Key - gpg --keyserver pgp.mit.edu --recv-keys 22598A94
Validate the signature gpg --verify sift-cli-linux.sha256.asc
Validate SHA256 signature sha -a 256 -c sift-cli-linux.sha256.asc
You'll see an error about improperly formatted lines, it can be ignored so long as you see sift-cli-linux: OK before it
Move the file to mv sift-cli-linux /usr/local/bin/sift

Just to see if something was in fact done wrong on my end I replicated the instructions on a legacy build of SIFT and same problem.

What happens when you run ...
'ls -la /usr/local/bin/sift'

It says my local account owns it...do I need to chmod it?

chmod 755 it
Sent from my iPhone

On Jun 19, 2017, at 19:42, dnice77<EMAIL_ADDRESS>wrote:
It says my local account owns it...do I need to chmod it?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

  Might want to add this to the instructions so you don't waste your time helping others with this issue. Thanks for seeing it through man

I'll add it to the readme.

Glad it's fixed


Add TryFrom to convert from Varargs to tuples

This PR is stacked on varargs_gets branch. See #892 for details on some of the commits included in this PR.
Feature
Dirty syntax to convert to tuples. Implement via varargs_into_tuple!() macro.  This makes manual binding easier to write than ever before.
Can be converted to tuples up to 12 in length. This is the same length supported by standard library.
fn call(&self, _this: TInstance<'_, Foo>, args: Varargs<'_>) -> Variant {

    // Convert from Varargs to tuples.
    let (a, b, c): (i64, i64, i64) = args.try_into().unwrap();

    let ret = (a * b - c);
    ret.to_variant()
}

Compatibility
Since this PR only adds an API, there are no compatibility issues.

Btw, the Varargs API as it exists now in godot-rust is a bit strange. It is simultaneously a collection and iterator.
I think the proper way would have been implementing IntoIterator, which could reuse the slice iterator. This would also get rid of storing idx as the iterator state inside Varargs.
That's probably something we can adjust for v0.11.

Maybe a general question, what was your use case for this feature?

My use case is refactoring of the #[methods] macro. Since macros will generate manual binding code, improve manual binding will improve macros.
However, this is a failure because it lacks a bit of flexibility. :sweat_smile: Nevertheless, the PR was created because it is useful.

a lot of this might become entirely obsolete with GDExtension 🤔

Don't worry, the types passed as arguments are the same. See header (GDNativeVariantPtr is void*).

This doesn't support match patterns (for different number of arguments), right? I guess for that we could still use slice patterns, even though that means Variant elements:
match varargs.as_slice() {
    [a, b]            => ...,
    [first, .., last] => ...,
    _                 => ...,
}

Interesting, but a, b, first and last are still &Variant types, so more type conversion code is needed.

My use case is refactoring of the #[methods] macro. Since macros will generate manual binding code, improve manual binding will improve macros.

I see, but that on its own is not a reason to make that a public and documented API. If it's only used by the proc-macro, it can still be #[doc(hidden)], no?
In other words: why does a user need this, when there is already the safer ClassBuilder::method() API?

Don't worry, the types passed as arguments are the same. See header (GDNativeVariantPtr is void*).

Thanks for checking! However, both being void* doesn't mean they refer to the same types -- it literally means "pointer to anything" 🙂
So, we would need to check that. What I meant is that with the current bottom-up approach toward GDExtension, I'm not sure yet which parts of the code can be kept (and at what cost). A lot of stuff has accumulated over the years, and it's an opportunity to strip down rarely used legacy code, also in light of bigger safety refactorings. So... time will tell, don't be discouraged if not everything will be taken over to GDExtension 😉

In other words: why does a user need this, when there is already the safer ClassBuilder::method() API?

This PR is replaces the StaticArgs struct, but the Method trait can still be used. No unsafe code is needed.

Note that this PR now depends on #892!

Then I'd say we sort out #892 first, which would make this PR significantly smaller to review.

Rebased on master, completed the PR and integrated my change suggestions.
Thanks again for your work! 👍
bors r+


Implement Writer and Reader for heapless::Vec (and other heapless structs)

I am working on a no_std embedded comms stack which talks to devices running C applications. The stack uses heapless::Vecs to handle the byte streams being sent and received, and I would like to use bincode to perform the conversion to / from Rust structures.
Right now, in order to do this I have to create a wrapper type around the heapless::Vec in order to implement bincode's Writer and Reader traits. It seems like this is a common enough pairing that it would make sense to have these traits implemented for heapless::Vec by default, or at least available through a feature, rather than having to re-implement for each new project working in this space.
I am inclined to think that the implementation should be included within bincode, possibly alongside an implementation for std::Vec too, however I have created an equivalent issue on the heapless repo in case the community thinks that it would make more sense for the implementation to live there.

Apparently there's precedent for the implementation to live in the serialiser's crate

I've modified the title of this issue to be more general, as I want to also encompass the option of encode_into_vec and decode_from_vec functions as an alternative to implementing the Reader and Writer traits on heapless::Vec. This is how postcard does it.
An encode_into_allocvec and decode_from_allocvec could also be implemented to support the standard Vec.

See also https://github.com/bincode-org/bincode/issues/643
One solution is to mark your field with #[bincode(with_serde)], which will fall back to the serde implementation.
We'd rather not have crate-specific implementations in bincode if we can help it

This isn't for encoding / decoding a field containing a vec, but rather to populate a vec with the encoded data (or to take a vec containing a byte stream and decode it into the corresponding data structure).
Currently bincode only works with slices or its own Reader and Writer traits, so in order to work with Vecs, (handy when the length of the byte stream is variable), I have to wrap the Vec so that I can implement the Writer trait on it.
As a side note: the current format of the Reader trait is such that I would have to do an unnecessary copy of the data, so I end with an asymmetric implementation where I use encode_into_writer for encoding and decode_from_slice (passing in vec.as_slice) for reading.
I have to implement this wrapper in every project I use bincode for, as using a heapless::Vec to hold the data is much more ergonomic than dealing with a bare array buffer where I must keep track of the byte stream length manually.
This seems like such a common pairing that it would make sense to have the option to deal with byte streams packaged as Vecs rather than byte slices.
I would also argue that this barely qualifies as a crate-specific implementation: alloc::Vec is part of the standard library, and heapless::Vec is simply the most widely used no_std implementation of a standard Vec. To be honest, the main reason I've been going on about heapless::Vec so much is that I work in the embedded space most of the time and most of my projects are no_std.


Testing functionality

This is basic configuration for integration and unit testing.
Note:

Test themselves are not build yet. This is just a setup.
To run unit tests add to .travis.yml under script
python -m unittest tests.unit.test_{name_of_the_file}
To run integration tests
python -m unittest tests.integration.test_{name_of_the_file}
Always make sure to update dependencies in requirments.txt

Sorry for spaghetti commits.

Reviewed pull request. Travis CI was a good idea. Let's make the tests later. Merging with master.
Thanks you