Connectors

Last tests failed with ERROR: build step 10 "gcr.io/cloud-builders/docker" failed: context deadline exceeded (step 10 is the one actually running the specs)
that cryptic context deadline exceeded seems like some Prometheus timeout, let's wait for the next run now 🤞

This time test completed, but we have quite a few failures:
Step #10: Failures:
Step #10:
Step #10:   1) UserMigration exports and imports a user with raster overviews because exporting skips them
Step #10:      Failure/Error: expect(import.state).to eq(Carto::UserMigrationImport::STATE_COMPLETE)
Step #10:
Step #10:        expected: "complete"
Step #10:             got: "failure"
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_api_key_spec.rb:43:in `block (2 levels) in <top (required)>'
Step #10:
Step #10:   2) UserMigration #run_import does not modify database_host with dry
Step #10:      Failure/Error: import.state.should eq 'complete'
Step #10:
Step #10:        expected: "complete"
Step #10:             got: "failure"
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_api_key_spec.rb:353:in `block (2 levels) in <top (required)>'
Step #10:
Step #10:   3) UserMigration legacy functions skips importing legacy functions using fixture
Step #10:      Failure/Error: user.in_database.execute("SELECT prosrc FROM pg_proc WHERE proname = 'increment'").should eq 0
Step #10:      Sequel::DatabaseConnectionError:
Step #10:        PG::ConnectionBad: FATAL:  role "test_cartodb_user_1af9e927-7d81-43d0-9188-bdae65aebb37" does not exist
Step #10:      # ./spec/models/carto/user_migration_api_key_spec.rb:122:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   4) UserMigration legacy functions imports functions and tables that are not on the legacy list using fixture
Step #10:      Failure/Error: user.in_database.execute("SELECT prosrc FROM pg_proc WHERE proname = 'st_text'").should eq 0
Step #10:      Sequel::DatabaseConnectionError:
Step #10:        PG::ConnectionBad: FATAL:  role "test_cartodb_user_3060d986-305c-455e-bc6f-7c3e639bac3f" does not exist
Step #10:      # ./spec/models/carto/user_migration_api_key_spec.rb:161:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   5) UserMigration legacy functions with organization should not import acl over deprecated functions
Step #10:      Failure/Error: import.state.should eq 'complete'
Step #10:
Step #10:        expected: "complete"
Step #10:             got: "failure"
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_api_key_spec.rb:199:in `block (4 levels) in <top (required)>'
Step #10:
Step #10:   6) UserMigration with organization exports orgs with datasets without physical table if metadata export is requested (see #13721)
Step #10:      Failure/Error: expect(export.state).to eq(Carto::UserMigrationExport::STATE_COMPLETE)
Step #10:
Step #10:        expected: "complete"
Step #10:             got: "failure"
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_api_key_spec.rb:321:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   7) UserMigration with organization it should behave like migrating metadata exports and reimports an organization with metadata
Step #10:      Failure/Error: export.state.should eq Carto::UserMigrationExport::STATE_COMPLETE
Step #10:
Step #10:        expected: "complete"
Step #10:             got: "failure"
Step #10:
Step #10:        (compared using ==)
Step #10:      Shared Example Group: "migrating metadata" called from ./spec/models/carto/user_migration_api_key_spec.rb:304
Step #10:      # ./spec/models/carto/user_migration_api_key_spec.rb:264:in `block (4 levels) in <top (required)>'
Step #10:
Step #10:   8) UserMigration api keys import and exports api keys are in redis and db roles are created
Step #10:      Failure/Error: expect(export.state).to eq(Carto::UserMigrationExport::STATE_COMPLETE)
Step #10:
Step #10:        expected: "complete"
Step #10:             got: "failure"
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_api_key_spec.rb:405:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   9) UserMigration api keys import and exports keeps roles for oauth api keys with schemas grants and you can drop tables after migration
Step #10:      Failure/Error: expect(export.state).to eq(Carto::UserMigrationExport::STATE_COMPLETE)
Step #10:
Step #10:        expected: "complete"
Step #10:             got: "failure"
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_api_key_spec.rb:476:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   10) UserMigration api keys import and exports api keys keeps the grants and you can drop tables after migration
Step #10:      Failure/Error: expect(export.state).to eq(Carto::UserMigrationExport::STATE_COMPLETE)
Step #10:
Step #10:        expected: "complete"
Step #10:             got: "failure"
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_api_key_spec.rb:557:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   11) UserMigration export_data being false exports and imports user with viz
Step #10:      Failure/Error: expect(export.state).to eq(Carto::UserMigrationExport::STATE_COMPLETE)
Step #10:
Step #10:        expected: "complete"
Step #10:             got: "failure"
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_base_spec.rb:64:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   12) UserMigration export_data being false export and imports keeping import when import visualizations fails
Step #10:      Failure/Error: import = Carto::UserMigrationImport.create!(
Step #10:      ActiveRecord::RecordInvalid:
Step #10:        Validation failed: Exported file can't be blank, Json file can't be blank
Step #10:      # ./spec/models/carto/user_migration_base_spec.rb:104:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   13) UserMigration export_data being false does not remove database when visuaization import fails
Step #10:      Failure/Error: expect(export.state).to eq(Carto::UserMigrationExport::STATE_COMPLETE)
Step #10:
Step #10:        expected: "complete"
Step #10:             got: "failure"
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_base_spec.rb:132:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   14) UserMigration export_data being false exports and imports a user with a data import with two tables
Step #10:      Failure/Error: expect(export.state).to eq(Carto::UserMigrationExport::STATE_COMPLETE)
Step #10:
Step #10:        expected: "complete"
Step #10:             got: "failure"
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_base_spec.rb:246:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   15) UserMigration export_data being false does not export duplicated vizs
Step #10:      Failure/Error: expect(export.state).to eq(Carto::UserMigrationExport::STATE_COMPLETE)
Step #10:
Step #10:        expected: "complete"
Step #10:             got: "failure"
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_base_spec.rb:295:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   16) UserMigration export_data being false exports users with datasets without a physical table if metadata export is requested (see #13721)
Step #10:      Failure/Error: expect(export.state).to eq(Carto::UserMigrationExport::STATE_COMPLETE)
Step #10:
Step #10:        expected: "complete"
Step #10:             got: "failure"
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_base_spec.rb:373:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   17) UserMigration export_data being false does export users with a canonical viz without user table if metadata export is requested (see #12588)
Step #10:      Failure/Error: expect(export.state).to eq(Carto::UserMigrationExport::STATE_COMPLETE)
Step #10:
Step #10:        expected: "complete"
Step #10:             got: "failure"
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_base_spec.rb:396:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   18) UserMigration export_data being false with orgs exports and imports org with users with viz
Step #10:      Failure/Error: expect(export.state).to eq(Carto::UserMigrationExport::STATE_COMPLETE)
Step #10:
Step #10:        expected: "complete"
Step #10:             got: "failure"
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_base_spec.rb:166:in `block (4 levels) in <top (required)>'
Step #10:
Step #10:   19) UserMigration export_data being false with orgs does not drop database if visualizations import fails
Step #10:      Failure/Error: expect(export.state).to eq(Carto::UserMigrationExport::STATE_COMPLETE)
Step #10:
Step #10:        expected: "complete"
Step #10:             got: "failure"
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_base_spec.rb:199:in `block (4 levels) in <top (required)>'
Step #10:
Step #10:   20) UserMigration it should behave like migrating metadata exports and reimports an organization with metadata
Step #10:      Failure/Error: @table1 = create_table(user_id: @carto_org_user_1.id)
Step #10:      NoMethodError:
Step #10:        undefined method `id' for nil:NilClass
Step #10:      Shared Example Group: "migrating metadata" called from ./spec/models/carto/user_migration_rollback_spec.rb:17
Step #10:      # ./spec/models/carto/user_migration_api_key_spec.rb:244:in `block (4 levels) in <top (required)>'
Step #10:
Step #10:   21) UserMigration it should behave like migrating metadata exports and reimports an organization without metadata
Step #10:      Failure/Error: @table1 = create_table(user_id: @carto_org_user_1.id)
Step #10:      NoMethodError:
Step #10:        undefined method `id' for nil:NilClass
Step #10:      Shared Example Group: "migrating metadata" called from ./spec/models/carto/user_migration_rollback_spec.rb:18
Step #10:      # ./spec/models/carto/user_migration_api_key_spec.rb:244:in `block (4 levels) in <top (required)>'
Step #10:
Step #10:   22) UserMigration failing user imports should rollback import failing in import_metadata should rollback
Step #10:      Failure/Error: import.run_import.should eq true
Step #10:
Step #10:        expected: true
Step #10:             got: false
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_rollback_spec.rb:47:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   23) UserMigration failing user imports should rollback import failing in JobImport#run!
Step #10:      Failure/Error: import.run_import.should eq true
Step #10:
Step #10:        expected: true
Step #10:             got: false
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_rollback_spec.rb:59:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   24) UserMigration failing user imports should rollback import failing creating user database and roles
Step #10:      Failure/Error: import.run_import.should eq true
Step #10:
Step #10:        expected: true
Step #10:             got: false
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_rollback_spec.rb:71:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   25) UserMigration failing user imports should rollback import failing importing visualizations
Step #10:      Failure/Error: import.run_import.should eq true
Step #10:
Step #10:        expected: true
Step #10:             got: false
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_rollback_spec.rb:83:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   26) UserMigration failing user imports should rollback fails importing an already existing user
Step #10:      Failure/Error: import.run_import.should eq true
Step #10:
Step #10:        expected: true
Step #10:             got: false
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_rollback_spec.rb:87:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   27) UserMigration failing user imports should rollback should continue with rollback if data import rollback fails
Step #10:      Failure/Error: import.run_import.should eq true
Step #10:
Step #10:        expected: true
Step #10:             got: false
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_rollback_spec.rb:97:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   28) UserMigration failing user imports should rollback should not remove user if already exists while importing
Step #10:      Failure/Error: import.run_import.should eq true
Step #10:
Step #10:        expected: true
Step #10:             got: false
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_rollback_spec.rb:101:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   29) UserMigration failing user imports should rollback import record should exist if import_data fails and rollbacks
Step #10:      Failure/Error: Carto::UserMigrationImport.where(id: imp.id).should_not be_empty
Step #10:        expected empty? to return false, got true
Step #10:      # ./spec/models/carto/user_migration_rollback_spec.rb:113:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   30) UserMigration failing organization organizations should rollback import failing in import_metadata should rollback
Step #10:      Failure/Error: organization_import.reload.state.should eq 'failure'
Step #10:      ActiveRecord::RecordNotFound:
Step #10:        Couldn't find Carto::UserMigrationImport without an ID
Step #10:      # ./spec/models/carto/user_migration_rollback_spec.rb:173:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   31) UserMigration failing organization organizations should rollback import failing in JobImport#run!
Step #10:      Failure/Error: organization_import.reload.state.should eq 'failure'
Step #10:      ActiveRecord::RecordNotFound:
Step #10:        Couldn't find Carto::UserMigrationImport without an ID
Step #10:      # ./spec/models/carto/user_migration_rollback_spec.rb:184:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   32) UserMigration failing organization organizations should rollback import failing creating user database and roles
Step #10:      Failure/Error: organization_import.reload.state.should eq 'failure'
Step #10:      ActiveRecord::RecordNotFound:
Step #10:        Couldn't find Carto::UserMigrationImport without an ID
Step #10:      # ./spec/models/carto/user_migration_rollback_spec.rb:195:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   33) UserMigration failing organization organizations should rollback import failing importing visualizations
Step #10:      Failure/Error: organization_import.reload.state.should eq 'failure'
Step #10:      ActiveRecord::RecordNotFound:
Step #10:        Couldn't find Carto::UserMigrationImport without an ID
Step #10:      # ./spec/models/carto/user_migration_rollback_spec.rb:206:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   34) UserMigration failing organization organizations should rollback import failing import visualizations with metadata_only option
Step #10:      Failure/Error: organization_import.save!
Step #10:      ActiveRecord::RecordInvalid:
Step #10:        Validation failed: Exported file can't be blank, Json file can't be blank
Step #10:      # ./spec/models/carto/user_migration_rollback_spec.rb:217:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   35) UserMigration failing organization organizations should rollback should fail if importing an already existing organization with metadata
Step #10:      Failure/Error: organization_import.run_import.should eq true
Step #10:
Step #10:        expected: true
Step #10:             got: false
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/models/carto/user_migration_rollback_spec.rb:224:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   36) UserMigration failing organization organizations should rollback import record should exist if import_data fails and rollbacks
Step #10:      Failure/Error: organization_import.reload.state.should eq 'failure'
Step #10:      ActiveRecord::RecordNotFound:
Step #10:        Couldn't find Carto::UserMigrationImport without an ID
Step #10:      # ./spec/models/carto/user_migration_rollback_spec.rb:233:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   37) UserMigration failing organization organizations should rollback import failing importing visualizations does not remove assets
Step #10:      Failure/Error: organization_import.reload.state.should eq 'failure'
Step #10:      ActiveRecord::RecordNotFound:
Step #10:        Couldn't find Carto::UserMigrationImport without an ID
Step #10:      # ./spec/models/carto/user_migration_rollback_spec.rb:250:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   38) SynchronizationOauth#creation_updating Tests basic creation operations
Step #10:      Failure/Error: @user.synchronization_oauths.map &:destroy
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<User:0x000055f437304f68>
Step #10:      # ./spec/models/synchronization/synchronization_oauth_spec.rb:16:in `block (2 levels) in <top (required)>'
Step #10:
Step #10:   39) SynchronizationOauth#deletion tests deletion of items
Step #10:      Failure/Error: SynchronizationOauth.create(
Step #10:      Sequel::ValidationFailed:
Step #10:        user_id  already has an oauth token created for service service
Step #10:      # ./spec/models/synchronization/synchronization_oauth_spec.rb:98:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   40) SynchronizationOauth#user_oauths tests the one to many association of user and sync oauths
Step #10:      Failure/Error: @user.synchronization_oauths.size.should eq 0
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<User:0x000055f437304f68>
Step #10:      # ./spec/models/synchronization/synchronization_oauth_spec.rb:133:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   41) Carto::Api::ImportsController service_token_valid? returns 400 for known service token without known service datasource
Step #10:      Failure/Error: response.code.should == '400'
Step #10:        expected: "400"
Step #10:             got: "200" (using ==)
Step #10:      # ./spec/requests/carto/api/imports_controller_spec.rb:201:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   42) Carto::Api::ImportsController service_token_valid? returns 400 for known service token for a service datasource which is not BaseOAuth
Step #10:      Failure/Error: response.code.should == '400'
Step #10:        expected: "400"
Step #10:             got: "200" (using ==)
Step #10:      # ./spec/requests/carto/api/imports_controller_spec.rb:209:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   43) Carto::Api::ImportsController service_token_valid? returns oauth_valid false for not valid tokens and deletes them
Step #10:      Failure/Error: SynchronizationOauth.where(id: synchronization_oauth.id).first.should eq nil
Step #10:
Step #10:        expected: nil
Step #10:             got: #<SynchronizationOauth @values={:user_id=>"075f0089-749c-4a66-aa6e-8db224e33b65", :service=>"mailchimp", :token=>"kk-t", :created_at=>2021-02-10 10:37:10 +0000, :updated_at=>2021-02-10 10:37:10 +0000, :id=>"360a24c1-eff8-44c1-a79f-83fb62421a91"}>
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/requests/carto/api/imports_controller_spec.rb:223:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   44) Carto::Api::ImportsController service_token_valid? returns 401 for expired tokens on assignment and deletes them
Step #10:      Failure/Error: response.code.should == '401'
Step #10:        expected: "401"
Step #10:             got: "200" (using ==)
Step #10:      # ./spec/requests/carto/api/imports_controller_spec.rb:233:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   45) Carto::Api::ImportsController service_token_valid? returns 401 for expired tokens on validation and deletes them
Step #10:      Failure/Error: response.code.should == '401'
Step #10:        expected: "401"
Step #10:             got: "200" (using ==)
Step #10:      # ./spec/requests/carto/api/imports_controller_spec.rb:245:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   46) Carto::Api::ImportsController list_files_for_service returns datasource resources list for known, valid tokens
Step #10:      Failure/Error: response.code.should == '200'
Step #10:        expected: "200"
Step #10:             got: "400" (using ==)
Step #10:      # ./spec/requests/carto/api/imports_controller_spec.rb:278:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   47) Carto::Api::ImportsController list_files_for_service returns 401 for expired tokens on resource listing and deletes them
Step #10:      Failure/Error: response.code.should == '401'
Step #10:        expected: "401"
Step #10:             got: "400" (using ==)
Step #10:      # ./spec/requests/carto/api/imports_controller_spec.rb:291:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   48) Carto::Api::ImportsController auth_url returns 400 for existing tokens services
Step #10:      Failure/Error: response.code.should == '400'
Step #10:        expected: "400"
Step #10:             got: "200" (using ==)
Step #10:      # ./spec/requests/carto/api/imports_controller_spec.rb:306:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   49) Carto::Api::ImportsController auth_url returns 401 for expired tokens on url and deletes them
Step #10:      Failure/Error: SynchronizationOauth.where(service: 'mailchimp').first.should eq nil
Step #10:
Step #10:        expected: nil
Step #10:             got: #<SynchronizationOauth @values={:user_id=>"075f0089-749c-4a66-aa6e-8db224e33b65", :service=>"mailchimp", :token=>"kk-t", :created_at=>2021-02-10 10:37:10 +0000, :updated_at=>2021-02-10 10:37:10 +0000, :id=>"360a24c1-eff8-44c1-a79f-83fb62421a91"}>
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/requests/carto/api/imports_controller_spec.rb:328:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   50) Carto::Api::ImportsController validate_service_oauth_code returns 401 for expired tokens on url and deletes them
Step #10:      Failure/Error: SynchronizationOauth.where(service: 'mailchimp').first.should eq nil
Step #10:
Step #10:        expected: nil
Step #10:             got: #<SynchronizationOauth @values={:user_id=>"075f0089-749c-4a66-aa6e-8db224e33b65", :service=>"mailchimp", :token=>"kk-t", :created_at=>2021-02-10 10:37:10 +0000, :updated_at=>2021-02-10 10:37:10 +0000, :id=>"360a24c1-eff8-44c1-a79f-83fb62421a91"}>
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/requests/carto/api/imports_controller_spec.rb:356:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   51) Carto::Api::ImportsController validate_service_oauth_code returns not success 200 and does not store oauth for not valid codes
Step #10:      Failure/Error: SynchronizationOauth.where(service: 'mailchimp').first.should eq nil
Step #10:
Step #10:        expected: nil
Step #10:             got: #<SynchronizationOauth @values={:user_id=>"075f0089-749c-4a66-aa6e-8db224e33b65", :service=>"mailchimp", :token=>"kk-t", :created_at=>2021-02-10 10:37:10 +0000, :updated_at=>2021-02-10 10:37:10 +0000, :id=>"360a24c1-eff8-44c1-a79f-83fb62421a91"}>
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/requests/carto/api/imports_controller_spec.rb:367:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   52) Carto::Api::ImportsController validate_service_oauth_code returns 400 if validation fails catastrophically
Step #10:      Failure/Error: SynchronizationOauth.where(service: 'mailchimp').first.should eq nil
Step #10:
Step #10:        expected: nil
Step #10:             got: #<SynchronizationOauth @values={:user_id=>"075f0089-749c-4a66-aa6e-8db224e33b65", :service=>"mailchimp", :token=>"kk-t", :created_at=>2021-02-10 10:37:10 +0000, :updated_at=>2021-02-10 10:37:10 +0000, :id=>"360a24c1-eff8-44c1-a79f-83fb62421a91"}>
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/requests/carto/api/imports_controller_spec.rb:377:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   53) Carto::Api::ImportsController validate_service_oauth_code returns success 200 and stores oauth for valid codes
Step #10:      Failure/Error: synchronization_oauth.token.should eq token
Step #10:
Step #10:        expected: "kk"
Step #10:             got: "kk-t"
Step #10:
Step #10:        (compared using ==)
Step #10:      # ./spec/requests/carto/api/imports_controller_spec.rb:390:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   54) Carto::Api::ImportsController service_oauth_callback returns 401 for expired tokens and deletes them
Step #10:      Failure/Error: response.code.should == '401'
Step #10:        expected: "401"
Step #10:             got: "400" (using ==)
Step #10:      # ./spec/requests/carto/api/imports_controller_spec.rb:412:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   55) Carto::Api::ImportsController service_oauth_callback returns success 200 and stores oauth for valid params
Step #10:      Failure/Error: response.code.should == '200'
Step #10:        expected: "200"
Step #10:             got: "400" (using ==)
Step #10:      # ./spec/requests/carto/api/imports_controller_spec.rb:423:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   56) Carto::OrganizationMetadataExportService#full export + import (organization, users and visualizations) export + import organization, users and visualizations
Step #10:      Failure/Error: service.export_to_directory(organization, path)
Step #10:      NoMethodError:
Step #10:        undefined method `map' for #<CartoDB::OAuths:0x000055f437ff6f78>
Step #10:      # ./app/services/carto/user_metadata_export_service.rb:349:in `export'
Step #10:      # ./app/services/carto/user_metadata_export_service.rb:323:in `export_user_json_hash'
Step #10:      # ./app/services/carto/user_metadata_export_service.rb:317:in `export_user_json_string'
Step #10:      # ./app/services/carto/user_metadata_export_service.rb:507:in `export_to_directory'
Step #10:      # ./app/services/carto/organization_metadata_export_service.rb:228:in `block in export_to_directory'
Step #10:      # ./app/services/carto/organization_metadata_export_service.rb:227:in `export_to_directory'
Step #10:      # ./spec/services/carto/organization_metadata_export_service_spec.rb:109:in `block (4 levels) in <top (required)>'
Step #10:      # ./spec/services/carto/organization_metadata_export_service_spec.rb:103:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   57) Carto::UserMetadataExportService#export exports
Step #10:      Failure/Error: @user.synchronization_oauths.create!(service: 'gdrive', token: 'wadus')
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f435046c60>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:44:in `create_user_with_basemaps_assets_visualizations'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:144:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   58) Carto::UserMetadataExportService#export includes all user model attributes
Step #10:      Failure/Error: @user.synchronization_oauths.create!(service: 'gdrive', token: 'wadus')
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f435046c60>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:44:in `create_user_with_basemaps_assets_visualizations'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:144:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   59) Carto::UserMetadataExportService#user import imports latest
Step #10:      Failure/Error: expect(export[:synchronization_oauths].count).to eq user.synchronization_oauths.size
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f431ee6f30>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:446:in `expect_export_matches_user'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:195:in `test_import_user_from_export'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:200:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   60) Carto::UserMetadataExportService#user import imports 1.0.16 (without email_verification)
Step #10:      Failure/Error: expect(export[:synchronization_oauths].count).to eq user.synchronization_oauths.size
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f4380d90a8>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:446:in `expect_export_matches_user'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:195:in `test_import_user_from_export'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:204:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   61) Carto::UserMetadataExportService#user import imports 1.0.15 (without public_dataset_quota)
Step #10:      Failure/Error: expect(export[:synchronization_oauths].count).to eq user.synchronization_oauths.size
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x00007f3718036aa0>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:446:in `expect_export_matches_user'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:195:in `test_import_user_from_export'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:211:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   62) Carto::UserMetadataExportService#user import imports 1.0.14 (without session_salt)
Step #10:      Failure/Error: expect(export[:synchronization_oauths].count).to eq user.synchronization_oauths.size
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f42f017128>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:446:in `expect_export_matches_user'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:195:in `test_import_user_from_export'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:217:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   63) Carto::UserMetadataExportService#user import imports 1.0.13 (without private_map_quota)
Step #10:      Failure/Error: expect(export[:synchronization_oauths].count).to eq user.synchronization_oauths.size
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f4394c0da0>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:446:in `expect_export_matches_user'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:195:in `test_import_user_from_export'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:223:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   64) Carto::UserMetadataExportService#user import imports 1.0.12 (without company_employees and use_case)
Step #10:      Failure/Error: expect(export[:synchronization_oauths].count).to eq user.synchronization_oauths.size
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f437f16928>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:446:in `expect_export_matches_user'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:195:in `test_import_user_from_export'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:229:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   65) Carto::UserMetadataExportService#user import imports 1.0.11 (without maintenance_mode)
Step #10:      Failure/Error: expect(export[:synchronization_oauths].count).to eq user.synchronization_oauths.size
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f437742148>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:446:in `expect_export_matches_user'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:195:in `test_import_user_from_export'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:236:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   66) Carto::UserMetadataExportService#user import imports 1.0.10 (without regular_api_key_quota)
Step #10:      Failure/Error: expect(export[:synchronization_oauths].count).to eq user.synchronization_oauths.size
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f43402d400>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:446:in `expect_export_matches_user'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:195:in `test_import_user_from_export'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:242:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   67) Carto::UserMetadataExportService#user import imports 1.0.9 (without public_map_quota)
Step #10:      Failure/Error: expect(export[:synchronization_oauths].count).to eq user.synchronization_oauths.size
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f438cd0848>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:446:in `expect_export_matches_user'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:195:in `test_import_user_from_export'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:248:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   68) Carto::UserMetadataExportService#user import imports 1.0.8 (without oauth_apps and oauth_app_users)
Step #10:      Failure/Error: expect(export[:synchronization_oauths].count).to eq user.synchronization_oauths.size
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f437d6e698>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:446:in `expect_export_matches_user'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:195:in `test_import_user_from_export'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:254:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   69) Carto::UserMetadataExportService#user import imports 1.0.7 (without user_multifactor_auths)
Step #10:      Failure/Error: expect(export[:synchronization_oauths].count).to eq user.synchronization_oauths.size
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f436aebbb0>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:446:in `expect_export_matches_user'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:195:in `test_import_user_from_export'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:261:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   70) Carto::UserMetadataExportService#user import imports 1.0.6 (without password_reset_token and password_reset_sent_at)
Step #10:      Failure/Error: expect(export[:synchronization_oauths].count).to eq user.synchronization_oauths.size
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f431fbc2e8>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:446:in `expect_export_matches_user'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:195:in `test_import_user_from_export'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:267:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   71) Carto::UserMetadataExportService#user import imports 1.0.5 (without client_application)
Step #10:      Failure/Error: expect(export[:synchronization_oauths].count).to eq user.synchronization_oauths.size
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f43848d0a0>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:446:in `expect_export_matches_user'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:195:in `test_import_user_from_export'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:274:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   72) Carto::UserMetadataExportService#user import imports 1.0.4 (without synchornization oauths nor connector configurations)
Step #10:      Failure/Error: expect(user.synchronization_oauths).to be_empty
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f437deaec8>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:451:in `expect_export_matches_user'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:195:in `test_import_user_from_export'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:280:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   73) Carto::UserMetadataExportService#user import imports 1.0.3 (without company nor phone)
Step #10:      Failure/Error: expect(user.synchronization_oauths).to be_empty
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f437385410>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:451:in `expect_export_matches_user'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:195:in `test_import_user_from_export'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:287:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   74) Carto::UserMetadataExportService#user import imports 1.0.2 (without rate limits)
Step #10:      Failure/Error: expect(user.synchronization_oauths).to be_empty
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f434bba3e0>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:451:in `expect_export_matches_user'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:195:in `test_import_user_from_export'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:294:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   75) Carto::UserMetadataExportService#user import imports 1.0.1 (without static notifications)
Step #10:      Failure/Error: expect(user.synchronization_oauths).to be_empty
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f439862760>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:451:in `expect_export_matches_user'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:195:in `test_import_user_from_export'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:300:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   76) Carto::UserMetadataExportService#user import imports 1.0.0 (without search tweets)
Step #10:      Failure/Error: expect(user.synchronization_oauths).to be_empty
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f438783f20>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:451:in `expect_export_matches_user'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:195:in `test_import_user_from_export'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:306:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   77) Carto::UserMetadataExportService#user export + import export + import latest
Step #10:      Failure/Error: @user.synchronization_oauths.create!(service: 'gdrive', token: 'wadus')
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f437e7b9c8>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:44:in `create_user_with_basemaps_assets_visualizations'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:318:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   78) Carto::UserMetadataExportService#full export + import (user and visualizations) export + import user with rate limit and visualizations
Step #10:      Failure/Error: @user.synchronization_oauths.create!(service: 'gdrive', token: 'wadus')
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f436b85d50>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:44:in `create_user_with_basemaps_assets_visualizations'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:330:in `block (4 levels) in <top (required)>'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:329:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   79) Carto::UserMetadataExportService#full export + import (user and visualizations) export + import user and visualizations for a viewer user
Step #10:      Failure/Error: @user.synchronization_oauths.create!(service: 'gdrive', token: 'wadus')
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f439971ac0>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:44:in `create_user_with_basemaps_assets_visualizations'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:339:in `block (4 levels) in <top (required)>'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:338:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   80) Carto::UserMetadataExportService#full export + import (user and visualizations) skips a canonical visualization without a user table
Step #10:      Failure/Error: @user.synchronization_oauths.create!(service: 'gdrive', token: 'wadus')
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f437e72a80>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:44:in `create_user_with_basemaps_assets_visualizations'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:348:in `block (4 levels) in <top (required)>'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:347:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   81) Carto::UserMetadataExportService#full export + import (user and visualizations) skips not remote visualizations without a map
Step #10:      Failure/Error: @user.synchronization_oauths.create!(service: 'gdrive', token: 'wadus')
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f4363786d0>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:44:in `create_user_with_basemaps_assets_visualizations'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:377:in `block (4 levels) in <top (required)>'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:376:in `block (3 levels) in <top (required)>'
Step #10:
Step #10:   82) Carto::UserMetadataExportService#full export + import (user and visualizations) keeps visualization password
Step #10:      Failure/Error: @user.synchronization_oauths.create!(service: 'gdrive', token: 'wadus')
Step #10:      NoMethodError:
Step #10:        undefined method `synchronization_oauths' for #<Carto::User:0x000055f438405920>
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:44:in `create_user_with_basemaps_assets_visualizations'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:387:in `block (4 levels) in <top (required)>'
Step #10:      # ./spec/services/carto/user_metadata_export_service_spec.rb:386:in `block (3 levels) in <top (required)>'
Step #10:

working on it...

Down to 15 errors from 82 😅  hold on...


Bug with example-forum 1.11.2 Latest commit 8f2822b - Expected a field “categoriesIds.3” of type String, got “null” instead

Hi,
I am testing the latest version of example-forum and found strange bug when add or edit post.
Some time the edit when well but when I click on edit to update the post that I just created, I got the following error:
Expected a field “categoriesIds.3” of type String, got “null” instead.
Expected a field “categoriesIds.4” of type String, got “null” instead.
Expected a field “categoriesIds.5” of type String, got “null” instead.
Expected a field “categoriesIds.6” of type String, got “null” instead.
Expected a field “categoriesIds.7” of type String, got “null” instead.
Expected a field “categoriesIds.8” of type String, got “null” instead.
Expected a field “categoriesIds.9” of type String, got “null” instead.
Expected a field “categoriesIds.10” of type String, got “null” instead.
Expected a field “categoriesIds.11” of type String, got “null” instead.
Expected a field “categoriesIds.12” of type String, got “null” instead.
Expected a field “categoriesIds.13” of type String, got “null” instead.
Expected a field “categoriesIds.14” of type String, got “null” instead.
Expected a field “categoriesIds.15” of type String, got “null” instead.
Expected a field “categoriesIds.16” of type String, got “null” instead.
Expected a field “categoriesIds.17” of type String, got “null” instead.
Expected a field “categoriesIds.18” of type String, got “null” instead.
Expected a field “categoriesIds.19” of type String, got “null” instead.
Expected a field “categoriesIds.20” of type String, got “null” instead.
Expected a field “categoriesIds.21” of type String, got “null” instead.
Expected a field “categoriesIds.22” of type String, got “null” instead.
Expected a field “categoriesIds.23” of type String, got “null” instead.
Expected a field “categoriesIds.24” of type String, got “null” instead.
Expected a field “categoriesIds.25” of type String, got “null” instead.
Expected a field “categoriesIds.26” of type String, got “null” instead.
Expected a field “categoriesIds.27” of type String, got “null” instead.
Expected a field “categoriesIds.28” of type String, got “null” instead.
Expected a field “categoriesIds.29” of type String, got “null” instead.
Expected a field “categoriesIds.30” of type String, got “null” instead.
Expected a field “categoriesIds.31” of type String, got “null” instead.
Expected a field “categoriesIds.32” of type String, got “null” instead.
Expected a field “categoriesIds.33” of type String, got “null” instead.
Expected a field “categoriesIds.34” of type String, got “null” instead.
Expected a field “categoriesIds.35” of type String, got “null” instead.
Expected a field “categoriesIds.36” of type String, got “null” instead.
Expected a field “categoriesIds.37” of type String, got “null” instead.
Expected a field “categoriesIds.38” of type String, got “null” instead.
Expected a field “categoriesIds.39” of type String, got “null” instead.
Expected a field “categoriesIds.40” of type String, got “null” instead.
Expected a field “categoriesIds.41” of type String, got “null” instead.
Expected a field “categoriesIds.42” of type String, got “null” instead.
Expected a field “categoriesIds.43” of type String, got “null” instead.
Expected a field “categoriesIds.44” of type String, got “null” instead.
Expected a field “categoriesIds.45” of type String, got “null” instead.
Error: GraphQL error: app.edit_document_validation_error
at new ApolloError (modules.js?hash=cc94ba3b8c9ab01501de15c016fe0ade9e14bd78:67329)
at modules.js?hash=cc94ba3b8c9ab01501de15c016fe0ade9e14bd78:68243
at meteor.js?hash=1f49b977b0beabbfeaa0ef0bdb87e0693971b18c:1223

Form.jsx:377 (2) [{…}, {…}]0: id: "errors.expectedType"path: "categoriesIds.3"properties: {name: "categoriesIds.3", value: null, type: "expectedType", dataType: "String"}proto: Object1: id: "errors.expectedType"path: "categoriesIds.4"properties: {name: "categoriesIds.4", value: null, type: "expectedType", dataType: "String"}proto: Objectlength: 2__proto__: Array(0)
Thank You
Adalidda

I got the same bug.
If I don't chose the first category order in the Category collection, it show me a error message.

Great. Thank You calinn for this information.


Updated createSession to enable onLoad to use composed dispatch

Hey! Thanks for the library.
Perhaps I am missing something, but if you want to be able to use the composed dispatch (with other middleware) from within onLoad(), you need to pass next rather than dispatch as a param (see commit).
Then, createSession(storedState, dispatch) will actually have the correct dispatch function.
Cheers,
Andrew

Sorry about this, my solution won't work, as onLoad will be called multiple times.


Variation between drones for take off. How do reduce the variation.

I have two drones same manufacturer and same model (Intel Aero Drone)-
I was running dronekit script. With same lift off script running on both the drones.. But I noticed one of the, goes to 10m. The other ones goes to around 5m.
How can iI nstruct with Dronekit/MAVLink commands for both the drones to reach same height.
And after the drones reach the recommended height, I want to move one of the drones up or down by 2cm   - and keep it self at the same height as the other drone.

That shouldn't happen with two vehicles that are the same. Are they both running the same firmware version?


invalid current EGLContext

two eglcontext error

Hi @zhoujingheng, Can you update the issue with complete description. Thanks!


In ui-grid and not ng-grid, for downloading the csv file, no option give filename along with format niether the file is getting download with .csv as an extension

I am using ui-grid in my application. For exporting the data in csv format and then downloading why we have two clicks and why not on export button only the files get downloaded?
Also the file which is getting download has its name as "download". Can we change this to   download.csv in ui-grid.js for all ui-grid users or we already have any option for giving a specific file name with extension?

I know this is closed, but to help others to get around the limitation, of client-side generated download filename and extension, I used this trick and has worked quite well:
http://stackoverflow.com/questions/16376161/javascript-set-file-in-download
pulling the data out of the link provided and then decoding and passing it to the function described in the above link with the desired filename.

I think code similar to that example is in the latest unstable.


grab and grabbing

Mouse cursor not switching between grab and grabbing

Dear @VladimirHybriun,
Could you please provide more detail or, preferably, a Sandbox (or similar) setup to replicate the issue?
Thanks for reporting it!

If you try to map an array state after set state in useEffect would cause this.
But an array state map without set state would not cause this. (use default state value mapping)
Test with React 18.2 and js version.


Add /_/health endpoint to of-watchdog

Introduce new endpoint /_/health to watchdog for health status of
functions which checks for /tmp/.lock file
Added tests for healthHandler
Issues: https://github.com/openfaas/faas/issues/547
Signed-off-by: Vivek Singh<EMAIL_ADDRESS>
Description

Motivation and Context

[x] I have raised an issue to propose this change (required)
Issue raised by Alex: https://github.com/openfaas/faas/issues/547

How Has This Been Tested?

This has been tested on Mac by building the watchdog binary.
curl -i http://localhost:8081/_/health
HTTP/1.1 200 OK
Date: Tue, 03 Apr 2018 03:51:24 GMT
Content-Length: 2
Content-Type: text/plain; charset=utf-8

OK%

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I've read the CONTRIBUTION guide
[x] I have signed-off my commits with git commit -s
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

I think this looks fine. @johnmccabe can you comment?

Lgtm 👍


ZHA xbee stop working at all after update to 0.88

Home Assistant release with the issue:

arch
x86_64

dev
false

docker
true

hassio
false

os_name
Linux

python_version
3.7.2

timezone
Europe/Sofia

version
0.88.0

virtualenv
false

Last working Home Assistant release (if known):
0.86
Operating environment (Hass.io/Docker/Windows/etc.):

Component/platform:

Description of problem:
Before update I was able to join and control my IKAE zigbee bulb.
After update device can't be joined.
Problem-relevant configuration.yaml entries and (fill out even if it seems unimportant):
logger:
  default: warn
  logs:
    #homeassistant.core: debug
    homeassistant.components.zha: debug
    zigpy: debug
    zigpy_xbee: debug
    zigpy_xbee.api: debug
    zigpy_xbee.uart: debug
    zigpy_xbee.zigbee.application: debug

zha:
  radio_type: xbee
  usb_path: socket://xbee:2323
  baudrate: 115200
  database_path: /config/zigbee.db

Traceback (if applicable):
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.uart] Connection made
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy.appdb] Loading application state from /config/zigbee.db
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.api] AT command: AP (2,)
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.api] Command at (1, b'AP', b'\x02')
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.uart] Frame received: b'\x88\x01AP\x00'
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.api] Frame received: at_response
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.api] AT command: AO (3,)
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.api] Command at (2, b'AO', b'\x03')
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.uart] Frame received: b'\x88\x02AO\x00'
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.api] Frame received: at_response
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.api] AT command: SH ()
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.api] Command at (3, b'SH', b'')
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.uart] Frame received: b'\x88\x03SH\x00\x00\x13\xa2\x00'
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.api] Frame received: at_response
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.api] AT command: SL ()
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.api] Command at (4, b'SL', b'')
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.uart] Frame received: b'\x88\x04SL\x00@\xbaS\xae'
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.api] Frame received: at_response
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.zigbee.application] Read local IEEE address as 00:13:a2:00:40:ba:53:ae
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.api] AT command: AI ()
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.api] Command at (5, b'AI', b'')
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.uart] Frame received: b'\x88\x05AI\x00\x00'
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.api] Frame received: at_response
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.api] AT command: MY ()
2019-02-23 12:47:00 DEBUG (MainThread) [zigpy_xbee.api] Command at (6, b'MY', b'')
2019-02-23 12:47:01 DEBUG (MainThread) [zigpy_xbee.uart] Frame received: b'\x88\x06MY\x00\x00\x00'
2019-02-23 12:47:01 DEBUG (MainThread) [zigpy_xbee.api] Frame received: at_response
2019-02-23 12:47:01 ERROR (MainThread) [homeassistant.core] Error doing job: Exception in callback <function EventBus.async_listen_once.<locals>.onetime_listener at 0x7fe923bd8e18>
Traceback (most recent call last):
  File "uvloop/cbhandles.pyx", line 64, in uvloop.loop.Handle._run
  File "/usr/src/app/homeassistant/core.py", line 626, in onetime_listener
    self._hass.async_run_job(listener, event)
  File "/usr/src/app/homeassistant/core.py", line 333, in async_run_job
    target(*args)
  File "/usr/src/app/homeassistant/components/person/__init__.py", line 342, in person_start_hass
    self.person_updated()
  File "/usr/src/app/homeassistant/components/person/__init__.py", line 363, in person_updated
    self._update_state()
  File "/usr/src/app/homeassistant/components/person/__init__.py", line 374, in _update_state
    for entity_id in self._config.get(CONF_DEVICE_TRACKERS, []):
TypeError: 'NoneType' object is not iterable
2019-02-23 12:47:26 INFO (MainThread) [homeassistant.components.zha.api] Permitting joins for 60s
2019-02-23 12:47:26 DEBUG (MainThread) [zigpy_xbee.api] AT command: NJ (60,)
2019-02-23 12:47:26 DEBUG (MainThread) [zigpy_xbee.api] Command at (7, b'NJ', b'<')
2019-02-23 12:47:26 DEBUG (MainThread) [zigpy_xbee.uart] Frame received: b'\x88\x07NJ\x00'
2019-02-23 12:47:26 DEBUG (MainThread) [zigpy_xbee.api] Frame received: at_response
2019-02-23 12:47:26 DEBUG (MainThread) [zigpy_xbee.api] AT command: AC ()
2019-02-23 12:47:26 DEBUG (MainThread) [zigpy_xbee.api] Command at (8, b'AC', b'')
2019-02-23 12:47:27 DEBUG (MainThread) [zigpy_xbee.uart] Frame received: b'\x88\x08AC\x00'
2019-02-23 12:47:27 DEBUG (MainThread) [zigpy_xbee.api] Frame received: at_response
2019-02-23 12:47:27 DEBUG (MainThread) [zigpy_xbee.api] AT command: CB (2,)
2019-02-23 12:47:27 DEBUG (MainThread) [zigpy_xbee.api] Command at (9, b'CB', b'\x02')
2019-02-23 12:47:27 DEBUG (MainThread) [zigpy_xbee.uart] Frame received: b'\x88\tCB\x00'
2019-02-23 12:47:27 DEBUG (MainThread) [zigpy_xbee.api] Frame received: at_response
2019-02-23 12:47:33 DEBUG (MainThread) [zigpy_xbee.uart] Frame received: b'\x91\xd0\xcf^\xff\xfe\x14m\xc6> \x00\x00\x00\x13\x00\x00\x02\x81 >\xc6m\x14\xfe\xff^\xcf\xd0\x8e'
2019-02-23 12:47:33 DEBUG (MainThread) [zigpy_xbee.api] Frame received: explicit_rx_indicator
2019-02-23 12:47:33 DEBUG (MainThread) [zigpy_xbee.api] _handle_explicit_rx: opts=2
2019-02-23 12:47:33 INFO (MainThread) [zigpy.application] Device 0x3e20 (d0:cf:5e:ff:fe:14:6d:c6) joined the network
2019-02-23 12:47:33 DEBUG (MainThread) [zigpy.zdo] [0x3e20:zdo] ZDO request 0x0013: [15904, d0:cf:5e:ff:fe:14:6d:c6, 142]
2019-02-23 12:47:33 INFO (MainThread) [zigpy.device] [0x3e20] Discovering endpoints
Tries remaining: 3
2019-02-23 12:47:33 DEBUG (MainThread) [zigpy_xbee.zigbee.application] Zigbee request seq 1
2019-02-23 12:47:33 DEBUG (MainThread) [zigpy_xbee.api] Sequenced command: tx_explicit (d0:cf:5e:ff:fe:14:6d:c6, 15904, 0, 0, 5, 0, 0, 32, b'\x01 >')
2019-02-23 12:47:33 DEBUG (MainThread) [zigpy_xbee.api] Command tx_explicit (10, d0:cf:5e:ff:fe:14:6d:c6, 15904, 0, 0, 5, 0, 0, 32, b'\x01 >')
2019-02-23 12:47:33 DEBUG (MainThread) [zigpy_xbee.uart] Frame received: b'\xa1\xd0\xcf^\xff\xfe\x14m\xc6> \x00\x00'
2019-02-23 12:47:33 DEBUG (MainThread) [zigpy_xbee.api] Frame received: route_record_indicator
2019-02-23 12:47:33 ERROR (MainThread) [homeassistant.core] Error doing job: Exception in callback <bound method SerialTransport._read_ready of SerialTransport(<uvloop.Loop running=True closed=False debug=False>, <zigpy_xbee.uart.Gateway object at 0x7fe9349b1128>, Serial<id=0x7fe934863d68, open=True>(port='socket://xbee:2323', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=0, xonxoff=False, rtscts=False, dsrdtr=False))>
Traceback (most recent call last):
  File "uvloop/cbhandles.pyx", line 62, in uvloop.loop.Handle._run
  File "/usr/local/lib/python3.7/site-packages/serial_asyncio/__init__.py", line 106, in _read_ready
    self._protocol.data_received(data)
  File "/config/deps/lib/python3.7/site-packages/zigpy_xbee/uart.py", line 43, in data_received
    self.frame_received(frame)
  File "/config/deps/lib/python3.7/site-packages/zigpy_xbee/uart.py", line 48, in frame_received
    self._api.frame_received(frame)
  File "/config/deps/lib/python3.7/site-packages/zigpy_xbee/api.py", line 207, in frame_received
    getattr(self, '_handle_%s' % (command, ))(data)
AttributeError: 'XBee' object has no attribute '_handle_route_record_indicator'
2019-02-23 12:47:33 DEBUG (MainThread) [zigpy_xbee.uart] Frame received: b'\xa1\xd0\xcf^\xff\xfe\x14m\xc6> \x00\x00'
2019-02-23 12:47:33 DEBUG (MainThread) [zigpy_xbee.api] Frame received: route_record_indicator
2019-02-23 12:47:33 ERROR (MainThread) [homeassistant.core] Error doing job: Exception in callback <bound method SerialTransport._read_ready of SerialTransport(<uvloop.Loop running=True closed=False debug=False>, <zigpy_xbee.uart.Gateway object at 0x7fe9349b1128>, Serial<id=0x7fe934863d68, open=True>(port='socket://xbee:2323', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=0, xonxoff=False, rtscts=False, dsrdtr=False))>
Traceback (most recent call last):
  File "uvloop/cbhandles.pyx", line 62, in uvloop.loop.Handle._run
  File "/usr/local/lib/python3.7/site-packages/serial_asyncio/__init__.py", line 106, in _read_ready
    self._protocol.data_received(data)
  File "/config/deps/lib/python3.7/site-packages/zigpy_xbee/uart.py", line 43, in data_received
    self.frame_received(frame)
  File "/config/deps/lib/python3.7/site-packages/zigpy_xbee/uart.py", line 48, in frame_received
    self._api.frame_received(frame)
  File "/config/deps/lib/python3.7/site-packages/zigpy_xbee/api.py", line 207, in frame_received
    getattr(self, '_handle_%s' % (command, ))(data)
AttributeError: 'XBee' object has no attribute '_handle_route_record_indicator'
Tries remaining: 2
2019-02-23 12:47:45 DEBUG (MainThread) [zigpy_xbee.zigbee.application] Zigbee request seq 2
2019-02-23 12:47:45 DEBUG (MainThread) [zigpy_xbee.api] Sequenced command: tx_explicit (d0:cf:5e:ff:fe:14:6d:c6, 15904, 0, 0, 5, 0, 0, 32, b'\x02 >')
2019-02-23 12:47:45 DEBUG (MainThread) [zigpy_xbee.api] Command tx_explicit (11, d0:cf:5e:ff:fe:14:6d:c6, 15904, 0, 0, 5, 0, 0, 32, b'\x02 >')
2019-02-23 12:47:45 DEBUG (MainThread) [zigpy_xbee.uart] Frame received: b'\x91\xd0\xcf^\xff\xfe\x14m\xc6> \x00\x00\x80\x05\x00\x00!\x01\x00 >\x01\x01'
2019-02-23 12:47:45 DEBUG (MainThread) [zigpy_xbee.api] Frame received: explicit_rx_indicator
2019-02-23 12:47:45 DEBUG (MainThread) [zigpy_xbee.api] _handle_explicit_rx: opts=33
2019-02-23 12:47:45 DEBUG (MainThread) [zigpy_xbee.zigbee.application] Invalid state on future - probably duplicate response: invalid state
2019-02-23 12:47:45 DEBUG (MainThread) [zigpy_xbee.uart] Frame received: b'\x8b\n> \x00\x00\x00'
2019-02-23 12:47:45 DEBUG (MainThread) [zigpy_xbee.api] Frame received: tx_status
2019-02-23 12:47:45 DEBUG (MainThread) [zigpy_xbee.api] tx_status: [10, 15904, 0, 0, 0]
2019-02-23 12:47:45 DEBUG (MainThread) [zigpy_xbee.uart] Frame received: b'\xa1\xd0\xcf^\xff\xfe\x14m\xc6> \x00\x00'
2019-02-23 12:47:45 DEBUG (MainThread) [zigpy_xbee.api] Frame received: route_record_indicator
2019-02-23 12:47:45 ERROR (MainThread) [homeassistant.core] Error doing job: Exception in callback <bound method SerialTransport._read_ready of SerialTransport(<uvloop.Loop running=True closed=False debug=False>, <zigpy_xbee.uart.Gateway object at 0x7fe9349b1128>, Serial<id=0x7fe934863d68, open=True>(port='socket://xbee:2323', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=0, xonxoff=False, rtscts=False, dsrdtr=False))>
Traceback (most recent call last):
  File "uvloop/cbhandles.pyx", line 62, in uvloop.loop.Handle._run
  File "/usr/local/lib/python3.7/site-packages/serial_asyncio/__init__.py", line 106, in _read_ready
    self._protocol.data_received(data)
  File "/config/deps/lib/python3.7/site-packages/zigpy_xbee/uart.py", line 43, in data_received
    self.frame_received(frame)
  File "/config/deps/lib/python3.7/site-packages/zigpy_xbee/uart.py", line 48, in frame_received
    self._api.frame_received(frame)
  File "/config/deps/lib/python3.7/site-packages/zigpy_xbee/api.py", line 207, in frame_received
    getattr(self, '_handle_%s' % (command, ))(data)
AttributeError: 'XBee' object has no attribute '_handle_route_record_indicator'
2019-02-23 12:47:45 DEBUG (MainThread) [zigpy_xbee.uart] Frame received: b'\xa1\xd0\xcf^\xff\xfe\x14m\xc6> \x00\x00'
2019-02-23 12:47:45 DEBUG (MainThread) [zigpy_xbee.api] Frame received: route_record_indicator
2019-02-23 12:47:45 ERROR (MainThread) [homeassistant.core] Error doing job: Exception in callback <bound method SerialTransport._read_ready of SerialTransport(<uvloop.Loop running=True closed=False debug=False>, <zigpy_xbee.uart.Gateway object at 0x7fe9349b1128>, Serial<id=0x7fe934863d68, open=True>(port='socket://xbee:2323', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=0, xonxoff=False, rtscts=False, dsrdtr=False))>
Traceback (most recent call last):
  File "uvloop/cbhandles.pyx", line 62, in uvloop.loop.Handle._run
  File "/usr/local/lib/python3.7/site-packages/serial_asyncio/__init__.py", line 106, in _read_ready
    self._protocol.data_received(data)
  File "/config/deps/lib/python3.7/site-packages/zigpy_xbee/uart.py", line 43, in data_received
    self.frame_received(frame)
  File "/config/deps/lib/python3.7/site-packages/zigpy_xbee/uart.py", line 48, in frame_received
    self._api.frame_received(frame)
  File "/config/deps/lib/python3.7/site-packages/zigpy_xbee/api.py", line 207, in frame_received
    getattr(self, '_handle_%s' % (command, ))(data)
AttributeError: 'XBee' object has no attribute '_handle_route_record_indicator'
Tries remaining: 1
2019-02-23 12:47:57 DEBUG (MainThread) [zigpy_xbee.zigbee.application] Zigbee request seq 3
2019-02-23 12:47:57 DEBUG (MainThread) [zigpy_xbee.api] Sequenced command: tx_explicit (d0:cf:5e:ff:fe:14:6d:c6, 15904, 0, 0, 5, 0, 0, 32, b'\x03 >')
2019-02-23 12:47:57 DEBUG (MainThread) [zigpy_xbee.api] Command tx_explicit (12, d0:cf:5e:ff:fe:14:6d:c6, 15904, 0, 0, 5, 0, 0, 32, b'\x03 >')
2019-02-23 12:47:57 DEBUG (MainThread) [zigpy_xbee.uart] Frame received: b'\x91\xd0\xcf^\xff\xfe\x14m\xc6> \x00\x00\x80\x05\x00\x00!\x02\x00 >\x01\x01'
2019-02-23 12:47:57 DEBUG (MainThread) [zigpy_xbee.api] Frame received: explicit_rx_indicator
2019-02-23 12:47:57 DEBUG (MainThread) [zigpy_xbee.api] _handle_explicit_rx: opts=33
2019-02-23 12:47:57 DEBUG (MainThread) [zigpy_xbee.zigbee.application] Invalid state on future - probably duplicate response: invalid state
2019-02-23 12:47:57 DEBUG (MainThread) [zigpy_xbee.uart] Frame received: b'\x8b\x0b> \x00\x00\x00'
2019-02-23 12:47:57 DEBUG (MainThread) [zigpy_xbee.api] Frame received: tx_status
2019-02-23 12:47:57 DEBUG (MainThread) [zigpy_xbee.api] tx_status: [11, 15904, 0, 0, 0]
2019-02-23 12:47:57 DEBUG (MainThread) [zigpy_xbee.uart] Frame received: b'\xa1\xd0\xcf^\xff\xfe\x14m\xc6> \x00\x00'
2019-02-23 12:47:57 DEBUG (MainThread) [zigpy_xbee.api] Frame received: route_record_indicator
2019-02-23 12:47:57 ERROR (MainThread) [homeassistant.core] Error doing job: Exception in callback <bound method SerialTransport._read_ready of SerialTransport(<uvloop.Loop running=True closed=False debug=False>, <zigpy_xbee.uart.Gateway object at 0x7fe9349b1128>, Serial<id=0x7fe934863d68, open=True>(port='socket://xbee:2323', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=0, xonxoff=False, rtscts=False, dsrdtr=False))>
Traceback (most recent call last):
  File "uvloop/cbhandles.pyx", line 62, in uvloop.loop.Handle._run
  File "/usr/local/lib/python3.7/site-packages/serial_asyncio/__init__.py", line 106, in _read_ready
    self._protocol.data_received(data)
  File "/config/deps/lib/python3.7/site-packages/zigpy_xbee/uart.py", line 43, in data_received
    self.frame_received(frame)
  File "/config/deps/lib/python3.7/site-packages/zigpy_xbee/uart.py", line 48, in frame_received
    self._api.frame_received(frame)
  File "/config/deps/lib/python3.7/site-packages/zigpy_xbee/api.py", line 207, in frame_received
    getattr(self, '_handle_%s' % (command, ))(data)
AttributeError: 'XBee' object has no attribute '_handle_route_record_indicator'
2019-02-23 12:47:57 DEBUG (MainThread) [zigpy_xbee.uart] Frame received: b'\xa1\xd0\xcf^\xff\xfe\x14m\xc6> \x00\x00'
2019-02-23 12:47:57 DEBUG (MainThread) [zigpy_xbee.api] Frame received: route_record_indicator
2019-02-23 12:47:57 ERROR (MainThread) [homeassistant.core] Error doing job: Exception in callback <bound method SerialTransport._read_ready of SerialTransport(<uvloop.Loop running=True closed=False debug=False>, <zigpy_xbee.uart.Gateway object at 0x7fe9349b1128>, Serial<id=0x7fe934863d68, open=True>(port='socket://xbee:2323', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=0, xonxoff=False, rtscts=False, dsrdtr=False))>
Traceback (most recent call last):
  File "uvloop/cbhandles.pyx", line 62, in uvloop.loop.Handle._run
  File "/usr/local/lib/python3.7/site-packages/serial_asyncio/__init__.py", line 106, in _read_ready
    self._protocol.data_received(data)
  File "/config/deps/lib/python3.7/site-packages/zigpy_xbee/uart.py", line 43, in data_received
    self.frame_received(frame)
  File "/config/deps/lib/python3.7/site-packages/zigpy_xbee/uart.py", line 48, in frame_received
    self._api.frame_received(frame)
  File "/config/deps/lib/python3.7/site-packages/zigpy_xbee/api.py", line 207, in frame_received
    getattr(self, '_handle_%s' % (command, ))(data)
AttributeError: 'XBee' object has no attribute '_handle_route_record_indicator'
2019-02-23 12:48:07 ERROR (MainThread) [zigpy.device] Failed ZDO request during device initialization:
Traceback (most recent call last):
  File "/config/deps/lib/python3.7/site-packages/zigpy/device.py", line 51, in _initialize
    epr = await self.zdo.request(0x0005, self.nwk, tries=3, delay=2)
  File "/config/deps/lib/python3.7/site-packages/zigpy/util.py", line 52, in retry
    r = await func()
  File "/config/deps/lib/python3.7/site-packages/zigpy/device.py", line 89, in request
    expect_reply=expect_reply,
  File "/config/deps/lib/python3.7/site-packages/zigpy_xbee/zigbee/application.py", line 81, in request
    v = await asyncio.wait_for(reply_fut, timeout)
  File "/usr/local/lib/python3.7/asyncio/tasks.py", line 423, in wait_for
    raise futures.TimeoutError()
concurrent.futures._base.TimeoutError

Additional information:

@Adminiuga any ideas?

Not sure but seems that zigpy uses older version 0.1.1 of zigpy-xbee.
Also I try latest dev docker image, which is 3 days old, and there is no '_handle_route_record_indicator' errors.
I can join devices, but they dosn't work with homeassistant.
When ikea bulb is restarted it's go from offline to online, but can't be controled.
Xiaomi aquara switch report temperature, but when I press button nothing is happening in homeassistant nor logs.
Aqura battery also is not visible. I also check homeassiatnt logs wit

Battery would be an attr on the zha entity and only appears after the value is reported. The button presses are emitted as events and can be seen by subscribing to zha_event in the new event tool.

@dmulcahey What about bulb, is it experted to be functional with latest release?

Absolutely.

@jonudewux What XBee module (hardware version) are you using and what Firmware version?
route record handling was added in zigpy-xbee == 0.1.2 so that should take care of device joining.
As about the bulb control, can you post debug log (including homeassistant.components.zha log lines)?

@Adminiuga
Actually with current dev branch bulbs are working fine.
Unfortunately, there is no events from lumi.sensor_switch.aq2.
I'm using xbee s2b pro with latest available firmware.

arch
x86_64

dev
true

docker
true

hassio
false

os_name
Linux

python_version
3.7.2

timezone
Europe/Sofia

version
0.89.0.dev0

virtualenv
false

@jonudewux can you enable homeassistant.core: debug level as events are logged at debug level at home assistant core and check for events.
Or got to Events on Dev tools panel and subscribe to zha_event

Do you see event there from any other On/Off remote?

Can confirm it works fine in 0.88.1 but not in the latest update. I don't have my errors onhand right now since I downgraded, but it looked like an issue in zigpy not being able to import PROFILES the first time, then some other unknown properties/objects.

@Adminiuga
Unfortunately I didn't have aquara switch, right now.
But I'm sure, that there was no  zha_event in UI, nor in homeasisstant debug log.
There was only messages from zigpy xbee layer.

can you guys tell me if this is still an issue in 0.90.1?

can you guys tell me if this is still an issue in 0.90.1?

So far I haven't any issues for me on the newest version.

Thanks for reporting back @pmmcmullen94, if anyone is still experiencing this issue let me know and i'll reopen this.


Add cell level edit control

This commit allows to enable/disable edition on cell level
Related Issue
Relate the Github issue with this PR using #
Description
Simple words to describe the overall goals of the pull request's commits.
Related PRs
List related PRs against other branches:

branch
PR

other_pr_production
link

other_pr_master
link

Impacted Areas in Application
List general components of the application that this PR will affect:
*
Additional Notes
This is optional, feel free to follow your hearth and write here :)

Not sure what this GH Action prettier was doing but I removed it (prettier is ran before each commit anyway via husky).


Output is one frame off.

I have noticed in the training data that the image does not match up to the box. I could be wrong but I am almost certain. Fix it

Doesnt seem to be every video so it may just may be certain videos like with going past the end


search_all_tweets: Not getting full text despite API v2 if scraped tweets are retweets

Hi guys,
I am scraping tweets per userid for the time period of a month via the method search_all_tweets  (https://docs.tweepy.org/en/stable/client.html#search-tweets )
I encountered a rather interesting issue/ phenomenon that might be a bug :
Some of the tweets I scraped have been truncated, as explained in: https://docs.tweepy.org/en/stable/extended_tweets.html .
However, I am using the API v2 Client, so I was assuming that this wouldn't happen. This is also the case for normal tweets, but not for retweets .
To be more specific, after a bit of debugging I figured that the tweets always fulfil these three conditions:

their tweet/ text length >= 140 (old twitter cap) (real length without (RT @[usernamelist], …) == 140)
they always end with the … character (suffix that indicates truncation)
they are retweets

Whilst 1) and 2) make sense to me, 3) indicates that in the backend still API v1 instead of API v2 is used.
If this is the case, I would suggest to maybe change that, or at least document it, as it seems a bit counterintuitive to me.
Also, am I right in my assumption that with the current implementation the only way to get the full/extended tweet text is by running the requests again via API v1 (not v2) and setting the extended parameter?

Retweets are truncated in both Twitter API v1.1 and v2.
This is a limitation of Twitter's API and not a bug with Tweepy.
Tweepy's interface for Twitter API v2 is Client, and its interface for Twitter API v1.1 is API.
Client does not use Twitter API v1.1 in any way (and API does not use Twitter API v2 in any way).
If you're only using Client, then you're not using Twitter API v1.1 at all.
You can use the referenced_tweets.id expansion to retrieve the Tweet object representing the Tweet being Retweeted (and its text).

This is also the case for normal tweets, but not for retweets .

I'm not sure you mean this, as it doesn't match any other information you've provided, but if you're encountering truncated Tweets (that aren't Retweets), rather than Retweets, you'll need to provide a reproducible example (MCVE/SSCCE) of this.

Retweets are truncated in both Twitter API v1.1 and v2. This is a limitation of Twitter's API and not a bug with Tweepy.
Tweepy's interface for Twitter API v2 is Client, and its interface for Twitter API v1.1 is API. Client does not use Twitter API v1.1 in any way (and API does not use Twitter API v2 in any way). If you're only using Client, then you're not using Twitter API v1.1 at all.
You can use the referenced_tweets.id expansion to retrieve the Tweet object representing the Tweet being Retweeted (and its text).

This is also the case for normal tweets, but not for retweets .

I'm not sure you mean this, as it doesn't match any other information you've provided, but if you're encountering truncated Tweets (that aren't Retweets), rather than Retweets, you'll need to provide a reproducible example (MCVE/SSCCE) of this.

Thank you so much for clarifying this and your support! I wasn't aware of this Twitter API limitation still existing in API v2 (for retweets).
Yes, I am purely operating via API v2/  Client .
And this limitation only applies to retweets, the truncation is as expected, e.g.: RT @someusername: Some truncated tweet text ending ju… .
So I think to retrieve the untruncated retweeted tweet, I will work via the referenced_tweets.id expansion as you suggested.
Thanks again!


Update storage-use-azcopy-linux.md

Fixing typo about BlobType parameter. There is no /BlobType in azcopy for Linux, there is --blob-type:
According to the help from the command itself:
azcopy --help | grep -i page
--blob-type <page | block | append>

@seguler - Please review the proposed changes.  Thanks

Thank you for addressing this issue!
Approved.

@GitHubber17 - This one has been approved. Thanks!


'http: panic' when using SetNAT1To1IPs

Your environment.

Version: Go 1.17.3 linux/amd64, Pion WebRTC V3
Browser: Chrome - Version 96.0.4664.110 (Official Build) snap (64-bit)

What did you do?
To replicate this error, use rtsp-bench  server as a template, and enable the Setting Engine SetNAT1ToIPs with a public IP and candidate type svflx.
Something like this:
func doSignaling(w http.ResponseWriter, r *http.Request) {
	// Initialize settings engine
	var settings = webrtc.SettingEngine{}
	// Enable 'hardcoded' public IP address as a srflx candidate
	settings.SetNAT1To1IPs([]string{"PUBLIC IP HERE"}, webrtc.ICECandidateTypeSrflx)
	var api = webrtc.NewAPI(webrtc.WithSettingEngine(settings))
	// Change 'webrtc' to 'api'
	peerConnection, err := api.NewPeerConnection(webrtc.Configuration{})
	if err != nil {
		panic(err)
	}

What did you expect?
Expected to be able to get video stream through the public IP address that is passed to the Pion SetNAT1To1IPs call.
What happened?
With the Pion Setting Engine we get the below error from the main.go script.
Without the Pion Setting Engine, it works fine (on the internal network).
At the very least, this is probably not the correct error message for the event triggering it.
On the server side--
http: panic serving <IP_ADDRESS>:59730: unable to start track, codec is not supported by remote

The error appears to originate from line 94:
answer, err := peerConnection.CreateAnswer(nil)
if err != nil {
	panic(err)
} else if err = peerConnection.SetLocalDescription(answer); err != nil {
	panic(err)    <--- Here
}

Hi @Lanceback
The API object by default comes with an empty MediaEngine. When you call SetLocalDescription you have zero available and hit the error case.
Try following this and create a MediaEngine and RegisterDefaultCodecs against it. Then use that with your API like this
Thanks for using Pion!

That makes sense. I'll try it out.

Great @Lanceback :)
If you are still having issues please re-open! I am also available on Slack if you need help.


Allow triggering events owned by objects other than the charm

at the moment you can't trigger ipa_events.data_provided, because that event doesn't belong to the charm, but to charm.ipa. We'd need some way to specify who the owner of the event we want to fire is, and I reckon that's a separate use case.
We could for example do:
State().trigger(event=Event('data_provided', owner_path=['ipa']), charm_cls=MyCharm)

and then our main would:
getattr(getattr(charm_cls(), 'ipa').on, 'data_provided').emit()

and things from there would proceed 'as normal'. But this risks diverging with a 'true-to-juju` charm execution, so I think it has low priority.
Originally posted by @PietroPasotti in https://github.com/PietroPasotti/ops-scenario/pull/11#discussion_r1102853391

Coincidentally, you can use the event_queue as in #13 to trigger any event, even those owned by other Objects.
State(event_queue=[StoredEvent('MyCharm/DatabaseRequirer/on/foo[1]', 'DatabaseRequirer', '_on_foo')], the OF will execute the custom event. It's kind of a trick though, because you have to pretend that the event had been deferred.


Re-implement delayed source update

The performance improvements from https://github.com/maplibre/maplibre-plugins-android/pull/12 were undone in https://github.com/maplibre/maplibre-plugins-android/pull/25#pullrequestreview-1557170506, thus have no effect. Hence, this PR re-adds them.
The effect of https://github.com/maplibre/maplibre-plugins-android/pull/30 is still in place, i.e. adding additional markers to the map while dragging another marker does not cancel the drag.
For the sake of clarity, the three methods updateSource, postUpdateSource and internalUpdateSource have been renamed to updateSource and updateSourceNow, the latter of which is documented not to be called except from updateSource. It is required for testing, as our tests now need to force the source to update immediately instead of delayed. postUpdateSource has been removed as it was an unnecessary indirection.
Tests should still pass as previously (one instrumentation test was and still is failing).
cc @RomanBapst @JonasVautherin

Nice! I'll test it today or tomorrow!

@louwers That would be great.


Supported Features

Please add a section about supported features to the README.md
Supported Features

[x] transactions
[x] enqueue
[ ] listenQueue
[x] watch

I came across this when I tried to use the enqueue and listenQueue functions with Deno CLI 1.39.0 connecting to a remote self-hosted denokv. Neither did work and threw exceptions...  Also with watch I had no success in this configuration.
But both projects (the npm module and the denokv) might benefit from an explicit summary of supported and unsupported features.
Maybe a "features page" on https://docs.deno.com/kv/manual might provide a feature overview? It could contain a matrix with all KV "modes"  (Deno CLI, Deno Deploy, Deno KV remote,  NPM module, ...).

Small Note: watch seems to be working for me


Emphasize the importance of the test suite in the track README

From @parkerl in #9:

I wonder if in this file or maybe the TRACK_README we should emphasize that the tests are really the fundamental "product" that Exercism delivers. Utmost care should be taken when crafting a track's test suite.

The file in question is https://github.com/exercism/request-new-language-track/blob/master/TRACK_README.md

I think #13 closed this.


Tagged union types and using literal types defined outside the interface as discriminant

TypeScript Version:  2.0.2
To use tagged unions feature we have to introduce discriminant property in interfaces like:
interface Action {
    type: "ACTION"
}

However when I define a string literal type outside the interface and try to use it as discriminant then I get an error
let actionName: "ACTION"

interface Action {
    type: actionName <- error: cannot find name "actionName"
}

Expected behavior:
String literal types defines outside an interface can be used as discriminant property value.

actionName in your example is defined as a value however is being used in a position where a type is expected, should be:
interface Action { type: 'ACTION' }

or
interface Action { type: typeof actionName }

Thanks @aleksey-bykov. However, to make it working I had to use the following notation:
const ACTION: "ACTION" = "ACTION"

interface Action {
    type: typeof ACTION
}

So I had to define a const of string type "ACTION" with value set to the same string "ACTION".

Would be very nice if this could be fixed - at least so const string literal types defined outside (so they can be reused - so we can avoid use of magic strings all around in the code).

@mmc41 was looking for solution to exactly that same issue. Looks like this one solves it. At least it reduces magic strings duplication.


Add Eye-dropper To Pick Colors From The Canvas

Is your feature request related to a problem? Please describe.
Have an eye-dropper feature in the color picker modal to allow users to pick a color off Figma’s canvas (like Figma’s design panel color-picker)
Additional context

Added to featurebase if you want to upvote for this request

Here's the URL to the featurebase post that is linked to this ticket: https://tokensstudio.featurebase.app/p/bulbart-enhance-color-functionality-across-all-token-types


consistent process around updating benchmark weights

It looks like right now our re-running of benchmarks to update weights in subtensor is fairly haphazard, is not occurring on a regular basis, and is not being done on consistent / reference hardware. We need something that will allow us to run this automatically on reference hardware, preferably every time we deploy to testnet/finney.
AC:

[ ] Sync with @rajkaramchedu and @opentensor/medulla to ensure that minimum recommended hardware specs for running a validator are publicly documented and updated on some recurring basis, like annually
[ ] Sync with @opentensor/medulla to set up a custom CI runner (not SubtensorCI) that would be solely for running benchmarking jobs. It should match our minimum recommended hardware specs for running a validator.
[ ] Set up a CI action that runs the benchmarking suite on the specified branch using this custom CI runner, and commits the weight changes in a new commit to the branch. Concurrency settings must be configured such that only one benchmarking job can run on the runner at a time, to avoid tainting the results of any particular run
[ ] Verify the github action works
[ ] Decide how we want the github action to be triggered -- manually, on push to testnet / finney, on PR for those..?

closing in favor of #528


Error enum

Move all errors which can occur to a DiscordenoError enum

Can you share links to where an error occurs that does not use an enum


Some packages are named phoremarketplace, others are named OpenBazaar.

Brief Description:
Operating System (OS and version):
Phore Marketplace version (shown on About Phore Marketplace page in menu):
Hardware:
Reproducible (Always / Almost Always / Sometimes / Rarely / Couldn't Reproduce):
Steps to reproduce:
1.
2.
3.
Observed Behavior:
Expected Behavior:
Additional info (links, images, etc go here):

Fixed


chore(deps): update common-dev-assets digest to c98b52c

This PR contains the following updates:

Package
Update
Change

common-dev-assets
digest
3db45ba -> c98b52c

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

/run pipeline

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


Plugin example

Hey, I saw in your plugin example that you were iterating through the packet objects using for e in packet.newObjs
Here, you did if e.objectType == 1824: for the vault check. How did you find the object type for the vault to be 1824? I'm trying to do something similar but with the daily quest portal instead, however I'm not sure what value to be using.

Here
From here search for what you want eg the vault portal and you'll find "".

One more question, is there any packet for redeem quest? I wasn't able to find it

Nope there isn't

I saw the packet on RotmgPCap, I could create the class for it based off the format


Test KIC against multiple k8s versions

Problem statement: We need to commit to some quality level for versions of k8s that we consider "supported".
Proposed solution: Define a "supported" major.minor k8s version to be one, for which at least one patch version is covered by the automated integration tests. We can leverage KTF support for environments for that purpose.
Separated out from #1095
Acceptance criteria:

[ ] For an array of major.minor.patch or major.minor.<latest-patch> versions, CI tests run against each

@mflendrich I changed the AC: I'm intending to target ALL pushes to main and next and have it so that releases can't be cut from these branches until CI is :heavy_check_mark:


You're not dogfooding

Ironically you're using GitHub to host a GitHub replacement.  Why are you not hosting gogs development on a gogs instance?  Is it not stable enough for that yet?

I'm sure Gogs isn't hosted on an Gogs instance as there aren't the 'Issues' feature yet, like the one we have here...

Gogs is an app, not free storage. Where would they host gogs for free, for everyone? You offering markshep?

Hmm... @theroyalstudent made a good point, thanks!
And there is actually an example of Gogs hosts Gogs... https://try.gogs.io/unknwon/gogs :joy:

@markshep I agree that the project probably should eventually host itself, but I also think it solves a different problem than github. Some people/teams might want their own locally hosted version of Github. That's basically what gogs is, plus it's good to see projects trying to create open source alternatives.

Don't think it's a good idea, you won't get nearly as much attention from random developers. Even Gitlab is still hosted on Github: https://github.com/gitlabhq/gitlabhq

@kasoki GitLab says it just a canonical source and the original one is hosted on GitLab.com

@denisdulici The gitLab source in github is the CE (community edition) version. Installation from source requires a clone of the github repo from one of the stable branches or from the master branch if you want to test latest features (not recommended for production).
It is possible they do the development on their own server and only push features to github when they want. A server where they probably have their private versions of the app. But for community collaboration looks github is what they are using.

Hosting on github is probably the best way to get attention from users/devs that are looking at alternatives ways of hosting git repos, at least for now.

Agree to keep code in github and Sync code to gogs.

Close for now but open for continuing discussion.


Fixed Carthage build

It seems necessary to explicitly set the SWIFT_VERSION build setting on the targets instead of the project to build without Xcode complaining. Perhaps it's something new with Xcode 8.2.

Since Travis is still failing I can't yet merge this.

Do you have an idea what's the reason?

No clue, it's only an issue with Travis as far as I can reproduce. I can't seem to make Xcode 8.2.1 fail to build.


Fix horizontal flip in camera example

Simple fix for #7.
EDIT - oops wrong issue number. fixed.

I only wonder if we shouldn't set it in the constructor instead so that it fixes all demos.

I only wonder if we shouldn't set it in the constructor instead so that it fixes all demos.

That is a better idea. I assumed that was what this does.

Changed fix to be in init instead of user code.


Introduce an example using TLS

The use of TLS connectors with tower-grpc seems to be a common sticking point for this library, see #59 and @ian-p-cooke's example https://github.com/ian-p-cooke/tower-grpc-tls-client-auth-example given in these issues though I've quite lost where. While it is clear that tower-grpc is not responsible for setting up a connector it's not entirely clear, at least to me, how a TlsStream should be hooked up into tower-grpc's machinery.
I've tried to cobble together an up to date example from bits and pieces I've found in conversations here and by reading project docs. You can find it here: https://github.com/blt/spike Unfortunately the client code doesn't compile yet and I don't have a ton of confidence that it would function if it did compile. I'd be interested in thoughts on what needs to change in spike to get it compiling.
Anyhow, would adding a TLS example to this project be a reasonable addition? I'd be happy to contribute something if there were an interest, but I'd need a touch of help.

I’m hoping to get some full stack examples with tower-hyper (as a preview to using real hyper) including TLS. I think this is pending a tower-hyper release which @LucioFranco is leading. I will defer to him on this.

@carllerche i think we need to figure out a tower-http-connection crate to provide a type alias for http connections.

Initial work is being worked on here https://github.com/tower-rs/tower-http/pull/19

Can't wait to see this in. Currently have implemented a server using tower-grpc but am blocked on client functionality because I can't figure out how to get TLS/ALPN working. (I did see https://github.com/tower-rs/tower-grpc/issues/101#issuecomment-479592214 but haven't had success plumbing this over.)

@davidvartan sorry this TLS work has taken a long time as we have been distracted moving to std::Future. What issues are you running into with TLS/ALPN?

Thanks for the reply! So I'm using the example code (with the addition of http_connector.enforce_http(false); which may or may not be supported) and am getting ERR = Status { code: Unknown, message: "h2 protocol error: protocol error: frame with invalid size" }. From some Googling (e.g. https://github.com/hyperium/hyper/issues/1574#issuecomment-399223014) and the comment I linked above it appears that ALPN is what's missing. Am I going about this incorrectly?

So I'm not sure the http_connector from hyper does ALPN negotiation. That said, you should be able to use this example + MakeConnection to produce a AsyncRead + AsyncWrite stream that is http2 ready. I would suggest looking at the open PR for how I went about it. Unfortunately, I'm a bit swamped right now so I will not be able to get to that PR for a long time. That said, feel free to come into the tower gitter and ask some questions :)

@LucioFranco No worries, really appreciate the pointers! Will try to put something together, will post a sample if it works out. :)

I didn't get a chance to look at it yet but there is a working example in https://github.com/tower-rs/tower-grpc/issues/59 (thank you @kiratp)


cosmic-greeter: init at unstable-2023-10-25

Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 266138 run on x86_64-linux 1

1 package built:

cosmic-greeter

How to use it?
the following does not work:
{pkgs, ...}:
{
  services.greetd = {
    enable = true;
    pkgs.greetd.cosmic-greeter;
  };
}
``


Fix doctest after default lr change

Change doctest example to have no all abstain LF
Change doctest example to pass in LR and avoid randomness in output

Test Plan
Existing tests pass

Why does this fix the non-determinism?

Closed in favor of #1327


fly --vars-from does not respect ~ in path

> fly configure -c pipeline.yml --vars-from=~/workspace/some-repo/my-credentials.yml
2015/05/06 08:32:35 open ~/workspace/some-repo/my-credentials.yml: no such file or directory

works fine with full path (or indeed relative path)

This is actually up to the shell's rules; if you do echo ~/foo you'll see /home/alex/foo, but if you do echo bar=~/foo you'll see bar=~/foo. I'm not keen on adding platform-specific interpreting of paths so I'd rather leave it up to the shell. We'll keep this in mind when redesigning the fly CLI though - maybe we can come up with a different format that avoids the issue.


if using .appendHtml, elements are upgraded asynchronously, why?

See custom_element_proxy_test.dart. Can we make this not so?

Not that this only happens in browsers with the shadowdom polyfill active

@jmesserly any idea if the polyfill itself could be introducing this?

CE polyfill is async. It uses MutationObservers to detect new elements. To do better it would have to work more like SD polyfill, and patch innerHTML setter (and appendChild etc). Maybe open an issue on github.com/webcomponents/webcomponentsjs? The risk though is DOM performance might suffer, so not sure if it's worth changing the default.

fair enough, I created https://github.com/webcomponents/webcomponentsjs/issues/169 to track this but its not a blocker for now at least.

closing as not planned, at least for now