combine from a Hash (?)

I'm trying to use rom in order to migrate data from a legacy database to a new one.
In the legacy database I have one single table clients, which have both client and address information for the client, while in the new database I have two tables clients and addresses, related with a foreign key.
For the new database clients mapper I'm using combine method in the following way:
module Destination
  # Destination client mapper
  class Client < ROM::Mapper
    register_as :destination_client
    relation :destination_clients

    reject_keys true
    symbolize_keys

    attribute :name
    attribute :identifier

    combine :address, on: { address_id: :id }, type: :hash do
      attribute :address
    end
  end
end

In the legacy database clients mapper, I'm wrapping address in the following way:
module Origin
  # Origin client mapper
  class Client < ROM::Mapper
    register_as :origin_client
    relation :origin_clients

    reject_keys true
    symbolize_keys

    attribute :name
    attribute :identifier

    wrap :address do
      attribute :address
    end
  end
end

I have checked and doing:
rom.relation(:origin_clients).as(:origin_client).to_a
rom.relation(:destination_clients).combine(addresses.for_clients).as(:destination_client)

works as expected.
Now, I'm trying to populate destination mapper as explained in post Importing data with rom and transproc.
data_origin = rom.relation(:origin_clients).as(:origin_client).to_a
data_destination = Destination::Client.build.call(data_origin)

But I get following error:
no implicit conversion of Symbol into Integer
/home/marc/.gem/ruby/2.2.2/gems/transproc-0.3.0/lib/transproc/array.rb:163:in `values_at'
/home/marc/.gem/ruby/2.2.2/gems/transproc-0.3.0/lib/transproc/array.rb:163:in `block (2 levels) in combine'
/home/marc/.gem/ruby/2.2.2/gems/transproc-0.3.0/lib/transproc/array.rb:152:in `each'
/home/marc/.gem/ruby/2.2.2/gems/transproc-0.3.0/lib/transproc/array.rb:152:in `each_with_index'
/home/marc/.gem/ruby/2.2.2/gems/transproc-0.3.0/lib/transproc/array.rb:152:in `block in combine'
/home/marc/.gem/ruby/2.2.2/gems/transproc-0.3.0/lib/transproc/array.rb:149:in `each'
/home/marc/.gem/ruby/2.2.2/gems/transproc-0.3.0/lib/transproc/array.rb:149:in `map'
/home/marc/.gem/ruby/2.2.2/gems/transproc-0.3.0/lib/transproc/array.rb:149:in `combine'
/home/marc/.gem/ruby/2.2.2/gems/transproc-0.3.0/lib/transproc/function.rb:47:in `[]'
/home/marc/.gem/ruby/2.2.2/gems/transproc-0.3.0/lib/transproc/function.rb:47:in `call'
/home/marc/.gem/ruby/2.2.2/gems/transproc-0.3.0/lib/transproc/composite.rb:30:in `call'
/home/marc/.gem/ruby/2.2.2/gems/rom-0.8.1/lib/rom/mapper.rb:100:in `block in call'
/home/marc/.gem/ruby/2.2.2/gems/rom-0.8.1/lib/rom/mapper.rb:100:in `each'
/home/marc/.gem/ruby/2.2.2/gems/rom-0.8.1/lib/rom/mapper.rb:100:in `reduce'
/home/marc/.gem/ruby/2.2.2/gems/rom-0.8.1/lib/rom/mapper.rb:100:in `call'

Is it possible to take data from a Hash and map to a mapper which is using combine?
Thanks

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/25156248-combine-from-a-hash?utm_campaign=plugin&utm_content=tracker%2F155789&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F155789&utm_medium=issues&utm_source=github).

If you already have a nested input there's no need to map it further. Just define a command that takes a client with nested address and that's it. Combine transformation is used to join parent and its child collections in memory using provided join keys. Typically you use it for eager-loading of associations.
Anyhow, something like that should work:
class CreateClient < ROM::Commands::Create[:sql]
  relation :clients
  result :one
end

class CreateAddress < ROM::Commands::Create[:sql]
  relation :clients
  result :one

  associates :client, key: [:client_id, :id]
end

create_client_with_address = rom.command([
  { client: :clients }, [:create, [{ address: :addresses }, :create]]
])

create_client_with_address.call(
  client: { name: 'a', identifier: 'b', address: { address: 'some address' } }
)

Lemme know if that works.

Many thanks for your response.
I was begining to smell redundance in that second mapper :) Anyway, for someone who could be interested in mapping from a nested hash, embedded did the trick.
So, just out of curiosity, is combined in mapper API tied to relational databases?
Now, about my problem. First, just a detail, my foreign key is in client and not in address, because there is another model which can share addresses with clients.
So, following your advice, here they are my commands:
class CreateAddress < ROM::Commands::Create[:sql]
  relation :destination_addresses
  register_as :create

  result :one
end

class CreateClient < ROM::Commands::Create[:sql]
  relation :destination_clients
  register_as :create

  result :one

  associates :address, key: [:address_id, :id]
end

And here it is how I'm trying to do:
clients_data = rom.relation(:origin_clients).as(:client).to_a
create_client_with_address = rom.command([
  { address: :destination_addresses }, [:create, [{ client: :destination_clients }, :create]]
])
clients_data.each do |data|
  # One example data:
  #
  # {:name=>"Some dummy name", :identifier=>1, :address=>{:address=>"Some dummy address", :zip=>"A_zip", :town=>"A town", :region=>"A region", :created_at=>2015-07-31 10:41:08 +0200, :updated_at=>2015-07-31 10:41:08 +0200}}
  create_client_with_address.call(client: data)
end

(Later I'll try to do it in one step, instead of iterating, but now I'm not worrying about it).
But I'm getting this error, complaining about missing address key:
ROM::CommandFailure: command: #<ROM::Commands::Lazy:0xb1e0683c @command=#<RagasMigration::Commands::CreateAddress relation=#<RagasMigration$
:Relations::Destination::Addresses dataset=#<Sequel::Postgres::Dataset: "SELECT * FROM \"addresses\"">> options={:input=>Hash, :validator=>$
<Proc:0xb9a1287c@/home/marc/.gem/ruby/2.2.2/gems/rom-0.8.1/lib/rom/command.rb:15>, :result=>:one, :curry_args=>[]}>, @evaluator=#<Proc:0xb1$
06878@/home/marc/.gem/ruby/2.2.2/gems/rom-0.8.1/lib/rom/commands/graph/class_interface.rb:38 (lambda)>>; original message: command: #<ROM::$
ommands::Lazy:0xb1e0683c @command=#<RagasMigration::Commands::CreateAddress relation=#<RagasMigration::Relations::Destination::Addresses da$
aset=#<Sequel::Postgres::Dataset: "SELECT * FROM \"addresses\"">> options={:input=>Hash<EMAIL_ADDRESS>2.2.2/gems/rom-0.8.1/lib/rom/command.rb:15>, :result=>:one, :curry_args=>[]}><EMAIL_ADDRESS>rom-0.8.1/lib/rom/commands/graph/class_interface.rb:38 (lambda)>>; original message: key not found: :address
/home/marc/.gem/ruby/2.2.2/gems/rom-0.8.1/lib/rom/commands/graph/class_interface.rb:47:in `fetch'
/home/marc/.gem/ruby/2.2.2/gems/rom-0.8.1/lib/rom/commands/graph/class_interface.rb:47:in `block (2 levels) in build_command'
/home/marc/.gem/ruby/2.2.2/gems/rom-0.8.1/lib/rom/commands/graph/class_interface.rb:47:in `each'
/home/marc/.gem/ruby/2.2.2/gems/rom-0.8.1/lib/rom/commands/graph/class_interface.rb:47:in `reduce'
/home/marc/.gem/ruby/2.2.2/gems/rom-0.8.1/lib/rom/commands/graph/class_interface.rb:47:in `block in build_command'
/home/marc/.gem/ruby/2.2.2/gems/rom-0.8.1/lib/rom/commands/lazy.rb:37:in `[]'
/home/marc/.gem/ruby/2.2.2/gems/rom-0.8.1/lib/rom/commands/lazy.rb:37:in `call'
/home/marc/.gem/ruby/2.2.2/gems/rom-0.8.1/lib/rom/commands/graph.rb:54:in `call'
/home/marc/projects/clients_webs/ragas_migration/Rakefile:18:in `block (4 levels) in <top (required)>'
/home/marc/projects/clients_webs/ragas_migration/Rakefile:17:in `each'
/home/marc/projects/clients_webs/ragas_migration/Rakefile:17:in `block (3 levels) in <top (required)>'

Bonus: In fact I have two problems, because it seems that attribues inside a wrap block override and let without effect attributes with the same name outside the wrap block. I state this here because maybe it is just a silly thing done by me, but if it is an unrelated bug tell me and I'll open another separated issue.
My mapper is:
class Client < ROM::Mapper
    register_as :client
    relation :origin_clients

    reject_keys true
    symbolize_keys

    attribute :name
    attribute :identifier, from: :id
    attribute(:created_at) { Time.now }
    attribute(:updated_at) { Time.now }

    wrap :address do
      attribute :address
      attribute :zip, from: :codigo_postal
      attribute :town, from: :poblacion
      attribute :region, from: :provincia
      attribute(:created_at) { Time.now }
      attribute(:updated_at) { Time.now }
    end
  end
end

But as you can see I'm not getting top level created_at and updated_at, but just the ones inside address wrap:
  {:name=>"Some dummy name", :identifier=>1, :address=>{:address=>"Some dummy address", :zip=>"A_zip", :town=>"A town", :region=>"A region", :created_at=>2015-07-31 10:41:08 +0200, :updated_at=>2015-07-31 10:41:08 +0200}}

Again, many thanks for your help. If it is getting a thing to be discussed outside github issues, please tell me how I can reach you.

@waiting-for-dev Concerning your last update.
The problem is that wrap operation removes from root those attributes, that have been wrapped. There is no way to wrap attributes and add their substitutes (under the same name) at once (in one step).
As a solution I'd propose doing this in 2 steps (though it is ~2 times slower):
class Client < ROM::Mapper
    register_as :client
    relation :origin_clients

    reject_keys true
    symbolize_keys

    step do
      attribute :name
      attribute :identifier

      wrap :address do
        attribute :address
        attribute :zip
        attribute :town
        attribute :region
        attribute(:created_at) { Time.now }  # this will remove attributes from root
        attribute(:updated_at) { Time.now } # and this is too
      end
    end
  end

  step do
    attribute(:created_at) { Time.now }  # now we restore them at the root
    attribute(:updated_at) { Time.now }
  end
end

I would also recommend not using reject_keys since data are coming from your relations that you can trust.
Regarding composed commands - the input needs to have :address in the root if you configured { address: :destination_address } as it means "there will be :address key with its attributes and handle it use destination_address relation.
This is the latest addition to the API so as you can see error handling is pretty rough :) It's high on my priority list to improve it as I rely on it heavily already.

Thanks a lot both for your help.
About wrap option. Do you think that this should be the behaviour? I understand the logic about removing it from top level and nesting it, but I think it is not a too weird use case willing to have two attributes with the same name in both levels, even if one of them is not actually mapped but generated on-the-fly.
About my problem... I changed my mapper to wrap both address and client in order to have both at top level (by the way, doing so I can have both created_at attributes):
class Client < ROM::Mapper
  register_as :client
  relation :origin_clients

  symbolize_keys

  wrap :client do
    attribute :name
    attribute :identifier
    attribute(:created_at) { Time.now }
    attribute(:updated_at) { Time.now }
  end

  wrap :address do
    attribute :address
    attribute :zip
    attribute :town
    attribute :region
    attribute(:created_at) { Time.now }
    attribute(:updated_at) { Time.now }
  end
end

Now, command:
rom.command([
    { address: :destination_addresses }, [:create, [{ client: :destination_clients }, :create]]
    ])

successfully creates first address but then it fails with KeyError: key not found: :client.
Does that syntax in command mean that client key must be nested within address? I have tried this, but then sql statement fails with underfined column client for addresses table.
Many thanks.

Yes, you need to wrap client inside address because the structure of the input defines hierarchy, so if client has an address it means it must be nested inside address hash.
Unfortunately for now you need to explicitly define input for commands so that it will reject those extra keys coming from combine commands, I consider it a bug and will fix it soon, commands should skip those keys automatically, so for now do this:
class CreateClient < ROM::Commands::Create[:sql]
  class Attributes
    include ROM::Model::Attributes # this comes from rom-rails
    attribute :name
    attribute :identifier
  end

  input Attributes

  relation :destination_clients
  register_as :create

  result :one

  associates :address, key: [:address_id, :id]
end

This will only accept specified keys, it's more like a workaround for now. I'll improve that in 0.8.2. Now I have even bigger motivation :)

Hey, many, many thanks again :)
Now, it is working :D
Just two considerations to let you know:

I know that having Model in rom-rails gem is temporary, but, for the sake of information, I have had to also add activemodel in my gemspec file and require it just before rails/model.

Finally, I have to use two step in my model (are you still sure that this shouldn't be considered a bug or feature request? :D). Also, I can't get a hash like { address: ... {client: ...} }, because then my mapper should have:

step do
  wrap(:address) do
    attribute :address

    wrap(:client) do
      attribute :address
      attribute(:created_at) { Time.now }
    end
  end
end

step do
  wrap(:address) do
    attribute(:created_at) { Time.now }
  end
end

which would result in address attribute for address key being nil.  I'm very grateful of "top names" like you not being vain and helping less experienced developers. I have been waiting for rom for a long time, I think it is one of the best things that can happen to ruby right now (it needs it, mainly rails).

Awesome to know it worked for you :) Sorry about the quirks, I'll be fixing / improving things in next releases.
Regarding require issues - I gotta fix that, there's a big emphasis put in ROM on proper requires so that each component should be "requireable" separately.
As far as multi-step wrap goes, you only need wrap once, in the second step you can access wrapped address with embedded :address, type: :hash { attribute(:created_at) { Time.now } } BUT I would recommend setting default values inside commands as its closer to the database. Model::Attributes supports timestamps macro that will do it for you.
As a general rule I try to keep mappers only concerned about the structure of the output, setting values feels to close to the domain or db.
I'm always happy to provide help, thanks for the kind words :)

ps. I reported #294 about that require problem in rom/model

Ok, thanks about the embedded tip, I'll do it. Also I'll check about setting default values in the commands, I have to look closer to the commands API. But it makes all the sense :)

I hope things are working well for you. Gonna close this one for now. Please report issues if you have trouble with anything.


Windows dependency

I suspect by the inclusion of a .bat file in the repository, the software is primarily intended for and/or tested on a Windows machine? If so, please mention in the documentation that it is for Windows only. If it is supposed to be a cross-platform software, mention the extent that you have tested the compatibility. I personally failed to get it installed on a Mac, but can open a separate issue for us to try and resolve if you intend on offering support. No pressure to offer cross-platform support, just wanting the dependencies to clear in the documentation (as per JOSS review criteria).

It looks like the language about only being tested on Windows disappeared from the docs when I updated them for the JOSS submission... I would like to offer cross-platform support, I just haven't tested it quite yet. I do know that the full install will not work on mac since some of the supported sources (Whisker) are Windows only. So an issue showing what isn't working on a Mac install would definitely be helpful.


Should we lint and format code of swift-format with swift-format?

I was working on a prototype for #607 and noticed a few lines with trailing spaces here and there, and thought I'd check for formatting rules. Apologies if I missed this in contributing docs, but it seems that:

The repository is not using any formatting tool explicitly
No .swift-format configuration in particular
No formatting preference documented in CONTRIBUTING.md or Documentation/Development.md
There is Scripts/format-diff.sh[Scripts/format-diff.sh], though, but I don't know if it's hooked up in a CI (and no GitHub CI checks are set up, seemingly?)

How are we doing now?
I tried running the default configuration, and swift-format is a bit angry with itself:

There are 266 offenses:

$ swift-format lint --recursive Sources
Sources/SwiftFormatConfiguration/Configuration.swift:222:1: warning: [Indentation] indent by 2 spaces
Sources/SwiftFormatConfiguration/Configuration.swift:237:1: warning: [Indentation] indent by 2 spaces
Sources/SwiftFormatConfiguration/Configuration.swift:261:1: warning: [LineLength] line is too long
Sources/SwiftFormatConfiguration/Configuration.swift:263:1: warning: [LineLength] line is too long
Sources/SwiftFormatConfiguration/Configuration.swift:264:1: warning: [LineLength] line is too long
Sources/SwiftFormatConfiguration/Configuration.swift:265:1: warning: [LineLength] line is too long
Sources/swift-format/Frontend/LintFrontend.swift:36:29: warning: [AddLines] add 1 line break
Sources/swift-format/Frontend/LintFrontend.swift:37:1: warning: [Indentation] unindent by 2 spaces
Sources/swift-format/Frontend/LintFrontend.swift:38:1: warning: [Indentation] unindent by 2 spaces
Sources/swift-format/Frontend/LintFrontend.swift:39:1: warning: [Indentation] unindent by 2 spaces
Sources/swift-format/Frontend/LintFrontend.swift:40:1: warning: [Indentation] unindent by 2 spaces
Sources/swift-format/Frontend/LintFrontend.swift:41:1: warning: [Indentation] unindent by 2 spaces
Sources/swift-format/Frontend/Frontend.swift:17:1: warning: [OrderedImports] sort import statements lexicographically
Sources/swift-format/Frontend/Frontend.swift:112:10: warning: [AddLines] add 1 line break
Sources/swift-format/Frontend/Frontend.swift:113:1: warning: [Indentation] indent by 2 spaces
Sources/swift-format/Frontend/Frontend.swift:114:1: warning: [Indentation] indent by 2 spaces
Sources/swift-format/Frontend/Frontend.swift:194:1: warning: [LineLength] line is too long
Sources/swift-format/Frontend/FormatFrontend.swift:43:77: warning: [ReturnVoidInsteadOfEmptyTuple] replace '()' with 'Void'
Sources/swift-format/Subcommands/LintFormatOptions.swift:46:9: warning: [AddLines] add 1 line break
Sources/swift-format/Subcommands/LintFormatOptions.swift:47:1: warning: [Indentation] indent by 2 spaces
Sources/swift-format/Subcommands/LintFormatOptions.swift:48:1: warning: [Indentation] indent by 2 spaces
Sources/swift-format/Subcommands/LintFormatOptions.swift:49:1: warning: [Indentation] indent by 2 spaces
Sources/swift-format/Utilities/DiagnosticsEngine.swift:15:1: warning: [OrderedImports] sort import statements lexicographically
Sources/swift-format/Utilities/FormatError.swift:23:2: warning: [RemoveLine] remove line break
Sources/swift-format/Utilities/FileIterator.swift:101:15: warning: [AddLines] add 1 line break
Sources/swift-format/Utilities/FileIterator.swift:101:21: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/Verbatim.swift:118:1: warning: [FileScopedDeclarationPrivacy] replace 'fileprivate' with 'private' on file-scoped declarations
Sources/SwiftFormat/PrettyPrint/PrettyPrint.swift:293:10: warning: [NoParensAroundConditions] remove the parentheses around this expression
Sources/SwiftFormat/PrettyPrint/PrettyPrint.swift:293:10: warning: [NoParensAroundConditions] remove the parentheses around this expression
Sources/SwiftFormat/PrettyPrint/PrettyPrint.swift:293:10: warning: [NoParensAroundConditions] remove the parentheses around this expression
Sources/SwiftFormat/PrettyPrint/PrettyPrint.swift:147:18: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/PrettyPrint.swift:334:40: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/PrettyPrint.swift:358:34: warning: [RemoveLine] remove line break
Sources/SwiftFormat/PrettyPrint/PrettyPrint.swift:359:12: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/PrettyPrint.swift:410:42: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/PrettyPrint.swift:415:40: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:31:1: warning: [FileScopedDeclarationPrivacy] replace 'fileprivate' with 'private' on file-scoped declarations
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3969:1: warning: [FileScopedDeclarationPrivacy] replace 'fileprivate' with 'private' on file-scoped declarations
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:4002:1: warning: [FileScopedDeclarationPrivacy] replace 'fileprivate' with 'private' on file-scoped declarations
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:4016:1: warning: [FileScopedDeclarationPrivacy] replace 'fileprivate' with 'private' on file-scoped declarations
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:18:1: warning: [NoAccessLevelOnExtensionDeclaration] move this 'fileprivate' access modifier to precede each member inside this extension
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:21:3: note: add 'fileprivate' access modifier to this declaration
/Users/nategadzhi/src/apple/swift-format/Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:1136:76: warning: [TrailingComma] remove trailing comma from the last element in single line collection literal
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:19:75: warning: [TrailingWhitespace] remove trailing whitespace
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:237:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:329:31: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:354:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:391:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:394:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:506:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:531:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:567:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:568:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:586:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:593:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:604:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:605:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:644:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:664:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:665:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:698:30: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:707:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:708:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:733:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:787:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:801:100: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:1037:100: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:1038:100: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:1038:131: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:1040:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:1215:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:1223:15: warning: [Spacing] remove 1 space
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:1234:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:1271:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:1424:75: warning: [TrailingWhitespace] remove trailing whitespace
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:1425:64: warning: [TrailingWhitespace] remove trailing whitespace
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:1426:77: warning: [TrailingWhitespace] remove trailing whitespace
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:1476:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:1503:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:1545:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:1632:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:1646:1: warning: [Indentation] unindent by 1 spaces
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:1646:62: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:1848:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:2418:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:2489:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:2490:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:2518:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:2599:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:2980:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3033:1: warning: [Indentation] indent by 2 spaces
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3033:8: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3148:31: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3148:34: warning: [RemoveLine] remove line break
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3518:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3523:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3636:40: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3636:48: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3637:1: warning: [Indentation] indent by 2 spaces
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3638:1: warning: [Indentation] indent by 2 spaces
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3638:7: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3665:1: warning: [Indentation] unindent by 1 spaces
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3666:1: warning: [Indentation] unindent by 1 spaces
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3707:1: warning: [LineLength] line is too long
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3757:38: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3757:41: warning: [RemoveLine] remove line break
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3758:74: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3842:49: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3842:52: warning: [RemoveLine] remove line break
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3843:65: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3973:1: warning: [Indentation] unindent by 2 spaces
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:3974:1: warning: [Indentation] unindent by 2 spaces
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:4024:16: warning: [Spacing] add 1 space
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:4061:62: warning: [Spacing] remove 1 space
Sources/SwiftFormat/PrettyPrint/TokenStreamCreator.swift:4062:63: warning: [Spacing] remove 1 space
Sources/SwiftFormat/PrettyPrint/WhitespaceLinter.swift:327:10: warning: [AddLines] add 1 line break
Sources/SwiftFormat/PrettyPrint/WhitespaceLinter.swift:328:1: warning: [Indentation] indent by 2 spaces
Sources/SwiftFormat/Core/LegacyTriviaBehavior.swift:29:1: warning: [LineLength] line is too long
Sources/SwiftFormat/Core/FormatPipeline.swift:29:3: warning: [UseSynthesizedInitializer] remove this explicit initializer, which is identical to the compiler-synthesized initializer
Sources/SwiftFormat/Core/DocumentationCommentText.swift:70:7: warning: [RemoveLine] remove line break
Sources/SwiftFormat/Core/DocumentationCommentText.swift:72:1: warning: [Indentation] unindent by 2 spaces
Sources/SwiftFormat/Core/DocumentationCommentText.swift:73:1: warning: [Indentation] unindent by 2 spaces
Sources/SwiftFormat/Core/DocumentationCommentText.swift:74:1: warning: [Indentation] unindent by 4 spaces
Sources/SwiftFormat/Core/DocumentationCommentText.swift:75:1: warning: [Indentation] unindent by 4 spaces
Sources/SwiftFormat/Core/DocumentationCommentText.swift:76:1: warning: [Indentation] unindent by 2 spaces
Sources/SwiftFormat/Core/DocumentationCommentText.swift:77:1: warning: [Indentation] unindent by 2 spaces
Sources/SwiftFormat/Core/DocumentationCommentText.swift:78:1: warning: [Indentation] unindent by 2 spaces
Sources/SwiftFormat/Core/DocumentationCommentText.swift:79:1: warning: [Indentation] unindent by 2 spaces
Sources/SwiftFormat/Core/DocumentationCommentText.swift:80:1: warning: [Indentation] unindent by 2 spaces
Sources/SwiftFormat/Core/RuleNameCache+Generated.swift:18:1: warning: [LineLength] line is too long
Sources/SwiftFormat/Core/RuleNameCache+Generated.swift:21:1: warning: [LineLength] line is too long
Sources/SwiftFormat/Core/RuleNameCache+Generated.swift:30:1: warning: [LineLength] line is too long
Sources/SwiftFormat/Core/RuleNameCache+Generated.swift:53:1: warning: [LineLength] line is too long
Sources/SwiftFormat/Core/RuleMask.swift:95:1: warning: [FileScopedDeclarationPrivacy] replace 'fileprivate' with 'private' on file-scoped declarations
Sources/SwiftFormat/Core/Context.swift:17:1: warning: [OrderedImports] sort import statements lexicographically
Sources/SwiftFormat/Core/Rule.swift:64:1: warning: [Indentation] unindent by 2 spaces
Sources/SwiftFormat/Core/Rule.swift:65:1: warning: [Indentation] unindent by 2 spaces
Sources/SwiftFormat/Core/Rule.swift:66:1: warning: [Indentation] unindent by 2 spaces
Sources/SwiftFormat/Core/Rule.swift:67:1: warning: [Indentation] unindent by 2 spaces
Sources/SwiftFormat/Core/Trivia+Convenience.swift:50:21: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Core/Trivia+Convenience.swift:51:1: warning: [Indentation] indent by 2 spaces
Sources/SwiftFormat/Core/Trivia+Convenience.swift:52:1: warning: [Indentation] indent by 2 spaces
Sources/SwiftFormat/Core/Trivia+Convenience.swift:53:1: warning: [Indentation] indent by 2 spaces
Sources/SwiftFormat/Core/Trivia+Convenience.swift:54:1: warning: [Indentation] indent by 2 spaces
Sources/SwiftFormat/Core/AddModifierRewriter.swift:15:1: warning: [FileScopedDeclarationPrivacy] replace 'fileprivate' with 'private' on file-scoped declarations
Sources/SwiftFormat/Core/DocumentationComment.swift:278:1: warning: [TrailingWhitespace] remove trailing whitespace
Sources/SwiftFormat/Rules/NoCasesWithOnlyFallthrough.swift:61:1: warning: [LineLength] line is too long
Sources/SwiftFormat/Rules/NoCasesWithOnlyFallthrough.swift:143:97: warning: [RemoveLine] remove line break
Sources/SwiftFormat/Rules/NoCasesWithOnlyFallthrough.swift:186:27: warning: [TrailingWhitespace] remove trailing whitespace
Sources/SwiftFormat/Rules/NoCasesWithOnlyFallthrough.swift:191:36: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/NoCasesWithOnlyFallthrough.swift:191:44: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/NoCasesWithOnlyFallthrough.swift:192:1: warning: [Indentation] indent by 2 spaces
Sources/SwiftFormat/Rules/NoCasesWithOnlyFallthrough.swift:196:1: warning: [LineLength] line is too long
/Users/nategadzhi/src/apple/swift-format/Sources/SwiftFormat/Rules/UseShorthandTypeNames.swift:278:76: warning: [TrailingComma] remove trailing comma from the last element in single line collection literal
/Users/nategadzhi/src/apple/swift-format/Sources/SwiftFormat/Rules/UseShorthandTypeNames.swift:304:28: warning: [TrailingComma] remove trailing comma from the last element in single line collection literal
Sources/SwiftFormat/Rules/UseShorthandTypeNames.swift:96:28: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/UseShorthandTypeNames.swift:96:52: warning: [TrailingWhitespace] remove trailing whitespace
Sources/SwiftFormat/Rules/UseShorthandTypeNames.swift:181:28: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/UseShorthandTypeNames.swift:181:52: warning: [TrailingWhitespace] remove trailing whitespace
Sources/SwiftFormat/Rules/UseShorthandTypeNames.swift:557:1: warning: [Indentation] unindent by 1 spaces
Sources/SwiftFormat/Rules/ReturnVoidInsteadOfEmptyTuple.swift:38:1: warning: [Indentation] unindent by 2 spaces
Sources/SwiftFormat/Rules/ReturnVoidInsteadOfEmptyTuple.swift:38:71: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/ReturnVoidInsteadOfEmptyTuple.swift:66:1: warning: [Indentation] unindent by 2 spaces
Sources/SwiftFormat/Rules/ReturnVoidInsteadOfEmptyTuple.swift:66:71: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/ReturnVoidInsteadOfEmptyTuple.swift:83:1: warning: [LineLength] line is too long
Sources/SwiftFormat/Rules/ReturnVoidInsteadOfEmptyTuple.swift:102:95: warning: [RemoveLine] remove line break
Sources/SwiftFormat/Rules/TypeNamesShouldBeCapitalized.swift:19:48: warning: [Spacing] remove 1 space
Sources/SwiftFormat/Rules/TypeNamesShouldBeCapitalized.swift:62:1: warning: [Indentation] unindent by 1 spaces
Sources/SwiftFormat/Rules/TypeNamesShouldBeCapitalized.swift:62:51: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/UseSynthesizedInitializer.swift:194:1: warning: [FileScopedDeclarationPrivacy] replace 'fileprivate' with 'private' on file-scoped declarations
Sources/SwiftFormat/Rules/UseSynthesizedInitializer.swift:209:1: warning: [FileScopedDeclarationPrivacy] replace 'fileprivate' with 'private' on file-scoped declarations
Sources/SwiftFormat/Rules/UseSynthesizedInitializer.swift:70:1: warning: [LineLength] line is too long
Sources/SwiftFormat/Rules/UseSynthesizedInitializer.swift:128:1: warning: [LineLength] line is too long
Sources/SwiftFormat/Rules/UseSynthesizedInitializer.swift:129:8: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/UseSynthesizedInitializer.swift:129:21: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/UseSynthesizedInitializer.swift:213:1: warning: [LineLength] line is too long
Sources/SwiftFormat/Rules/UseSynthesizedInitializer.swift:216:1: warning: [LineLength] line is too long
Sources/SwiftFormat/Rules/UseWhereClausesInForLoops.swift:97:1: warning: [FileScopedDeclarationPrivacy] replace 'fileprivate' with 'private' on file-scoped declarations
Sources/SwiftFormat/Rules/UseWhereClausesInForLoops.swift:58:1: warning: [Indentation] unindent by 2 spaces
Sources/SwiftFormat/Rules/UseWhereClausesInForLoops.swift:108:42: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/NoVoidReturnOnFunctionSignature.swift:27:1: warning: [LineLength] line is too long
Sources/SwiftFormat/Rules/NoVoidReturnOnFunctionSignature.swift:31:1: warning: [LineLength] line is too long
Sources/SwiftFormat/Rules/ValidateDocumentationComments.swift:143:1: warning: [FileScopedDeclarationPrivacy] replace 'fileprivate' with 'private' on file-scoped declarations
Sources/SwiftFormat/Rules/ValidateDocumentationComments.swift:157:1: warning: [FileScopedDeclarationPrivacy] replace 'fileprivate' with 'private' on file-scoped declarations
Sources/SwiftFormat/Rules/ValidateDocumentationComments.swift:110:1: warning: [Indentation] unindent by 1 spaces
Sources/SwiftFormat/Rules/OneCasePerLine.swift:93:96: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/GroupNumericLiterals.swift:62:28: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/NeverUseImplicitlyUnwrappedOptionals.swift:44:97: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/NeverUseImplicitlyUnwrappedOptionals.swift:44:116: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/NeverUseImplicitlyUnwrappedOptionals.swift:60:95: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/NoAccessLevelOnExtensionDeclaration.swift:37:27: warning: [RemoveLine] remove line break
Sources/SwiftFormat/Rules/NoAccessLevelOnExtensionDeclaration.swift:38:32: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/NoAccessLevelOnExtensionDeclaration.swift:102:22: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/NoAccessLevelOnExtensionDeclaration.swift:103:1: warning: [Indentation] indent by 2 spaces
Sources/SwiftFormat/Rules/NoAccessLevelOnExtensionDeclaration.swift:104:1: warning: [LineLength] line is too long
Sources/SwiftFormat/Rules/NoAccessLevelOnExtensionDeclaration.swift:104:1: warning: [Indentation] indent by 2 spaces
Sources/SwiftFormat/Rules/NoAccessLevelOnExtensionDeclaration.swift:105:1: warning: [Indentation] indent by 2 spaces
Sources/SwiftFormat/Rules/AllPublicDeclarationsHaveDocumentation.swift:54:1: warning: [LineLength] line is too long
Sources/SwiftFormat/Rules/NoLabelsInCasePatterns.swift:53:1: warning: [LineLength] line is too long
Sources/SwiftFormat/Rules/FileScopedDeclarationPrivacy.swift:59:25: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/FileScopedDeclarationPrivacy.swift:65:25: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/FileScopedDeclarationPrivacy.swift:71:25: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/FileScopedDeclarationPrivacy.swift:77:25: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/FileScopedDeclarationPrivacy.swift:83:25: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/FileScopedDeclarationPrivacy.swift:89:25: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/FileScopedDeclarationPrivacy.swift:95:25: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/OrderedImports.swift:262:1: warning: [FileScopedDeclarationPrivacy] replace 'fileprivate' with 'private' on file-scoped declarations
Sources/SwiftFormat/Rules/OrderedImports.swift:269:1: warning: [FileScopedDeclarationPrivacy] replace 'fileprivate' with 'private' on file-scoped declarations
Sources/SwiftFormat/Rules/OrderedImports.swift:286:1: warning: [FileScopedDeclarationPrivacy] replace 'fileprivate' with 'private' on file-scoped declarations
Sources/SwiftFormat/Rules/OrderedImports.swift:352:1: warning: [FileScopedDeclarationPrivacy] replace 'fileprivate' with 'private' on file-scoped declarations
Sources/SwiftFormat/Rules/OrderedImports.swift:421:1: warning: [FileScopedDeclarationPrivacy] replace 'fileprivate' with 'private' on file-scoped declarations
Sources/SwiftFormat/Rules/OrderedImports.swift:135:20: warning: [TrailingWhitespace] remove trailing whitespace
Sources/SwiftFormat/Rules/OneVariableDeclarationPerLine.swift:205:2: warning: [RemoveLine] remove line break
Sources/SwiftFormat/Rules/FullyIndirectEnum.swift:92:14: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/FullyIndirectEnum.swift:93:1: warning: [Indentation] indent by 2 spaces
Sources/SwiftFormat/Rules/FullyIndirectEnum.swift:94:1: warning: [Indentation] indent by 2 spaces
Sources/SwiftFormat/Rules/FullyIndirectEnum.swift:94:10: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/DontRepeatTypeInStaticProperties.swift:68:1: warning: [LineLength] line is too long
Sources/SwiftFormat/Rules/AlwaysUseLowerCamelCase.swift:189:1: warning: [FileScopedDeclarationPrivacy] replace 'fileprivate' with 'private' on file-scoped declarations
Sources/SwiftFormat/Rules/ReplaceForEachWithForLoop.swift:19:45: warning: [Spacing] remove 1 space
Sources/SwiftFormat/Rules/ReplaceForEachWithForLoop.swift:23:62: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/ReplaceForEachWithForLoop.swift:23:65: warning: [RemoveLine] remove line break
Sources/SwiftFormat/Rules/ReplaceForEachWithForLoop.swift:24:48: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/ReplaceForEachWithForLoop.swift:33:1: warning: [Indentation] unindent by 4 spaces
Sources/SwiftFormat/Rules/ReplaceForEachWithForLoop.swift:33:39: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/NoAssignmentInExpressions.swift:68:72: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/NoAssignmentInExpressions.swift:124:10: warning: [RemoveLine] remove line break
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:30:1: warning: [Indentation] unindent by 4 spaces
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:31:1: warning: [Indentation] unindent by 4 spaces
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:31:65: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:44:1: warning: [Indentation] unindent by 4 spaces
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:45:1: warning: [Indentation] unindent by 4 spaces
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:46:1: warning: [Indentation] unindent by 4 spaces
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:47:1: warning: [Indentation] unindent by 4 spaces
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:47:66: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:59:1: warning: [Indentation] unindent by 4 spaces
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:59:66: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:72:1: warning: [Indentation] unindent by 4 spaces
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:72:72: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:73:1: warning: [Indentation] unindent by 1 spaces
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:81:100: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:86:12: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:87:1: warning: [Indentation] indent by 2 spaces
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:88:1: warning: [Indentation] indent by 2 spaces
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:88:15: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:93:1: warning: [Indentation] unindent by 4 spaces
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:93:67: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:97:12: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:98:1: warning: [Indentation] indent by 2 spaces
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:99:1: warning: [Indentation] indent by 2 spaces
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:99:9: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:126:1: warning: [Indentation] unindent by 1 spaces
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:126:63: warning: [AddLines] add 1 line break
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:126:68: warning: [RemoveLine] remove line break
Sources/SwiftFormat/Rules/OmitExplicitReturns.swift:131:1: warning: [LineLength] line is too long
Sources/SwiftFormat/Rules/NeverForceUnwrap.swift:37:1: warning: [LineLength] line is too long
Sources/SwiftFormat/Rules/NeverForceUnwrap.swift:47:1: warning: [LineLength] line is too long
Sources/_SwiftFormatTestSupport/DiagnosingTestCase.swift:5:1: warning: [OrderedImports] sort import statements lexicographically
Sources/_SwiftFormatTestSupport/MarkedText.swift:54:1: warning: [LineLength] line is too long
Sources/generate-pipeline/RuleCollector.swift:15:1: warning: [OrderedImports] sort import statements lexicographically
Sources/generate-pipeline/main.swift:19:21: warning: [AddLines] add 1 line break
Sources/generate-pipeline/main.swift:22:19: warning: [AddLines] add 1 line break
Sources/generate-pipeline/main.swift:26:23: warning: [AddLines] add 1 line break
Sources/generate-pipeline/main.swift:30:24: warning: [AddLines] add 1 line break
Sources/generate-pipeline/RuleNameCacheGenerator.swift:51:1: warning: [LineLength] line is too long
Sources/generate-pipeline/RuleNameCacheGenerator.swift:55:2: warning: [RemoveLine] remove line break

What should we do about it?

Most SSWG projects use nicklockwood/SwiftFormat, but swift-syntax uses swift-format and indents with two spaces — I'm in the beginner league, and not sure how that will evolve long-term, but it does seem reasonable to suggest using swift-format for this repo source code?
We can adopt https://github.com/apple/swift-syntax/blob/main/format.py script from swift-syntax, and perhaps use consistent .swift-format rules as well — their config is pretty minimal.

Why bother at all?
I get an itch to commit those formatting cleanups, but as they are not related to a particular issue I'm working on, they're distracting for myself and for folks who would review my code. It's probably a good idea to clean them up in a single pass. Plus, that will make swift-format consistent with swift-syntax for both ourselves, and community contributors like myself.
TODOs
If generally adding formatting and linting to CI seems like a good idea, and if we confirm that swift-syntax format.py is a good starting point, then:

[ ] We should set up the formatting script in the repository, run it, and get the cleanup PR merged in.
[ ] We should update Documentation/Development.md and CONTRIBUTING.md to mention them.
[ ] Could we also set up the CI?

I'm happy to help in any way I can — and can start with the first two items on this list.

I think in an ideal setup, .git/hooks/pre-commit would run both the format + lint command on every commit. Then on PRs, format would run to fix automatically fixable errors and lint would then run to annotate remaining errors and fail the check, and on merges to main, format would run and commit the changes.
Since .git/hooks/pre-commit is outside version control, maybe a .buildTool plugin could automatically write or append to that file. There is related discussion in #511 and #489 where it's discussed to lint during the build phase.
I see someone (a GitHub staff member even!) has written an Action already (I worked on similar for PHP, linking here for the screenshot). It only runs lint, not format.
The biggest missing piece I see is filtering linting to only lines changed in the PR. I've been looking at using libgit2 (add via SPM instructions) to generate a patch/diff and then only output changes whose lines are in the venn diagram of errors and changes. I'm a little out of my depth still so don't be disappointed if I don't open a PR soon. I think git_patch_from_blobs might be the correct function to use.
I feel your itch. I have a nice Action on PHP projects that updates a README badge to grey with a red X when linting is failing!

Yeah, I absolutely agree that we should do this; now that swift-syntax verifies its formatting with swift-format, I'd like to do the same for our own repository. I think it would be fine to just adopt something similar to what they've done in their testing script, where they run swift-format and look at the diffs afterward. I'd like to not stray too far from what the other Apple projects are doing, so that we have some internal consistency there.
However, it's been difficult to tilt at smaller issues like this until we have CI support directly on the swift-format repository. Right now the only CI coverage we get is by running it through a paired PR on another repository like swift-syntax. Before we start adding additional requirements for PRs to pass successfully, I would really like it if we can get CI triggers on swift-format itself so that we don't have a needlessly complicated workflow for contributors. @shahmishal @ahoppen

Since .git/hooks/pre-commit is outside version control, maybe a .buildTool plugin could automatically write or append to that file.

I'd suggest looking into [pre-commit](https://pre-commit.com/) as a dedicated tool to run one or more tools before each commit. Relates to https://github.com/apple/swift-format/issues/676.

Tracked in Apple’s issue tracker as rdar://126948263


ALB extension GA version. Only API change

This checklist is used to make sure that common guidelines for a pull request are followed.
Related command

az network alb create
General Guidelines

[x] Have you run azdev style <YOUR_EXT> locally? (pip install azdev required)
[x] Have you run python scripts/ci/test_index.py -q locally? (pip install wheel==0.30.0 required)

For new extensions:

[ ] My extension description/summary conforms to the Extension Summary Guidelines.

About Extension Publish
There is a pipeline to automatically build, upload and publish extension wheels.
Once your pull request is merged into main branch, a new pull request will be created to update src/index.json automatically.
You only need to update the version information in file setup.py and historical information in file HISTORY.rst in your PR but do not modify src/index.json.

Thank you for your contribution! We will review the pull request and get back to you soon.


[WIP] VCpus and Memory for Cloud Providers visual

This is a simple change in the visual of Cloud list View of providers, now we can see Total Cores and Total Memory of each Provider of Instances(VMs).
@sergio-ocon, @kbrock is the same than #12758 but in cloud provider list view.

@miq-bot add_label wip,ui
@miq-bot assign @sergio-ocon

I did the changes @kbrock Thanks

@miq-bot remove_label wip

I can make the change @kbrock, don't worry about it.
El lun., 12 dic. 2016 22:54, Keenan Brock<EMAIL_ADDRESS>escribió:

@kbrock commented on this pull request.
In spec/models/ext_management_system_spec.rb
https://github.com/ManageIQ/manageiq/pull/13124#pullrequestreview-12559167
:

@@ -258,7 +258,20 @@
context "with virtual totals" do
before(:each) do
@ems = FactoryGirl.create(:ems_vmware)

 (1..2).each { |i| FactoryGirl.create(:vm_vmware, :ext_management_system => @ems, :name => "vm_#{i}") }

 (1..2).each { |i| FactoryGirl.create(:vm_vmware,

looking good
please do not change, but for future reference: 2.times {
FactoryGirl.create
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/ManageIQ/manageiq/pull/13124#pullrequestreview-12559167,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AC4RzYs3eiKUVdnIqLmKp_tjtMpFp6Ykks5rHcKqgaJpZM4LK4Zg
.


Question: Does it only work for English?

What would be needed to make this work for other languages?

Sorry for now the only language we support is English.
However I believe you could train with any other language(s) with the code base. However, you need to train from scratch as I believe GPT does not provided non-English pre-trained weight either.
Please reply this thread if you have any further questions.

If you are interested in the Chinese Version, you can check out below link:
https://github.com/yangjianxin1/GPT2-chitchat
It is based on DialoGPT, and there are some trained models already.


Editor automatically inserts quotes after =

Does this issue occur when all extensions are disabled?: Yes/No YES

VS Code Version: 1.65
OS Version: UBUNTU 20.10

Steps to Reproduce:

open html doc
write a tag, add an attribute, type equal....

VS code automatically updated, and now it auto inserts quotes after pressing equals key.
Ref: https://github.com/microsoft/vscode/issues/18071
Why was this the default option? Did you not consider long time developers who didn't have auto completion anything for the longest, and have always had the habit of pressing = + "? This small update has been driving me crazy for weeks because it is basically impossible for me to NOT type the quotes, resulting in heavily distorted HTML. Its sad to read some of the comments by people requesting this, asking to be more like webstorm and what not. Its even sadder that I got this update automatically and I have no idea how to disable it.
Please don't include keyboard shortcuts in automatic updates. Please me mindful of people who have disabilities and have a dificult time typing. What is simply "convenient" for some can cause major disruptions to others

This has been bugging me as well… it seems to be behaving strangely… for html if I do class= the cursor ends up after the quotes (class=“”|) but for vue attributes like v-if it is correctly putting the cursor in the middle.
Can we have some advice on how to toggle the functionality?

"html.autoCreateQuotes": false

"html.autoCreateQuotes": false

That worked for me, thanks @yume-chan  👍

"html.autoCreateQuotes": false
where do you do this?


transformer relationships with resource key

using ArraySerializer;
'transformer' => function ($app) {
        $fractal = new League\Fractal\Manager;
        $fractal->setSerializer(new League\Fractal\Serializer\ArraySerializer);
        return new Dingo\Api\Transformer\FractalTransformer($fractal);
    },

    protected $defaultIncludes = [
    'quests',
    ];

    public function transform(City $city)
    {
        return [
        'id'                  => (int) $city->id,
        ];
    }

    public function includeQuests(City $city)
    {
        $quests = $city->quests;
        return $this->collection($quests, new CityTransformer, 'quests');
    }

    {
        "id": 1,
        "name": "Харьков",
        "quests":  {
            "quests": [{
                 "id": 2,
                 "title": "Нескучный Харьков",
             }]
         }
    },
    {
        "id": 2,
        "name": "Одесса",
         ...
    }

it got double "quests" key.
i try to use $this->collection($quests, new CityTransformer, null);
then will get "quests": { "data" : [{ ... }]}
any method can figure out that?

I'm not sure but this may be more of an underlying Fractal issue.


Add a very simple webhook

Hey man, this is an awesome plugin!
I'm trying to get it to talk to Homebridge-http-webhooks so I can run a webhook such as:
http://<IP_ADDRESS>:51828/?accessoryId=sensor1&state=true
However the current setup wraps it in a json payload.
Is there any way that I can run the above command changing the true/false at the end when the camera is active/inactive?
TIA!

That shouldn't be too difficult. Does it need to be a GET request then?

I'll be publishing https://github.com/jpoehnelt/chrome-meet-webhook-extension/releases/tag/v1.2.2 shortly. It will support webhook urls in the config such as:
GET https://maker.ifttt.com/trigger/${input.camera === 'active' || input.microphone === 'active' ? 'active'  :  'inactive'}/with/key/somekey.
which may render to
GET https://maker.ifttt.com/trigger/active/with/key/somekey
depending on the state(matches JSON payload).
POST is the default method. The extension options page has more information.

Submitted and in review.

@willbeeching  Did you get a chance to try this new version?


Bugfixes in Structs.Set

Fixed errors in Structs.Set - entries instead of values and .set instead of .add

Yupaul can u mail me.. I have doubts on phaser development ...my mail Id-<EMAIL_ADDRESS>

Thanks, have merged and added to the change log.


Ci deprecated ff 22 mar 24

remove deprecated ff
change layout of one feature

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://65fdbad4430d3e30eacca4cc--harness-developer.netlify.app


[Bug]: Search Dropdown Suggestions Overlapping with Filter Options

Is there an existing issue for this?

[X] I have searched the existing issues

Describe the bug
When using the search functionality on the "Posts" page, the dropdown suggestions for search terms overlap with the filter options, causing the UI to appear cluttered and making it difficult for users to select the correct suggestion.
Steps to Reproduce:

Navigate to the "Posts" page.
Begin typing a search query in the search bar.
Observe the dropdown suggestions that appear below the search bar.
Notice that the dropdown overlaps with the filter options, disrupting the UI.

Expected behavior
The search suggestions dropdown should display cleanly without overlapping with the filter options. It should be positioned in a way that doesn't interfere with other UI elements.
Add ScreenShots

Possible Solutions:

Adjust the z-index of the search suggestions dropdown to ensure it appears above or below other elements as needed.
Reposition the dropdown so that it does not overlap with the filter options.
Consider adding padding or margin to create clear separation between the dropdown and other UI components.

On which device are you experiencing this bug?
Android, iPhone, Linux, Chrome, Windows
Record

[X] I have read the Contributing Guidelines
[ ] I'm a GSSOC'24 contributor
[X] I have starred the repository

Sure go ahead @imashish22

👍

@VaibhavArora314 Assign it to me please I will ASAP 👍


fix(Search): defaultValue prop support

use the input directly instead of storing value as state
fix defaultValue prop

This should fix #56 and #30

Bluemix toolchain: Delivery Pipeline deployed carbon-components-react to Bluemix Design System, including commit 33752d8143d63b5e45fb2d631f39bf9d4448b00c


caked, densimetrically (logical-conflict)

This pull request was generated by the 'mq' tool

/trunk merge


image.repart: pass partition attrs to builder instead of JSON file

Description of changes
Having access to the original Nix partition definitions in the builder should make it a bit easier to manipulate them and still provide access to the manipulated results.
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

[x] 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/)
24.11 Release Notes (or backporting 23.11 and 24.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.

Add a :+1: reaction to pull requests you find important.

I tried to go with passAsFile for partitionsJSON instead, but that seems to work differently with structuredAttrs enabled(?)

@ofborg test appliance-repart-image-verity-store

While we are it, can we sed also the TBD in the repart-output.json by the actual roothash?

@ofborg test appliance-repart-image-verity-store


Component: targeting

Should this be two drop-downs (expr_type & tgt) or a single, dynamic text box that can auto-complete varying types of data. E.g., borrow the compound-matcher syntax so if something starts with G@ or L@ start auto-completing on grains or IDs.

This repo is deprecated and archived. Therefore, this issue is now closed. Thank you.


release-19.2: Revert "opt: disallow mutations under union"

PR: https://github.com/cockroachdb/cockroach/pull/41500
From release notes:

Mutations under UNION or UNION ALL are once again supported. [#41500][#41500] {% comment %}doc{% endcomment %}

No doc update needed.


fix dateutc stamp for systemhistory

The dateutc stamp should be 10 sec apart.

@Keerthikan : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#sign-off


Revert "Revert "Revert "Revert "GC long gone config""""

Reverts vespa-engine/vespa#23370

Why was this closed?


pip install uses system python instead of conda python

When I try to install ffcv from source (this repo), it uses the system level python instead of conda python. For conda with python3.9 this leads to some bug where it tries to do things with python3.8 (the system level python) in the install.
/samsung4tb/conda_envs/py39/bin/x86_64-conda-linux-gnu-cc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /samsung4tb/conda_envs/py39/include -DNDEBUG -D_FORTIFY_SOURCE=2 -O2 -isystem /samsung4tb/conda_envs/py39/include -fPIC -I/samsung4tb/conda_envs/py39/include/opencv4 -I/samsung4tb/conda_envs/py39/include -I/usr/include/python3.8 -c ./libffcv/libffcv.cpp -o build/temp.linux-x86_64-3.8/./libffcv/libffcv.o
  × python setup.py develop did not run successfully.
   │ exit code: 1
   ╰─> [19 lines of output]
       running develop
       running egg_info
       writing ffcv.egg-info/PKG-INFO
       writing dependency_links to ffcv.egg-info/dependency_links.txt
       writing requirements to ffcv.egg-info/requires.txt
       writing top-level names to ffcv.egg-info/top_level.txt
       warning: Failed to find the configured license file 'LICENSE.txt'
       reading manifest file 'ffcv.egg-info/SOURCES.txt'
       writing manifest file 'ffcv.egg-info/SOURCES.txt'
       running build_ext
       building 'ffcv._libffcv' extension
       /samsung4tb/conda_envs/py39/bin/x86_64-conda-linux-gnu-cc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /samsung4tb/conda_envs/py39/include -DNDEBUG -D_FORTIFY_SOURCE=2 -O2 -isystem /samsung4tb/conda_envs/py39/include -fPIC -I/samsung4tb/conda_envs/py39/include/opencv4 -I/samsung4tb/conda_envs/py39/include -I/usr/include/python3.8 -c ./libffcv/libffcv.cpp -o build/temp.linux-x86_64-3.8/./libffcv/libffcv.o
       In file included from /usr/include/python3.8/Python.h:8,
                        from ./libffcv/libffcv.cpp:2:
       /usr/include/python3.8/pyconfig.h:3:12: fatal error: x86_64-linux-gnu/python3.8/pyconfig.h: No such file or directory
           3 | #  include <x86_64-linux-gnu/python3.8/pyconfig.h>
             |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       compilation terminated.
       error: command '/samsung4tb/conda_envs/py39/bin/x86_64-conda-linux-gnu-cc' failed with exit status 1
       [end of output]

   note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× python setup.py develop did not run successfully.
│ exit code: 1
╰─> [19 lines of output]
   running develop
   running egg_info
   writing ffcv.egg-info/PKG-INFO
   writing dependency_links to ffcv.egg-info/dependency_links.txt
   writing requirements to ffcv.egg-info/requires.txt
   writing top-level names to ffcv.egg-info/top_level.txt
   warning: Failed to find the configured license file 'LICENSE.txt'
   reading manifest file 'ffcv.egg-info/SOURCES.txt'
   writing manifest file 'ffcv.egg-info/SOURCES.txt'
   running build_ext
   building 'ffcv._libffcv' extension
   /samsung4tb/conda_envs/py39/bin/x86_64-conda-linux-gnu-cc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /samsung4tb/conda_envs/py39/include -DNDEBUG -D_FORTIFY_SOURCE=2 -O2 -isystem /samsung4tb/conda_envs/py39/include -fPIC -I/samsung4tb/conda_envs/py39/include/opencv4 -I/samsung4tb/conda_envs/py39/include -I/usr/include/python3.8 -c ./libffcv/libffcv.cpp -o build/temp.linux-x86_64-3.8/./libffcv/libffcv.o
   In file included from /usr/include/python3.8/Python.h:8,
                    from ./libffcv/libffcv.cpp:2:
   /usr/include/python3.8/pyconfig.h:3:12: fatal error: x86_64-linux-gnu/python3.8/pyconfig.h: No such file or directory
       3 | #  include <x86_64-linux-gnu/python3.8/pyconfig.h>
         |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   compilation terminated.
   error: command '/samsung4tb/conda_envs/py39/bin/x86_64-conda-linux-gnu-cc' failed with exit status 1
   [end of output]

Notice the -I/usr/include/python3.8 instead of accessing the conda python.
Is there any way to fix this?

Fixed with:
python3 -m pip install -e .
instead of pip install -e.


battery plugin

Hello,
Thanks for this great "bash-it" enhancement of the shell.
I would like to ask a question regarding the battery plugin.
I'm using iterm2 but also tested on terminal app on macos, when i enable the plugin ti doesn't show the battery percentage animated to the right of the terminal. Shouldn't it be doing that?
Or is just a command line tool where you type battery_percentage and you get a number indicating the percentage?
Thanks!

This depends on the theme that you're using. From a quick search, the following themes include the battery charge:

bobby
brunton
demula
modern
rana

These all use the battery_charge function.
In addition to these, the powerline-multiline theme also shows the battery percentage on the right.
Please let me know if this works for you when using one of these themes (and with the battery plugin enabled).

@nwinkler thanks. I did try and and  I go something like the terminal output below.
user@hostname in ~ >>>>>
My question is are these right arrows the indication for the battery. If so why are they not displayed in the right far side of my terminal screen?
I'm a bit confused.

Which theme are you using?
I'm using "powerline-multiline" and the battery status is indicated on the right hand side:

@nwinkler thanks a lot now I see it. I was using the simple powerline theme. Now I understand that the battery plugin doesn't work with every theme, so I am closing this issue.

If you want to continue using the Powerline theme, you can add the battery status in there if you want...
Thanks for closing the issue once it was resolved for you - good housekeeping.


Tasks in projects are added under the root title

Describe the bug
In Things, when a task is part of an area, it appears as such when synchronising with Obsidian: the task is below the area subtitle.
If a task is in a project (not directly in an area), when synchronising with Obsidian the task is put below the root title of the note and not under the project subtitle.
Steps to reproduce

In Things, create an area
In Things, create a project under that area
In Things, create a first task and assign it to the area
In Things, create a first task and assign it to the project
In Things, mark the tasks as done
In Obsidian, sync the logbook

Expected behavior
A clear and concise description of what you expected to happen.

I would expect the project to appear as subtitle of the area.
I would expect the task assigned to the project to appear below the project subtitle

Screenshots
Setup in Things

Current behavior

Expected behavior

Environment (please specify)
OS
Mac OS 11.6
Obsidian Version (e.g. v0.10.6)
v0.12.15
Plugin up-to-date

I don't know if I would consider this a bug, maybe a feature that hasn't been implemented yet, but I think this would be really helpful in connecting projects between Things and Obsidian.


Fix some brittle snapshots based on github api responses

Updates snapshot tests, should unblock #71

@matthargett I can't formally request you as a reviewer, but merging this and updating #71 should unblock its CI so we can get it in.

@matthargett I can't formally request you as a reviewer, but merging this and updating #71 should unblock its CI so we can get it in.

I approved, but it looks like is still needs another review somehow?


Inability to process SMILES with certain SMILES characters

Hello,
My team and I are interested in using your package to facilitate the generation of new molecules with potential to have a certain type of toxicity. In order to do that, we explored the ability of your package to use a user-defined scoring function as the center of the training protocol. In addition to that, a new dataset is required to complete the training process. Although your package proved to be able to carry out training using user-defined functions, it seems to have some issues handling SMILES representations that contain certain characters. After some investigation, it seems like the package fails to process SMILES that contain / and \ characters which are used to indicate the cis and trans positions of atoms. we were wondering if there exist an easy fix to this problem and if yes, what should be done to fix that issue.
This the error it keeps showing
data processing 0/44
Traceback (most recent call last):
File "main.py", line 235, in
learn(mol_sml, args)
File "main.py", line 121, in learn
subgraph_set_init, input_graphs_dict_init = data_processing(smiles_list,   args.GNN_model_path, args.motif)
File "/home/qspt_user/data_efficient_grammar/grammar_generation.py", line 42, in data_processing
subgraphs.append(SubGraph(subgraph_i_mapped,  mapping_to_input_mol=subgraph_i_mapped, subfrags=list(cluster)))
File "/home/qspt_user/data_efficient_grammar/private/molecule_graph.py", line 91, in init
super(SubGraph, self).init(mol, is_subgraph=True, mapping_to_input_mol=mapping_to_input_mol)
File "/home/qspt_user/data_efficient_grammar/private/molecule_graph.py", line 15, in init
self.hypergraph = mol_to_hg(mol, kekulize=True, add_Hs=False)
File "/home/qspt_user/data_efficient_grammar/private/hypergraph.py", line 744, in mol_to_hg
bipartite_g = mol_to_bipartite(mol, kekulize)
File "/home/qspt_user/data_efficient_grammar/private/hypergraph.py", line 692, in  mol_to_bipartite
mol = standardize_stereo(mol)
File "/home/qspt_user/data_efficient_grammar/private/hypergraph.py", line 938, in  standardize_stereo
atom_idx_1 = each_bond.GetStereoAtoms()[0]
IndexError: Index out of range

Hey,
My current suggestion is to remove these "/", "", or "*" from the SMILES strings since we now cannot handle any stereo/geometry information of molecular graphs.

Hello, we also met the same problem. Have you solved it?

Hello, we also met the same problem. Have you solved it?
Hello, did you solve this problem?


Ionic "serve" trouble

From @esase on October 17, 2016 4:47
When I start the serve command my gulp's hooks don't work. For example:
gulp.task('serve:before', function(cb)  ...
But when I remove the scripts section from package.json the serve command works great again.
Steps to reproduce:

Make some gulp task like this:  gulp.task('serve:before', function() {console.log('here');});
Add an empty script section inside package.json
Call the ionic serve - there is no any message from the hook
Remove the script section from package.json  and call again the serve command. Now all works ok.

Which @ionic/app-scripts version are you using?
Cordova CLI: 6.3.1
Gulp version:  CLI version 3.9.1
Gulp local:   Local version 3.9.1
Ionic CLI Version: 2.1.1
Ionic App Lib Version: 2.1.1
Ionic App Scripts Version: 0.0.36
ios-deploy version: 1.8.4
ios-sim version: 5.0.6
OS: Mac OS X El Capitan
Node Version: v6.8.1
Xcode version: Xcode 8.0 Build version 8A218a
PS: This trouble is absent in ionic 2.0.0!
Copied from original issue: driftyco/ionic-app-scripts#180

Hello @esase would you be able to provide more info about this issue? Are you trying to use a custom gulp task with our tasks?

From @esase on October 18, 2016 3:26
Below listed my gulp and package json file:

var path = require('path');
var fs = require('fs');
var gulp = require('gulp');

var mainGulpPath = path.resolve(process.cwd() + '/../gulpfile.js');

if (fs.existsSync(mainGulpPath)) {

    var mainGulp = require(mainGulpPath);

    // Ionic hooks
    gulp.task('serve:before', function(cb) {
        mainGulp.start('build', cb);
    });

    gulp.task('run:before', function(cb) {
        mainGulp.start('device', cb);
    });

    gulp.task('serve:after', function() {
        return mainGulp.start('watch');
    });

}

{
  "name": "datecy-ionic",
  "version": "0.0.1",
  "description": "Datecy app for Wordpress",
  "dependencies": {},
  "devDependencies": {
    "fs-extra": "^0.30.0",
    "gulp": "^3.9.1"
  },
  "cordovaPlugins": [
    "cordova-hot-code-push-plugin",
    "cordova-plugin-camera",
    "cordova-plugin-compat",
    "cordova-plugin-console",
    "cordova-plugin-device",
    "cordova-plugin-file",
    "cordova-plugin-file-transfer",
    "cordova-plugin-geolocation",
    "cordova-plugin-splashscreen",
    "cordova-plugin-statusbar",
    "cordova-plugin-webserver",
    "cordova-plugin-whitelist",
    "ionic-plugin-keyboard",
    "phonegap-plugin-push",
    "ringle-plugin-config"
  ],
  "cordovaPlatforms": [
    "android",
    "ios"
  ],
  "scripts": {
    "setup": "npm install -g cordova<EMAIL_ADDRESS>    "prepare": "node ./prepare.js && npm install && ionic state restore",
    "build": "node ./prepare.js && ionic build ios && ionic build android"
  }
}

From @esase on October 18, 2016 3:24
Hello @jgw96, yes I have several npm helphers like:
  "scripts": {
    "setup": "npm install -g cordova<EMAIL_ADDRESS>    "prepare": "node ./prepare.js && npm install && ionic state restore",
    "build": "node ./prepare.js && ionic build ios && ionic build android"
  }

and also I have custom gulp tasks like this:

    // Ionic hooks
    gulp.task('serve:before', function(cb) {
        // some logic (compile js, copy some configurations, etc)
    });

    gulp.task('run:before', function(cb) {
        // some logic (compile js, copy some configurations, etc)
    });

    gulp.task('serve:after', function() {
        // some logic (compile js, copy some configurations, etc)
    });

When I add the scripts entry, ionic serve's hooks don't work (But other hooks like before_build, etc, work good). Why ?

From @esase on October 18, 2016 9:14
What other information should I provide?

From @esase on October 19, 2016 8:20
Hello @jgw96 any news related with my problem?

Hello @esase , unfortunately I am not able to reproduce this issue. Could you provide a small test repo that i could use to reproduce this issue? Thanks!

From @esase on October 24, 2016 11:43
@jgw96 you can easily reproduce this bug, please follow these steps:
add empty "scripts" entity inside your package.json, it should like this e.g.:

{
  "name": "datecy-ionic",
  "version": "0.0.1",
  "description": "Datecy app for Wordpress",
  "dependencies": {},
  "devDependencies": {
    "fs-extra": "^0.30.0",
    "gulp": "^3.9.1"
  },
  "cordovaPlugins": [
    "cordova-hot-code-push-plugin",
    "cordova-plugin-camera",
    "cordova-plugin-compat",
    "cordova-plugin-console",
    "cordova-plugin-device",
    "cordova-plugin-file",
    "cordova-plugin-file-transfer",
    "cordova-plugin-geolocation",
    "cordova-plugin-splashscreen",
    "cordova-plugin-statusbar",
    "cordova-plugin-webserver",
    "cordova-plugin-whitelist",
    "ionic-plugin-keyboard",
    "phonegap-plugin-push",
    "ringle-plugin-config"
  ],
  "cordovaPlatforms": [
    "android",
    "ios"
  ],
  "scripts": {
  }
}

Than add a test gulp task inside your gulpfile.js (Remove all old content before):

   gulp.task('serve:before', function(cb) {
         console.log("---- Serve before hook ----');
    });

And finally start your ionic with - ionic serve command. You shouldn't see our test log message (This a bug). But when you remove the "scripts" entity from your package.json and run the ionic serve again you should see the our console message

The issue seems to be this portion:
https://github.com/driftyco/ionic-cli/blob/690a447fbf87a592cae53551c25f23e2d9dd21c9/lib/cli.js#L183:L187
Is there a reason to not run gulp if there are npm scripts? Seems weird, if gulp is found I probably want to run with gulp, regardless of the presence of npm scripts. 😕

I'm totally agree with @Maistho. I don't see any relation between npm scripts and gulp tasks

I "fixed" this issue for me by adding the following npm scripts:
"gulp:serve:before": "gulp serve:before",
"gulp:serve:after": "gulp serve:after",
"serve:before": "gulp:serve:before",
"serve:after": "gulp:serve:after"

Had to add the double tasks for some reason. 😕


修复在使用forward机制访问时，或者指定了url-pattern的情况，转跳URL错误的问题。

根本不需要管太多

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

SpringBoot 要想实现真正的相对地址转跳，需要设置
server.tomcat.use-relative-redirects=true

代码存在冲突，请解决冲突后重新提交pr


add viewport meta tags to admin, app, index default pages

Hi! As a user, I would expect that the default pages for index and app to try and scale for mobile browsers and it doesn't seem to at the moment because it is missing a meta tag as described here.
This PR adds the meta tag in question to the default templates for index.html, app.html, and admin.html so that the default behaviour is to support mobile.
This is similar to an older/stale PR #179

Hi, thanks for your contribution! As you mentioned these tags are useful, we included your contribution in the 3.0.2 release we just made available.
I'll close this PR, but your commit is here https://github.com/openanalytics/shinyproxy/commit/60cd841a583a4f34cc23b24cbcfcae9bb26c89aa and I'll also listed you as contributor in our release notes: https://shinyproxy.io/downloads/#302

Sweet, thanks again for what you all do in maintaining shinyproxy!


tiny thruster no reicpe

suggestion: make the tiny thruster require diamonds or netherite so its really difficult for hudeilla to craft them

@Fartmonger lol


Incorrect Message type cast by compiler.

When using a BlazeDS backend and mx:RemoteObjects if there is reference to org.apache.royale.net.remoting.messages anywhere in the codebase such as having in a  component :
import org.apache.royale.net.remoting.messages.ErrorMessage;
The compiler converts all  mx.messaging.messages.AcknowledgeMessage received from the server
to org.apache.royale.net.remoting.messages.AcknowledgeMessage. Then during runtime the an error is thrown within the
"NetConnectionChannel.js" file line 434.
if (org.apache.royale.utils.Language.is(msg,
mx.messaging.messages.AsyncMessage)) {
as msg is now a  org.apache.royale.net.remoting.messages.AcknowledgeMessage instead of a  mx.messaging.messages.AcknowledgeMessage
this  causes the else condition (line 446) to trigger and return a mx.FaultEvent.
Removal of any reference to org.apache.royale.net.remoting.messages fixes the issue. But the error message:
Was expecting mx.messaging.messages.AcknowledgeMessage, but received

org_apache_royale_net_remoting_messages_AbstractMessage__body

Doesn't really reflect the reason this is occurring, as you could have (as I did) the reference in a Visual component.

Do you have a small test case which shows the issue?


Vector Databases: AzureAISearch

Hi,
FYI, I started working on this some time ago but progress is a slow for the moment.


[light-client] Evidence Reporting

The light client is responsible for submitting evidence of malfeasance outlined in Tendermint-go ADR-047. The rust implementation will also need to detect and submit evidence to connected full nodes.

With the fork detector becoming increasingly real #302, is this something help with @melekes ?


Modify ConnectionHandlingCommandsTest

Remove extending JedisCommandTestBase. This saves unnecessary setUp, tearDown.

Remove reading from getRedisServers. Provide HostAndPort for Jedis and BinaryJedis. Only host (evidently localhost) is read which doesn't make complete sense. Either both host and port or none should be read.

@HeartSaVioR @marcosnils

Merged into master, 2.10, 2.9.


Add application configuration and installation files.

The features this pull request implements are focused on project initialization and consists of these files:

package installation files (setup.py, setup.cfg)
project configuration file (pyproject.toml)
pre-commit configuration (.pre-commit-config.yaml)
documentation files (README.md, LICENSE)
gitignore file (.gitignore)
application directory structure ( init.py files)

I made the suggested changes and added CI workflow into this pull request. The tests dont pass because there is nothing to test. Should I provide some placeholder files, which will be deleted later, so the workflow passes or is it ok to keep it like that?

I made the suggested changes and added CI workflow into this pull request. The tests dont pass because there is nothing to test. Should I provide some placeholder files, which will be deleted later, so the workflow passes or is it ok to keep it like that?

Yes, add some void test that will do nothing.


MEI 2015 integration

This pull request updates the build script to perform testing on provided sample customization files. A new tests directory was added with sub-folders to hold test files for each customization. When build.sh is called, the build script will validate the corresponding test set in the tests directory against the built MEI customization schema.

I am waiting to merge this one because it contains all the changes for MEI 2015

I'm thinking of closing this one and creating a branch on the main repo, so that others can contribute without me giving them access to my own repo.

I think this one is out of date. I'm going to close it.


[web][html] ImageFilter.matrix in BackdropFilter does not work

I was using magnifier with BackdropFilter and ImageFilter.matrix , but when I run codes with  --web-renderer html , ImageFilter.matrix did not work well. Here are sample codes.

Code sample

import 'dart:ui';

import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(
    home: Homepage(),
  ));
}

class Homepage extends StatelessWidget {
  const Homepage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    Matrix4 newMatrix = Matrix4.identity()..scale(1.5);

    return Scaffold(
        appBar: AppBar(title: Text("BackdropFilterDemo")),
        body: Stack(
          children: <Widget>[
            Container(
              alignment: Alignment.center,
              child: Text("BackdropFilterDemo" * 10),
            ),
            BackdropFilter(
              // filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5),
              filter: ImageFilter.matrix(newMatrix.storage),
              child: Container(
                color: Colors.white.withAlpha(0),
              ),
            )
          ],
        ));
  }
}

Here are results.

HTML
Canvaskit

Reproducible using the code sample provided
Labeling for further insight from the team.

screenshots

HTML
Canvaskit

sample
import 'dart:ui';

import 'package:flutter/material.dart';

void main() {
  runApp(
    const MaterialApp(
      home: Homepage(),
    ),
  );
}

class Homepage extends StatelessWidget {
  const Homepage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    Matrix4 newMatrix = Matrix4.identity()..scale(1.5);

    return Scaffold(
      appBar: AppBar(title: const Text("BackdropFilterDemo")),
      body: Stack(
        children: <Widget>[
          Container(
            alignment: Alignment.center,
            child: Text("BackdropFilterDemo" * 10),
          ),
          BackdropFilter(
            // filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5),
            filter: ImageFilter.matrix(newMatrix.storage),
            child: Container(
              color: Colors.white.withAlpha(0),
            ),
          )
        ],
      ),
    );
  }
}

flutter doctor -v
[✓] Flutter (Channel stable, 3.0.5, on macOS 12.5 21G72 darwin-arm, locale en-GB)
    • Flutter version 3.0.5 at /Users/nexus/dev/sdks/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision f1875d570e (4 weeks ago), 2022-07-13 11:24:16 -0700
    • Engine revision e85ea0e79c
    • Dart version 2.17.6
    • DevTools version 2.12.2

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-33, build-tools 33.0.0
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 13.4.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • CocoaPods version 1.11.3

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

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

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

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-arm64   • macOS 12.5 21G72 darwin-arm
    • Chrome (web)    • chrome • web-javascript • Google Chrome 104.0.5112.79

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

[✓] Flutter (Channel master, 3.1.0-0.0.pre.2166, on macOS 12.5 21G72 darwin-arm, locale en-GB)
    • Flutter version 3.1.0-0.0.pre.2166 on channel master at /Users/nexus/dev/sdks/flutters
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 87f1684476 (4 hours ago), 2022-08-08 23:00:11 -0700
    • Engine revision b6dd604d90
    • Dart version 2.19.0 (build 2.19.0-76.0.dev)
    • DevTools version 2.16.0

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-33, build-tools 33.0.0
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 13.4.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 13F100
    • CocoaPods version 1.11.3

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

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

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

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-arm64   • macOS 12.5 21G72 darwin-arm
    • Chrome (web)    • chrome • web-javascript • Google Chrome 104.0.5112.79

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!


Generate a p12 password with Match

Question Checklist

[x] Updated fastlane to the latest version
[x] I read the Contribution Guidelines
[x] I read docs.fastlane.tools
[x] I searched for existing GitHub issues

Question Subject
I'm using Match to generate my provisioning profiles and certificates for my iOS build.
I see that get_push_certificate aka pem has the p12_password option.
How does one set a certificate (p12) password with the Match function which is being used in my Fastlane file?
I've tried using both get_push_certificate and match, but the p12 files are not being uploaded to storage_mode (Git).

✅ fastlane environment ✅
Stack

Key
Value

OS
10.14.4

Ruby
2.3.7

Bundler?
false

Git
git version 2.9.2

Installation Source
/usr/local/bin/fastlane

Host
Mac OS X 10.14.4 (18E226)

Ruby Lib Dir
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib

OpenSSL Version
LibreSSL 2.6.5

Is contained
false

Is homebrew
false

Is installed via Fabric.app
false

Xcode Path
/Applications/Xcode.app/Contents/Developer/

Xcode Version
10.2.1

System Locale

Variable
Value

LANG
en_NZ.UTF-8
✅

LC_ALL

LANGUAGE

fastlane files:
`./fastlane/Fastfile`
# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
#     https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
#     https://docs.fastlane.tools/plugins/available-plugins
#

# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane

default_platform(:ios)

platform :ios do
  xcversion(version: "10.2.1")

  before_all do
    setup_circle_ci
  end

  desc "Push a new beta build to TestFlight and upload symbols to crashlytics"
  lane :beta do
    match(type: "appstore", readonly: true, app_identifier: ["[REMOVED]", "[REMOVED]"])
    build_app(workspace: "[REMOVED]", scheme: "[REMOVED]")
    upload_to_testflight(skip_waiting_for_build_processing: true)
    upload_symbols_to_crashlytics
  end

  desc "Build a development archive"
  lane :build do
    match(type: "development", readonly: true, app_identifier: ["[REMOVED]", "[REMOVED]"])
    build_app(workspace: "[REMOVED]", scheme: "[REMOVED]")
  end

  desc "Setup certificates"
  lane :certs do
    get_push_certificate(
      username: "[REMOVED]",
      app_identifier: "[REMOVED]",
      p12_password: "[REMOVED]",
      new_profile: proc do |profile_path| # called when a new profile was generated
        # We can insert code here to upload the PEM file to the server
      end
    )
    get_push_certificate(
      username: "[REMOVED]",
      app_identifier: "[REMOVED]",
      p12_password: "[REMOVED]",
      new_profile: proc do |profile_path| # called when a new profile was generated
        # We can insert code here to upload the PEM file to the server
      end
    )

    match(type: "development")
    match(type: "appstore")
  end

  desc "Push a new production build to TestFlight and upload symbols to crashlytics"
  lane :prod do
    match(type: "appstore", readonly: true, app_identifier: ["[REMOVED]", "[REMOVED]"])
    build_app(workspace: "[REMOVED]", scheme: "[REMOVED]")
    upload_to_app_store
    upload_symbols_to_crashlytics

    slack(message: "Successfully uploaded a new App Store build",
      channel: "#ios",
      payload: {
        "Build Date" => Time.new.to_s,
        "Built by" => "CircleCI"
      },
      default_payloads: [:git_branch, :git_author],
      slack_url: "https://hooks.slack.com/services/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",
      fail_on_error: false
    )
  end

end

`./fastlane/Appfile`
app_identifier "[REMOVED]" # The bundle identifier of your app
apple_id("[REMOVED]") # Your Apple email address

itc_team_id("[REMOVED]") # App Store Connect Team ID
team_id("[REMOVED]") # Developer Portal Team ID

for_lane :prod do
    # Override for prod.
    app_identifier "[REMOVED]"
end

# For more information about the Appfile, see:
#     https://docs.fastlane.tools/advanced/#appfile

fastlane gems

Gem
Version
Update-Status

fastlane
2.123.0
✅ Up-To-Date

Loaded fastlane plugins:
No plugins Loaded
Loaded gems

Gem
Version

did_you_mean
1.0.0

slack-notifier
2.3.2

rouge
2.0.7

xcpretty
0.3.0

terminal-notifier
2.0.0

terminal-table
1.8.0

multipart-post
2.0.0

word_wrap
1.0.0

public_suffix
2.0.5

babosa
1.0.2

colored
1.2

highline
1.7.10

commander-fastlane
4.4.6

unf
0.1.4

domain_name
0.5.20180417

http-cookie
1.0.3

faraday-cookie_jar
0.0.6

gh_inspector
1.1.3

mini_magick
4.5.1

multi_xml
0.6.0

rubyzip
1.2.2

security
0.1.3

xcpretty-travis-formatter
1.0.0

naturally
2.2.0

simctl
1.6.5

uber
0.1.0

declarative
0.0.10

declarative-option
0.1.0

representable
3.0.4

retriable
3.1.2

mime-types
3.2.2

jwt
2.1.0

signet
0.11.0

memoist
0.16.0

googleauth
0.6.7

httpclient
2.8.3

google-api-client
0.23.9

google-cloud-env
1.0.5

google-cloud-core
1.3.0

digest-crc
0.4.1

google-cloud-storage
1.16.0

tty-spinner
0.9.0

tty-cursor
0.6.1

tty-screen
0.7.0

faraday
0.15.4

json
2.2.0

io-console
0.4.7

excon
0.64.0

CFPropertyList
3.0.0

libxml-ruby
2.9.0

plist
3.5.0

atomos
0.1.3

claide
1.0.2

colored2
3.1.2

nanaimo
0.2.6

xcodeproj
1.9.0

faraday_middleware
0.13.1

fastimage
2.1.5

bundler
2.0.1

unicode-display_width
1.6.0

addressable
2.6.0

multi_json
1.13.1

os
1.0.1

psych
3.1.0

mime-types-data
3.2019.0331

generated on: 2019-05-21

Looks like p12 file has a password but some reason Amazon Simple Notification Service is having trouble reading it. But that's a separate issue.


Support for generic types in containers

Improvement for issue #1396. This will also add CommandLine.UseDefaultConverter which can be used as marker for default converter fallback.

Okay, I see now, thanks for the clarification.
Without the UseDefaultConverter, this PR can be part of the next bugfix release (4.6.3).
Adding  UseDefaultConverter is an API change, so (since picocli uses semantic versioning), this would have to go into the 4.7.0 release.
I like to add a bit more functionality before doing a 4.7.0 release, so this may take a bit more time.
Would you be open to the idea of splitting this up?
If you can put the UseDefaultConverter into a separate PR that can go into the 4.7.0 release, then I can merge the remainder into master, and we can do a 4.6.3 release for that relatively soon.


Session expiring

As per @jasonjoh 's suggestion to create a sepparate issue:
After signing in and navigating to calender and then letting it idle for a long time, I was greeted with a
'Undefined index: userTimeZone' in app/Http/Controllers/CalendarController.php
` // Get user's timezone
$timezone = TimeZones::getTzFromWindows($viewData['userTimeZone']);`
After digging around in code and google for some days i came to conclusion ( with my limited know-how in oop and even less in graph / laravel ) that its not an actual issue or bug, but rather a result of something not implemented in the demo (correct me If i'm wrong).
I think replicating the issue should be as simple as deleting cookies from browser that hold the session data to ones demo app.
As for solution i found a suggestion somewhere about creating a Laravel Middleware 'piece' that checks if the token is expired and then act accordingly.
I do have a workaround that works for me atm, but i dont feel like posting it... I'd rather copy good code than spread something that i'm not sure is safe.
So if a kind soul with the know-how could implement that into the demo
Edit: found the middleware suggestion.... It was the issue #4 from two and a half years ago.... :-/

Refreshing the token is done in TokenCache.php. I do not reproduce this error with the latest code. I let the app idle for well over an hour and it refreshed the token successfully. Yes I do think that if you delete your session cookie you'll have issues, since all token storage is done in the server-side session. Storing in the session is fine for a sample, but for a production app you'd probably want something more robust, like a secure database, etc.
https://github.com/microsoftgraph/msgraph-training-phpapp/blob/992a95515c151411cb764c57a4edc958f0d7e6ca/demo/graph-tutorial/app/TokenStore/TokenCache.php#L40-L68

Refresh on calendar page on 'clean' instance after 2h 21m idle, same result.
Dont know how much it changes things that i run the thing on an actual apache server with php7.3.
Same result if i go directly to /calendar without logging in.
Now that should be something thats not implemented to redirect to login and back to /calendar after logging in.
"In real world" you would give someone a link to a certain page, not give em login link and then ask to navigate to required page... But again, thats not a bug. If the purpose of the demo is to show how bits of the sdk work, then it has done its job.
I just wish it had examples of different parts.
God only knows if my modified instance is safe at all... Reloaded page after 11hours and redirected to /signin then to login server that redirected to callback and back to the page i was trying to reload. But then that is how the whole authentication thing should work, if you dont close browser and have the "keep logged in" checked when logging in initially on microsoft page ?

Because this is a sample, we don't go into any configuration of sessions and just use the defaults from Laravel. I just looked in the session.php file, and this looks interesting:
https://github.com/microsoftgraph/msgraph-training-phpapp/blob/992a95515c151411cb764c57a4edc958f0d7e6ca/demo/graph-tutorial/config/session.php#L23-L34
Auto-login is out of scope for this sample, but redirecting to login should definitely be doable. Something like checking the TokenCache and if it's empty just redirecting to /signin.


Window updates can still cause BadStreamStateTransition

We tried to fix this with #233, but a case was missed. If we receive a number of DATA frames in one channelRead cycle, one of which would trigger a window update frame but another, later one of which would set END_STREAM, we will incorrectly still emit window update frames because we won't spot that END_STREAM in time. We need to move that check.

Fixed by #237.