Support for arrays

In some cases we need to setup several values of Enum type.
Original generated code does not support such way
$CampaignsGetRequest->setFieldNames([
    \Campaigns\EnumType\CampaignsCampaignFieldEnum::VALUE_NAME,
    \Campaigns\EnumType\CampaignsCampaignFieldEnum::VALUE_DAILYBUDGET
]);

Original
    /**
     * Set FieldNames value
     * @uses \Campaigns\EnumType\CampaignsCampaignFieldEnum::valueIsValid()
     * @uses \Campaigns\EnumType\CampaignsCampaignFieldEnum::getValidValues()
     * @param string $fieldNames
     * @return \Campaigns\StructType\CampaignsGetRequest
     */
    public function setFieldNames($fieldNames = null)
    {
        if (!\Campaigns\EnumType\CampaignsCampaignFieldEnum::valueIsValid($fieldNames)) {
            throw new \InvalidArgumentException(sprintf('Value "%s" is invalid, please use one of: %s', $fieldNames, implode(', ', \Campaigns\EnumType\CampaignsCampaignFieldEnum::getValidValues())), __LINE__);
        }
        $this->FieldNames = $fieldNames;
        return $this;
    }

Modified
    /**
     * Set FieldNames value
     * @uses \Campaigns\EnumType\CampaignsCampaignFieldEnum::valueIsValid()
     * @uses \Campaigns\EnumType\CampaignsCampaignFieldEnum::getValidValues()
     * @param string $fieldNames
     * @return \Campaigns\StructType\CampaignsGetRequest
     */
    public function setFieldNames($fieldNames = null)
    {
        // ArrayOfValues
        // The existence of this block should be based on maxOccurs
        if (is_array($fieldNames)){
            foreach ($fieldNames as $fieldName) {
                if (!\Campaigns\EnumType\CampaignsCampaignFieldEnum::valueIsValid($fieldName)) {
                    throw new \InvalidArgumentException(sprintf('Value "%s" is invalid, please use one of: %s', $fieldNames, implode(', ', \Campaigns\EnumType\CampaignsCampaignFieldEnum::getValidValues())), __LINE__);
                }
            }
        } // /ArrayOfValues
        elseif (!\Campaigns\EnumType\CampaignsCampaignFieldEnum::valueIsValid($fieldNames)) {
            throw new \InvalidArgumentException(sprintf('Value "%s" is invalid, please use one of: %s', $fieldNames, implode(', ', \Campaigns\EnumType\CampaignsCampaignFieldEnum::getValidValues())), __LINE__);
        }
        $this->FieldNames = $fieldNames;
        return $this;
    }

This code we need to use Yandex Direct and Google AdWords.
Example
Yandex.Direct API Campaigns
WSDL link can be found here
And what message we should have in case of error? Do "please use one of" still good?

just to let you know that I don't forget your issue and that I'll be able to work on it from February 1st :wink:

Thank you Mikael.
As for now I use modified \WsdlToPhp\PackageGenerator\File\Struct and it is not relies on maxOccurs.
    /**
     * @param PhpMethod $method
     * @param StructAttributeModel $attribute
     * @return Struct
     */
    protected function addStructMethodSetBodyForRestriction(PhpMethod $method, StructAttributeModel $attribute)
    {
        if (($model = $this->getModelFromStructAttribute($attribute)) instanceof StructModel && $model->getIsRestriction()) {
            $parameterName = lcfirst($attribute->getCleanName());
            $method
                ->addChild(sprintf('if (is_array($%s)) {', $parameterName))
                    ->addChild($method->getIndentedString(sprintf('foreach ($%s as $value) {', $parameterName), 1))

                        ->addChild($method->getIndentedString(sprintf('if (!%s::%s($value)) {', $model->getPackagedName(true), StructEnum::METHOD_VALUE_IS_VALID), 2))
                            ->addChild($method->getIndentedString(sprintf('throw new \InvalidArgumentException(sprintf(\'Value "%%s" is invalid, please use one of: %%s\', $%s, implode(\', \', %s::%s())), __LINE__);', $parameterName, $model->getPackagedName(true), StructEnum::METHOD_GET_VALID_VALUES), 3))
                        ->addChild($method->getIndentedString('}', 2))

                    ->addChild($method->getIndentedString('}', 1))
                ->addChild('}')
                ->addChild(sprintf('elseif (!%s::%s($%s)) {', $model->getPackagedName(true), StructEnum::METHOD_VALUE_IS_VALID, $parameterName))
                ->addChild($method->getIndentedString(
                    sprintf('throw new \InvalidArgumentException(sprintf(\'Value "%%s" is invalid, please use one of: %%s\', $%s, implode(\', \', %s::%s())), __LINE__);', $parameterName, $model->getPackagedName(true), StructEnum::METHOD_GET_VALID_VALUES), 1))
                ->addChild('}');
        }
        return $this;
    }

I changed name of an issue(remove "of Enum"), cause it is about arrays in general.
Here you can find WSDL link
Here the description of an add request.
Case 1
Take this part
{
  "method": "add",
  "params": {
    "AdGroups": [{  /* AdGroupAddItem */
      "Name": (string), /* required */
      "CampaignId": (long), /* required */
      "RegionIds": [(long), ... ], /* required */
      "NegativeKeywords": {  /* ArrayOfString */
        "Items": [(string), ... ] /* required */
      },
      "TrackingParams": (string),
      "MobileAppAdGroup": {  /* MobileAppAdGroupAdd */
        "StoreUrl": (string), /* required */
        "TargetDeviceType": [( "DEVICE_TYPE_MOBILE" | "DEVICE_TYPE_TABLET" ), ... ], /* required */
        "TargetCarrier": ( "WI_FI_ONLY" | "WI_FI_AND_CELLULAR" ), /* required */
        "TargetOperatingSystemVersion": (string) /* required */
      },
      "DynamicTextAdGroup": {  /* DynamicTextAdGroupAdd */
        "DomainUrl": (string) /* required */
      }
    }, ... ] /* required */
  }
}

As you can see AdGroups should be an array of AdGroupAddItem
What do we have generated
/**
 * This class stands for AddRequest StructType
 * @subpackage Structs
 */
class AddRequest extends AbstractStructBase
{
    /**
     * The AdGroups
     * Meta informations extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 1
     * @var \YandexDirect\AdGroups\StructType\AdGroupAddItem
     */
    public $AdGroups;
    /**
     * Constructor method for AddRequest
     * @uses AddRequest::setAdGroups()
     * @param \YandexDirect\AdGroups\StructType\AdGroupAddItem $adGroups
     */
    public function __construct(\YandexDirect\AdGroups\StructType\AdGroupAddItem $adGroups = null)
    {
        $this
            ->setAdGroups($adGroups);
    }
    /**
     * Set AdGroups value
     * @param \YandexDirect\AdGroups\StructType\AdGroupAddItem $adGroups
     * @return \YandexDirect\AdGroups\StructType\AddRequest
     */
    public function setAdGroups(\YandexDirect\AdGroups\StructType\AdGroupAddItem $adGroups = null)
    {
        $this->AdGroups = $adGroups;
        return $this;
    }

So, in this place we have no support for an array too.
Case 2
The next case I found is this one:
Add request contain an array of long "RegionIds": [(long), ... ], / required /
<xsd:element name="RegionIds" type="xsd:long" minOccurs="1" maxOccurs="unbounded"/>
This is generated set method for it.
    /**
     * Set RegionIds value
     * @param long $regionIds
     * @return \YandexDirect\AdGroups\StructType\AdGroupAddItem
     */
    public function setRegionIds($regionIds = null)
    {
        $this->RegionIds = $regionIds;
        return $this;
    }

Should we write public function setRegionIds(array $regionIds = null) ?
Should we check for an array type automatically and throw exeption, something like InvalidArgumentException?

It is look, like xsd:sequence did not handled right.
 <xsd:element name="AddRequest">
            <xsd:complexType>
               <xsd:sequence>
                  <xsd:element name="AdGroups" type="ns:AdGroupAddItem" minOccurs="1" maxOccurs="unbounded"/>
               </xsd:sequence>
            </xsd:complexType>
         </xsd:element>

In all cases I have only ArrayOfInteger.php and ArrayOfString.php and this classes not used in any generated class.
By WSDL, as I assume, there should be more ArraysOf____.

Hi,
Thank you for such researches and explanations,
I just downloaded the WSDL and the schema from https://tech.yandex.com/direct/doc/ref-v5/campaigns/campaigns-docpage/ and I don't find the AddRequest element, is it from another file ?
In any case, you might have pointed out a case that is not well handled and that should alter a lot the generated classes regarding the sequence parsing. I must admit I might not handled it very perfectly so I'll improve (make it right) this time.

In fact, sequence tags are not handled at all yet ...!

@GroxExMachine To be sure of that has to be handled, can you confirm that only the elements that have the maxOccurs attribute with the value and only the value unbounded or any integer > 1 must be considered as a class' property that is an array? (following this thinking and the below documentation link, any element with only the minOccurs attribute with an integer  > 1 should be defined as an array)
For information, I found this documentation https://www.w3.org/TR/xmlschema-0/#OccurrenceConstraints that tells how the minOccurs/maxOccurs can be defined.

Yes, @mikaelcom, you are correct. And I have addition.
Situation:
Here Campaigns is an array.
{
  "method": "add",
  "params": {
    "Campaigns": [{  /* CampaignAddItem */

It is described as Anonymous Complex Type - AddRequest
<xsd:element name="AddRequest">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element name="Campaigns" type="ns:CampaignAddItem" minOccurs="1" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>

So, the Campaigns is an array of CampaignAddItem. And this means, that an AddRequest contain of only one Campaigns array.
And, according to the specification, it looks like the error in Yandex Direct WSDL. But it should be investigated further.

I agree with your last point as
<xsd:element name="Campaigns" type="ns:CampaignAddItem" minOccurs="1" maxOccurs="unbounded"/>

means that Campaigns has to occur at least one and can occur more that once which seems odd.

The guys from Yandex Direct already answered me, that the WSDL is correct and there can be several Campaigns in it:
...

Campaign params

Campaign params

Campaign params

...

With PHP, I don't see how to send multiple Campaigns objects with the index Campaigns containing themselves one or more CampaignAddItem object(s) as you have only two possibilities to send the parameter with OOP*:

an array with indexes, each index must be named as the parameter name, in this case Campaigns which means that you can only have one entry in your array with the index Campaigns
an object with properties, each property must be named as the parameter name, in this case, Campaigns which means that you can only have on property in your object with a property named Campaigns

Plus, regarding the JSON structure indicated in your link, you also can't have multiple Campaigns items at the same level as either it is invalid or at least the last item will override the previous ones, am I wrong?
So after turning the problem in all the way I could in my head, the only/simpliest possible way I see is to send only one item named Campaigns which would be an array of CampaignAddItem. The proprty already exists, it only has to be enhanced.
So:

the Campaigns property has to evolve to an array type of CampaignAddItem items (this means that a logic should be added to setCampaigns method in order to ensure that each item is a CampaignAddItem object otherwise an exception is throwned. An empty array as parameter would reset the property to an empty array, no exception would be throwned then,
a new (utility, handy) method should be added for each property that is an array and named with the property name such as addTo{property name} (eg: addToCampaigns) with a parameter type hint matching the item value/object type (eg: addToCampaigns(CampaignAddItem $item))

If I'm not wrong, having an array of CampaignAddItem object does send multiple CampaignAddItem item in the XML request (or any type of request with this same schema, as in your top first comment). Could you confirm? Plus is it well interpreted by the Web Service?
Am I missing a case/solution?
*: using pure XML, you can have multiple Campaigns elements (tag name is Campaigns) at the same level

Plus, regarding the JSON structure indicated in your link, you also can't have multiple Campaigns items at the same level as either it is invalid or at least the last item will override the previous ones, am I wrong?

You are right.

If I'm not wrong, having an array of CampaignAddItem object does send multiple CampaignAddItem item in the XML request (or any type of request with this same schema, as in your top first comment). Could you confirm?

Yes, I confirm.

Plus is it well interpreted by the Web Service?

Setting up tests right now.

the Campaigns property has to evolve to an array type of CampaignAddItem items
May be there should be ArrayOfCampaignAddItem*. Campaigns will contain object ArrayOfCampaignAddItem, and in this case we do not need to use an array as an argument and will have a better type hinting.
The logic of classes will be cleaner and it will not differ too much from its current state.

*What do you think about plural form? ArraoyOfIntegers, ArrayOfStrings, ArrayOfCampaignAddItems?

Plus is it well interpreted by the Web Service?

I checked. It is well interpreted. This request got positive response.
{
  "method":"update",
  "params":{
    "Campaigns":[
      {"Id":"120699"},
      {"Id":"120700"},
      {"Id":"120701"}
    ]
  }
}

@GroxExMachine good to know, thanks,
I'll take this into account for the enhancement,
thx

Answer/envisaged solution to your first question

And what message we should have in case of error? Do "please use one of" still good?

at https://github.com/WsdlToPhp/PackageGenerator/commit/9015ef92a6b79d3e0bc808e9c08b136f7f9df027#commitcomment-15908987

@GroxExMachine This branch should be sufficiently up to date to handle quite better than before any array case, even the previous ones that were not as good as it is now,
Can you try it by your side and tell me if you'd want something more complete? Any suggestion/feedback is appreciated,
Thx
ps: I'll certainly start a refactoring process after having published the new release with these improvements.

@mikaelcom adding several Campaigns by array works. Thank you!
It just small tests, that I have done. Later, there may be some additions, but for now, it is works as it should.

You may want, to add something. But on my side, issue can be closed.

I think I'll review a little bit the set{property} method in order to avoid repeating the sanity check by using the addTo method that'll be the only method that'll throw an exception, in order to centralize the behaviors (except for the enumerations as we want only one exception for multiple invalid values)
What do you think about that?

After considering it, I cancelled what I said previously

I think I'll review a little bit the set{property} method in order to avoid repeating the sanity check by ...

This is the final version now, I'll merge it soon and create a new release

fixed in release 1.3.0

This enhancemnt has introcued a new bug:
public function setItem(array $item = array())
{
    foreach ($item as $item) {
        if (!$item instanceof \DocData\StructType\DocDataItem) {
            throw new \InvalidArgumentException(sprintf('The item property can only contain items of \DocData\StructType\DocDataItem, "%s" given', is_object($item) ? get_class($item) : gettype($item)), __LINE__);
        }
    }
    $this->item = $item;
    return $this;
}


Migrate command usage values

Related to the tracker issue:

https://github.com/flutter/flutter/issues/128251

This PR migrates the Usage.command static method that sent custom dimensions for each command (if applicable). The screenshot below shows the different places where the usageValues getter is overwritten to return the necessary custom dimensions for that command.

Pre-launch Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I read the Tree Hygiene wiki page, which explains my responsibilities.
[x] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[x] I signed the CLA.
[x] I listed at least one issue that this PR fixes in the description above.
[x] I updated/added relevant documentation (doc comments with ///).
[x] I added new tests to check the change I am making, or this PR is test-exempt.
[x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@christopherfujino here's the PR with the migration for the new events as well for reference

@christopherfujino this is now ready for you review


server: correctly return and close ch from exits routine

@mrunalp PTAL
Signed-off-by: Antonio Murdaca<EMAIL_ADDRESS>

/test all

LGTM

I'll backport this for 1.0.x branch also


Martin/8/add more debug

issue #10

👍

Codecov Report

Merging #9 into master will increase coverage by 0.46%.
The diff coverage is 85.71%.

@@            Coverage Diff             @@
##           master       #9      +/-   ##
==========================================
+ Coverage   82.51%   82.97%   +0.46%
==========================================
  Files           1        1
  Lines         366      376      +10
==========================================
+ Hits          302      312      +10
  Misses         64       64

Impacted Files
Coverage Δ

pybird/__init__.py
82.97% <85.71%> (+0.46%)
:arrow_up:

Continue to review full report at Codecov.

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


TypeError in the oauth2.py - Can't create token

Hello,
I'm trying to run a simple example that returns my spotify playlists, but it seems I can't get pass the authentication phase succesfully. In particular, the script requests from me to enter the URL that redirects me, which when inserted, the following error is occured:
Traceback (most recent call last):
  File "my_playlists.py", line 19, in <module>
    token = util.prompt_for_user_token(username, scope)
  File "/opt/anaconda3/lib/python3.6/site-packages/spotipy-2.4.4-py3.6.egg/spotipy/util.py", line 88, in prompt_for_user_token
    def get_level_16(data, bits, verbose=False):
  File "/opt/anaconda3/lib/python3.6/site-packages/spotipy-2.4.4-py3.6.egg/spotipy/oauth2.py", line 212, in get_access_token
  File "/opt/anaconda3/lib/python3.6/site-packages/spotipy-2.4.4-py3.6.egg/spotipy/oauth2.py", line 195, in _make_authorization_headers
  File "/opt/anaconda3/lib/python3.6/site-packages/spotipy-2.4.4-py3.6.egg/spotipy/oauth2.py", line 20, in _make_authorization_headers
TypeError: must be str, not NoneType

The script I try to run is a very simple one, taken from the example section:

# Shows the top artists for a user

import pprint
import sys

import spotipy
import spotipy.util as util
import simplejson as json

if len(sys.argv) > 1:
    username = sys.argv[1]
else:
    print("Usage: %s username" % (sys.argv[0],))
    sys.exit()

scope = 'user-library-read'

token = util.prompt_for_user_token(username, scope)

if token:
    sp = spotipy.Spotify(auth=token)
    sp.trace = False
    results = sp.current_user_playlists(limit=50)
    for i, item in enumerate(results['items']):
        print("%d %s" %(i, item['name']))
else:
    print("Can't get token for", username)

I'm currently running on python 3.6.3 on a Linux machine. Any suggestions?

What is the URL you are entering?

I have used http://localhost/ as calback in spotify developer.

I think there is a problem with the way you are authenticating yourself. I believe it should be something like:

token = util.prompt_for_user_token(
        username=USERNAME,
        scope=SCOPE,
        client_id=CLIENT_ID,
        client_secret=CLIENT_SECRET,
        redirect_uri=REDIRECT_URI)

Ensure that you have exported your redirect_uri, client ID, and secret before running your script and trying to authenticate. If you don't pass the values directly to the util.prompt_for_user_token function, it will read them from the environment.
Try running these in your terminal before running your script
export SPOTIPY_CLIENT_ID="YOUR CLIENT ID" export SPOTIPY_CLIENT_SECRET="YOUR CLIENT SECRET" export SPOTIPY_REDIRECT_URI='http://localhost/'

Thanks for your answers @ritiek and @alopexc0de, that seems right, closing.


feat: add cacheLocation settings, remove .eslintcache file

there will be a .eslintcache at projectRoot, which we can hide it by eslint.cacheLocation option and vue-cli do that.
https://github.com/vuejs/vue-cli/blob/ae967f769817b2e6dba19a3c0d171be48f67f2a2/packages/%40vue/cli-plugin-eslint/index.js#L38

Thanks


feat(pom.xml): bump karaf version to 4.2.8

Hey,
Karaf references Maven Central via HTTP which stopped working today as per https://support.sonatype.com/hc/en-us/articles/360041287334-Central-501-HTTPS-Required
This is fixed in version 4.2.8
issue is attached here:
https://issues.apache.org/jira/browse/KARAF-6599

Thanks for the contribution, looks good to me.


streaming Apple Music to Sonos speaker interrupts

What version of Music Assistant has the issue?
2.1.0
What version of the Home Assistant Integration have you got installed?
[2.1.0] - 22.07.2024
Have you tried everything in the Troubleshooting FAQ and reviewed the Open and Closed Issues and Discussions to resolve this yourself?

[X] Yes

The problem
I can Start a playlist or whatever from the Player section... music starts but interrupts often or skip to the next title.
How to reproduce
like the problem.
In the log I can see, that there is an error by reading the file from Apple Music. 024-07-23 10:01:01.940 WARNING (MainThread) [music_assistant.providers.apple_music] Skipping sync of item apple_music://album/l.4TjESCB - error details: Album is missing artist(s)
The song starts and then the system finds out, that it isn´t here to play?! dunno what it means, but it stops or skip.
Music Providers
Apple Music
Player Providers
Sonos
Full log output
MA_log.log
Additional information
No response
What version of Home Assistant Core are your running
2024.7.3
What type of installation are you running?
Home Assistant OS
On what type of hardware are you running?
Raspberry Pi

Could there be another integration which disturbs the MA?
home Assistant Media, or airplay?! I deinstalled everthing I thought of disturbing, but it remains with interrupting streaming.

sorry, just restartet... the HA Music APP was activatet... try more without that running


Add information in HOTP email about expiry time

Add information on that the code is valid for 15 min, but also add "valid until" and date and time.

Moving to Jira.


Broken link to this page

https://docs.microsoft.com/en-us/dotnet/api/microsoft.visualstudio.text.tagging.textmarkertag?view=visualstudiosdk-2017 has a broken link to this walkthrough.

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

ID: 0202ec00-b320-aa14-484c-06b37e38dcd1
Version Independent ID: 73d6ad23-9bd0-6231-d2f6-a7be2f187049
Content: Walkthrough: Displaying Matching Braces - Visual Studio
Content Source: docs/extensibility/walkthrough-displaying-matching-braces.md
Product: visual-studio-dev15
GitHub Login: @gregvanl
Microsoft Alias: gregvanl

@benmcmorran Thanks for letting us know, Ben.

Working on a fix to remove trailing .md file extension in conceptual topic links in Remarks.

Fixed and published


increase sleep to prevent failed tests

Goal
Stop failed ubuntu autopkgtests
Design
Use the timeout from v2
Changeset
increase the sleep duration
Testing
tested in ubuntu autopkgtest environment using existing tests.
These tests were failing in the Ubuntu autopkgtest environment. We are not on version 2 yet, so this change is relevant to Ubuntu.

Makes sense, thank you!


Eth leftover type hinting

What was wrong?
Completes the type hinting in the eth module.
Closes #1398
How was it fixed?
Adding the type hints manually and adjusting in other modules like trinity and p2p.
Cute Animal Picture

@cburgdorf I have tried my level best to tighten the types. I have used type: ignore in the following conditions.

Using type: ignore in eth.chains.base because the following error is coming
Invalid self argument "Chain" to attribute function "gas_estimator" with type "Callable[[BaseState, BaseTransaction], int]"
Using type:ignore where __contains__ is defined and that particular class inherits MutableMapping or Mapping
Where the breakage of LSP is causing mypy problem (Mentioned in code comments)

Apart from that in some places I was forced to use VM instead of BaseVM because the BaseVM class didn't have the apply_all_transactions method.
Will make the improvements as per the review.

@cburgdorf made the changes requested. Please take a look.

@Bhargavasomu well, it shouldn't matter for most cases but unless CPython optimized out the cast it is still a noop (a function that does nothing) and if a function is called in performance critical code which is called many times per in a loop then that may still be a problem.
See also my citation of Guido van Rossum (creator of Python)

I would really hope we won't need to use or encourage casts here, since it's an expensive runtime operation (at least it is until we teach CPython about it -- right now it is a user-defined function, which is incredibly slow compared to a plain assignment)

I'm just trying to play it safe here. So my personal preference for performance critical code would be to use type: ignore over cast if needed (at all).

@cburgdorf could you please tell me which files are performance critical, so that I could replace cast with type: ignore?

@Bhargavasomu I'll take care of that. Applying some final finish.

@Bhargavasomu solid work! :+1:
I wrangled with some corner cases to get rid of some cast and type: ignore and also migrated perf critical casts to type: ignore (as discussed).
I believe there are still plenty of cases where we could do better so if you like that sort of stuff feel free to continue wrangling with type: ignore, cast and Any and send follow up PRs :)

Thankyou for helping me out @cburgdorf

hey guys, what about other bounty-marked tickets merged recently lol ))

@rayrapetyan are you saying we missed paying out a bounty? Can you point me to it?

@cburgdorf, e.g. #1402, thanks!

@rayrapetyan I'm afraid that ticket did not have a Gitcoin bounty assigned. I assume that the bounty label was added with the intention to channel it through the bounty process but then it didn't happen for whatever reasons (probably just forgotten)
I'm afraid we can't retroactively give out money for work that has already happened and had no bounty associated at that time. But I recognize that you've been doing great work and there's plenty of opportunity for you to do paid work on this project.
How would you feel about writing a Proof of Concept GraphQL plugin as described in https://github.com/ethereum/py-evm/issues/1462. Is this something that you'd have fun with?


Precompilation warning

This is a minor issue:
WARNING: method definition for adapt_structure at ~/.julia/packages/Transducers/DSfBv/src/partitionby.jl:50 declares type variable inbounds but does not use it.
WARNING: method definition for _foldl_array at ~/.julia/packages/Transducers/DSfBv/src/processes.jl:222 declares type variable T but does not use it.

Fixed by https://github.com/JuliaFolds/Transducers.jl/pull/533


20160330 api version dcos clusters are broken

They don't receive a public agent pool load balancer and are missing some of the nsg rules.

I got this fixed in my last PR


Bite size: Wikipedia bot crashes for the query !!!!@#$% .

The bot crashes with the following Indexerror
Traceback (most recent call last):
  File "run.py", line 72, in <module>
    run()
  File "run.py", line 68, in run
    quiet=options.quiet
  File "/srv/zulip/contrib_bots/bot_lib.py", line 177, in run_message_handler_for_bot
    client.call_on_each_message(handle_message)
  File "../api/zulip/__init__.py", line 500, in call_on_each_message
    self.call_on_each_event(event_callback, ['message'])
  File "../api/zulip/__init__.py", line 492, in call_on_each_event
    callback(event)
  File "../api/zulip/__init__.py", line 499, in event_callback
    callback(event['message'])
  File "/srv/zulip/contrib_bots/bot_lib.py", line 171, in handle_message
    state_handler=state_handler
  File "/srv/zulip/contrib_bots/bots/wikipedia/wikipedia.py", line 30, in handle_message
    bot_response = self.get_bot_wiki_response(message, client)
  File "/srv/zulip/contrib_bots/bots/wikipedia/wikipedia.py", line 52, in get_bot_wiki_response
    if len(data.json()['query']['search']) == 0:
  File "/usr/local/lib/python3.4/dist-packages/requests/models.py", line 885, in json
    return complexjson.loads(self.text, **kwargs)
  File "/usr/lib/python3.4/json/__init__.py", line 318, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.4/json/decoder.py", line 343, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.4/json/decoder.py", line 361, in raw_decode
    raise ValueError(errmsg("Expecting value", s, err.value)) from None
ValueError: Expecting value: line 1 column 1 (char 0)

This should be a fairly easy fix. Here are some instructions:
The problem is the # in the search term, everything after the hash in a URL is a fragment identifier. We should probably escape special characters in the query before firing it off to Wikipedia.
The escape sequence for # is %23. You might also want to check if there is any other characters that would cause a similar bug.

We can precentage-encode url for this by using urllib.parse.quote or urllib.parse.urlencode for query string

Also this applies to all the other bots.

Also this applies to all the other bots.

Yes ;), change the issue title or create a new issue for adding url encoding to all bots that has no url encoding in it?

Closing this as a duplicate of the broader #5152.


undefined method `stamper_class_name=' for ActiveRecord::Base:Class (NoMethodError)

Getting this error:
/Users/deepak/.rvm/gems/ruby-3.2.2@my_app/gems/activerecord-7.1.1/lib/active_record/dynamic_matchers.rb:22:in `method_missing': undefined method `stamper_class_name=' for ActiveRecord::Base:Class (NoMethodError)
Did you mean?  store_full_class_name=

Ruby 3.2.2
Rails 7.1.1

Thank you for reporting! I'm sorry, currently I'm not yet using Rails 7.1.1 but in the future probably.
This issue looks like Rails 7.1.1 related issue, so batch is welcomed!


Template with apiProfile not honored among resources

apiProfile does not allow for the most current api version
Using an apiProfile with an intellisensed api version, downlevel resources show problems for missing required apiVersion.

Using an apiProfile should negate the need to provide an apiVersion under a resource, but you can specify and apiVersion to override the apiProfile version.

Thanks @msft-jasonparker. I do see that the latest versions are missing from the root schema and am looking into having this updated.
https://github.com/Azure/azure-resource-manager-schemas/blob/master/schemas/2019-04-01/deploymentTemplate.json#L12

@msft-jasonparker we have added 2019-03-01-hybrid which should ship with the next releases schema package. This should take care of the example given above.
https://github.com/Azure/azure-resource-manager-schemas/pull/992
There is still some work to do to support the remaining apiProfiles and these will be added once ready. I will update this issue once released.

Unfortunately this didn't make it into our next release on Monday.  We'll probably do a hot fix soon to pick up new schemas, but I can't guarantee when because we've got a lot of releases planned this month.

Fix released with 0.11.0


Test nightwatch and cucumber

Hi! Do you want to merge this? 😀

Nope, sorry! :D just wanted to start testing something, you can close the
PR
2017-11-22 16:16 GMT+01:00 Igor Muchychka<EMAIL_ADDRESS>
Hi! Do you want to merge this? 😀
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/mucsi96/nightwatch-cucumber-example/pull/1#issuecomment-346380371,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGR7VwpErJLv-TVVyd1QhpM_WW077MQzks5s5DrOgaJpZM4Qna6S
.


free() invalid pointer - syscall trace

docker build -t dockertest-centos8 .
free(): invalid pointer
SIGABRT: abort
PC=0x7fb2e7dd2fb7 m=0 sigcode=18446744073709551610
signal arrived during cgo execution
goroutine 1 [syscall, locked to thread]:
runtime.cgocall(0x4afd50, 0xc420089cc0, 0xc420089ce8)
/usr/lib/go-1.8/src/runtime/cgocall.go:131 +0xe2 fp=0xc420089c90 sp=0xc420089c50
github.com/docker/docker-credential-helpers/secretservice._Cfunc_free(0x90eda0)
github.com/docker/docker-credential-helpers/secretservice/_obj/_cgo_gotypes.go:111 +0x41 fp=0xc420089cc0 sp=0xc420089c90
github.com/docker/docker-credential-helpers/secretservice.Secretservice.List.func5(0x90eda0)
/build/golang-github-docker-docker-credential-helpers-cMhSy1/golang-github-docker-docker-credential-helpers-0.5.0/obj-x86_64-linux-gnu/src/github.com/docker/docker-credential-helpers/secretservice/secretservice_linux.go:96 +0x60 fp=0xc420089cf8 sp=0xc420089cc0
github.com/docker/docker-credential-helpers/secretservice.Secretservice.List(0x0, 0x756060, 0xc4200163b0)
/build/golang-github-docker-docker-credential-helpers-cMhSy1/golang-github-docker-docker-credential-helpers-0.5.0/obj-x86_64-linux-gnu/src/github.com/docker/docker-credential-helpers/secretservice/secretservice_linux.go:97 +0x217 fp=0xc420089da0 sp=0xc420089cf8
github.com/docker/docker-credential-helpers/secretservice.(*Secretservice).List(0x77e548, 0xc420089e88, 0x410022, 0xc420016310)
:4 +0x46 fp=0xc420089de0 sp=0xc420089da0
github.com/docker/docker-credential-helpers/credentials.List(0x756ba0, 0x77e548, 0x7560e0, 0xc42000e018, 0x0, 0x10)
/build/golang-github-docker-docker-credential-helpers-cMhSy1/golang-github-docker-docker-credential-helpers-0.5.0/obj-x86_64-linux-gnu/src/github.com/docker/docker-credential-helpers/credentials/credentials.go:145 +0x3e fp=0xc420089e68 sp=0xc420089de0
github.com/docker/docker-credential-helpers/credentials.HandleCommand(0x756ba0, 0x77e548, 0x7ffd421247ca, 0x4, 0x7560a0, 0xc42000e010, 0x7560e0, 0xc42000e018, 0x40e398, 0x4d35c0)
/build/golang-github-docker-docker-credential-helpers-cMhSy1/golang-github-docker-docker-credential-helpers-0.5.0/obj-x86_64-linux-gnu/src/github.com/docker/docker-credential-helpers/credentials/credentials.go:60 +0x16d fp=0xc420089ed8 sp=0xc420089e68
github.com/docker/docker-credential-helpers/credentials.Serve(0x756ba0, 0x77e548)
/build/golang-github-docker-docker-credential-helpers-cMhSy1/golang-github-docker-docker-credential-helpers-0.5.0/obj-x86_64-linux-gnu/src/github.com/docker/docker-credential-helpers/credentials/credentials.go:41 +0x1cb fp=0xc420089f58 sp=0xc420089ed8
main.main()
/build/golang-github-docker-docker-credential-helpers-cMhSy1/golang-github-docker-docker-credential-helpers-0.5.0/secretservice/cmd/main_linux.go:9 +0x4f fp=0xc420089f88 sp=0xc420089f58
runtime.main()
/usr/lib/go-1.8/src/runtime/proc.go:185 +0x20a fp=0xc420089fe0 sp=0xc420089f88
runtime.goexit()
/usr/lib/go-1.8/src/runtime/asm_amd64.s:2197 +0x1 fp=0xc420089fe8 sp=0xc420089fe0
goroutine 17 [syscall, locked to thread]:
runtime.goexit()
/usr/lib/go-1.8/src/runtime/asm_amd64.s:2197 +0x1
rax    0x0
rbx    0x7ffd42123370
rcx    0x7fb2e7dd2fb7
rdx    0x0
rdi    0x2
rsi    0x7ffd42123100
rbp    0x7ffd42123470
rsp    0x7ffd42123100
r8     0x0
r9     0x7ffd42123100
r10    0x8
r11    0x246
r12    0x7ffd42123370
r13    0x1000
r14    0x0
r15    0x30
rip    0x7fb2e7dd2fb7
rflags 0x246
cs     0x33
fs     0x0
gs     0x0
Sending build context to Docker daemon  2.048kB
Step 1/13 : FROM centos:8
8: Pulling from library/centos
7a0437f04f83: Pull complete
docker version
Client: Docker Engine - Community
Version:           20.10.2
API version:       1.41
Go version:        go1.13.15
Git commit:        2291f61
Built:             Mon Dec 28 16:17:32 2020
OS/Arch:           linux/amd64
Context:           default
Experimental:      true
Server: Docker Engine - Community
Engine:
Version:          20.10.2
API version:      1.41 (minimum version 1.12)
Go version:       go1.13.15
Git commit:       8891c58
Built:            Mon Dec 28 16:15:09 2020
OS/Arch:          linux/amd64
Experimental:     false
containerd:
Version:          1.4.3
GitCommit:        269548fa27e0089a8b8278fc4fc781d7f65a939b
runc:
Version:          1.0.0-rc92
GitCommit:        ff819c7e9184c13b7c2607fe6c30ae19403a7aff
docker-init:
Version:          0.19.0
GitCommit:        de40ad0

This is not related to the image registry that's maintained in this repository.
The issue you're running into is a most likely a bug in the golang-docker-credential-helpers package that's distributed by Ubuntu. The bug is fixed in upstream, but Ubuntu is shipping an older version of the code that still has this bug; I'd recommend opening a ticket with Ubuntu to ask if the fix can be backported or a newer version of the package to be included in the version of Ubuntu you're running; see https://github.com/docker/cli/issues/1982#issuecomment-508502256, and https://github.com/docker/for-linux/issues/563#issuecomment-768166101 (and various other tickets)

This is not related to the image registry that's maintained in this repository.
The issue you're running into is a most likely a bug in the golang-docker-credential-helpers package that's distributed by Ubuntu. The bug is fixed in upstream, but Ubuntu is shipping an older version of the code that still has this bug; I'd recommend opening a ticket with Ubuntu to ask if the fix can be backported or a newer version of the package to be included in the version of Ubuntu you're running; see https://github.com/docker/cli/issues/1982#issuecomment-508502256, and https://github.com/docker/for-linux/issues/563#issuecomment-768166101 (and various other tickets)


Fix some annotations in transforms v2 for JIT v1 compatibility

TL;DR this reverts changes to the annotation of the fill and padding parameter that we made for v2, but turned out to not be compatible with the JIT behavior of v1.

We have three groups of transforms that take the fill parameter in v1:

AA family:
https://github.com/pytorch/vision/blob/f6b5b82efd0a89273f1a9274e7f1ce73c0f3971c/torchvision/transforms/autoaugment.py#L117-L118
Affine family:
https://github.com/pytorch/vision/blob/f6b5b82efd0a89273f1a9274e7f1ce73c0f3971c/torchvision/transforms/transforms.py#L1412-L1413
transforms.Pad
https://github.com/pytorch/vision/blob/f6b5b82efd0a89273f1a9274e7f1ce73c0f3971c/torchvision/transforms/transforms.py#L408-L412

In eager mode v1 and v2 behave the same and we enforce that in our consistency tests. However, for JIT they behave differently. The transforms aren't annotating the fill parameter, so we have to look at the functionals:

AA family:
https://github.com/pytorch/vision/blob/f6b5b82efd0a89273f1a9274e7f1ce73c0f3971c/torchvision/transforms/autoaugment.py#L14
Affine family:
https://github.com/pytorch/vision/blob/f6b5b82efd0a89273f1a9274e7f1ce73c0f3971c/torchvision/transforms/functional.py#L1148
F.pad:
https://github.com/pytorch/vision/blob/f6b5b82efd0a89273f1a9274e7f1ce73c0f3971c/torchvision/transforms/functional.py#L495

Let's start with the AA and affine family, since they use the same annotation:
import torch
from torchvision.transforms import functional as F_v1
from torchvision.prototype.transforms import functional as F_v2

name = "rotate"
args = (torch.rand(3, 256, 256),)
kwargs = dict(angle=30)

for version, F in [
    ("v1", F_v1),
    ("v2", F_v2),
]:
    eager = getattr(F, name)
    scripted = torch.jit.script(eager)

    print(version, name)

    for fill in [None, 1, 0.5, [1], [0.5], (1,), (0.5,), [1, 0, 1], [0.1, 0.2, 0.3], (1, 0, 1), (0.1, 0.2, 0.3)]:
        try:
            eager(*args, **kwargs, fill=fill)
            eager_result = "PASS"
        except:
            eager_result = "FAIL"

        try:
            scripted(*args, **kwargs, fill=fill)
            scripted_result = "PASS"
        except:
            scripted_result = "FAIL"

        print(f"{str(fill):>15}: eager {eager_result}, scripted {scripted_result}")

    print("-" * 80)

On main this prints:
v1 rotate
           None: eager PASS, scripted PASS
              1: eager PASS, scripted FAIL
            0.5: eager PASS, scripted FAIL
            [1]: eager PASS, scripted PASS
          [0.5]: eager PASS, scripted PASS
           (1,): eager PASS, scripted PASS
         (0.5,): eager PASS, scripted PASS
      [1, 0, 1]: eager PASS, scripted PASS
[0.1, 0.2, 0.3]: eager PASS, scripted PASS
      (1, 0, 1): eager PASS, scripted PASS
(0.1, 0.2, 0.3): eager PASS, scripted PASS
--------------------------------------------------------------------------------
v2 rotate
           None: eager PASS, scripted PASS
              1: eager PASS, scripted PASS
            0.5: eager PASS, scripted PASS
            [1]: eager PASS, scripted FAIL
          [0.5]: eager PASS, scripted PASS
           (1,): eager PASS, scripted FAIL
         (0.5,): eager PASS, scripted FAIL
      [1, 0, 1]: eager PASS, scripted FAIL
[0.1, 0.2, 0.3]: eager PASS, scripted PASS
      (1, 0, 1): eager PASS, scripted FAIL
(0.1, 0.2, 0.3): eager PASS, scripted FAIL
--------------------------------------------------------------------------------

v1 does not work with scalar ints or floats, but passes for everything else
v2 does work for Python scalars, but doesn't for tuples or sequences of integers

So how did that happen? In v2 we changed the annotation to
https://github.com/pytorch/vision/blob/f6b5b82efd0a89273f1a9274e7f1ce73c0f3971c/torchvision/prototype/datapoints/_datapoint.py#L15
Meaning, failures for the list of integers are "expected" (we'll get to why later), but what happened to the tuples? v1 didn't annotate them either?
This is caused by some (undocumented) automagic of JIT. Annotating something with List[int] will automatically handle tuple inputs as well:
@torch.jit.script
def foo(data: List[int]) -> torch.Tensor:
    if isinstance(data, int):
        data = [data]
    return torch.tensor(data)

foo((1, 2, 3))

However, if correct the annotation to Union[int, List[int]], the automagic is no longer applied:
@torch.jit.script
def bar(data: Union[int, List[int]]) -> torch.Tensor:
    if isinstance(data, int):
        data = [data]
    return torch.tensor(data)

bar((1, 2, 3))

RuntimeError: bar() Expected a value of type 'Union[List[int], int]' for argument 'data' but instead found type 'tuple'.

Well, we could just add Tuple[int] to the new annotation, right? Nope. Tuple[int] is not the equivalent to List[int]. That would be Tuple[int, ...], but that is not supported by JIT. And since fill corresponds to the number of channels that will only be known at runtime, we cannot use Tuple[int, int, int] or any other fixed number. Meaning, we need to rely on the automagic for BC and need to revert our annotation changes.

So this is the end of the story? Nope again. As we saw above, F.pad uses different annotations. Let's run our script from above with
name = "pad"
args = (torch.rand(3, 256, 256),)
kwargs = dict(padding=[2])

v1 pad
           None: eager PASS, scripted FAIL
              1: eager PASS, scripted PASS
            0.5: eager PASS, scripted PASS
            [1]: eager FAIL, scripted FAIL
          [0.5]: eager FAIL, scripted FAIL
           (1,): eager FAIL, scripted FAIL
         (0.5,): eager FAIL, scripted FAIL
      [1, 0, 1]: eager FAIL, scripted FAIL
[0.1, 0.2, 0.3]: eager FAIL, scripted FAIL
      (1, 0, 1): eager FAIL, scripted FAIL
(0.1, 0.2, 0.3): eager FAIL, scripted FAIL
--------------------------------------------------------------------------------
v2 pad
           None: eager PASS, scripted PASS
              1: eager PASS, scripted PASS
            0.5: eager PASS, scripted PASS
            [1]: eager PASS, scripted FAIL
          [0.5]: eager PASS, scripted PASS
           (1,): eager PASS, scripted FAIL
         (0.5,): eager PASS, scripted FAIL
      [1, 0, 1]: eager PASS, scripted FAIL
[0.1, 0.2, 0.3]: eager PASS, scripted PASS
      (1, 0, 1): eager PASS, scripted FAIL
(0.1, 0.2, 0.3): eager PASS, scripted FAIL
--------------------------------------------------------------------------------

v1 only works with scalars even in eager mode (None does not work while scripting)
v2 added support for multi-channel fills in eager mode and even passes on some of them during scripting

Meaning, we can keep our new annotation for F.pad since the v2 variant supports a superset of the values of v1 in eager as in scripted mode.

What's left is the padding argument on F.pad:

v1:
https://github.com/pytorch/vision/blob/f6b5b82efd0a89273f1a9274e7f1ce73c0f3971c/torchvision/transforms/functional.py#L495
v2:
https://github.com/pytorch/vision/blob/f6b5b82efd0a89273f1a9274e7f1ce73c0f3971c/torchvision/prototype/transforms/functional/_geometry.py#L1134

You can probably see where this is going. Changing the script from above to
name = "pad"
args = (torch.rand(3, 256, 256),)
kwargs = dict()

and iterating over different padding values gives us:
v1 pad
           1: eager PASS, scripted FAIL
         [2]: eager PASS, scripted PASS
        (2,): eager PASS, scripted PASS
      [3, 4]: eager PASS, scripted PASS
      (3, 4): eager PASS, scripted PASS
[5, 6, 7, 8]: eager PASS, scripted PASS
(5, 6, 7, 8): eager PASS, scripted PASS
--------------------------------------------------------------------------------
v2 pad
           1: eager PASS, scripted PASS
         [2]: eager PASS, scripted PASS
        (2,): eager PASS, scripted FAIL
      [3, 4]: eager PASS, scripted PASS
      (3, 4): eager PASS, scripted FAIL
[5, 6, 7, 8]: eager PASS, scripted PASS
(5, 6, 7, 8): eager PASS, scripted FAIL
--------------------------------------------------------------------------------

Meaning, we need to revert the new annotation and rely on the automagic handling.

If this whole story wasn't so sad, this should probably should have been a blog post rather than a PR description.
cc @vfdev-5 @bjuncek

IIUC, you didn't really add new tests to make sure everything is OK, and instead you removed some of the xfail marks so that the pre-existing tests are actually ran? Are we sure they cover all the cases we want to support?

Yes and no. Yes, I've removed some xfails, but I also expanded the tested parameters. See https://github.com/pytorch/vision/pull/7252#discussion_r1106928324. Previously we didn't test for single value lists or tuples in general for fill.


PeoplePicker in ListView Command Set Extension

Category
[ ] Enhancement
[ ] Bug
[x ] Question
Version
Please specify what version of the library you are using: [ 2.10.0 ]
Hello
I'm trying to use the People in a ListView command set extension, but I keep receiving the following error:
Type 'ExtensionContext' is not assignable to type 'WebPartContext | ExtensionContext'
Please let me know if you need more info.  Thanks in advance.

I just tried to add the people picker to a webpart and I received the following error:
Type 'WebPartContext' is not assignable to type 'WebPartContext | ExtensionContext'.
Type 'import("%ProjectDirectory%/node_modules/@microsoft/sp-webpart-base/dist/index-internal").WebPartContext' is not assignable to type 'import("%ProjectDirectory%/node_modules/@pnp/spfx-controls-react/node_modules/@microsoft/sp-webpart-base/dist/index-internal").WebPartContext'.
Types have separate declarations of a private property '_domElement'.

I don't know if this matters, but on the repository, context is set to BaseComponentContext

But when I install the package, context is WebPartContext | ExtensionContext

@jonesron - what version of SPFx and Controls are you using?
v2 is for SPFx <= 1.11
v3 is for SPFx 1.12.1
v3 beta is for SPFx 1.13

1.12.1 for the extension.  1.13 for the webpart.

the package.json says is '2.10.0' for both solutions.
I ran the npm that was on the home page:

@jonesron sorry - there was a glitch with the pipeline and incorrect version has been released as the latest one.
Could you please reinstall the package again and see if it works.
Also, if your SPFx solution is 1.13 (for example, @microsoft/sp-component-base package has version 1.13.0 in package.json) you'll need to install the beta version with npm i --save --save-exact @pnp/spfx-controls-react@next
Let me know if that works.

@AJIXuMuK the peoplepicker is now working in both of my solutions after the package update.
As always, thank you for your help.


Cross-signing: Check cross-platform conformance

We need to check against riot-web and riotX-android:

[ ] sign device

[x] Web can sign an iOS device
[ ] iOS can sign a web device

[ ] sign user

[x] A riot-web user can sign a riot-ios user
[ ] A riot-ios user can sign a riot-web user

[ ] bootstraps

[ ] ...

We have a plan for a integration tests plan.


QASM2ParseError using qasm2.load for sx gate

Environment

Qiskit Terra version: 0.24.1
Python version: 3.10
Operating system: macOS 13.4

What is happening?
When reading a qasm file with containing a sx gate, a QASM2ParseError error is thrown:
QASM2ParseError: "test.qasm:4,0: 'sx' is not defined in this scope"
How can we reproduce the issue?
from qiskit import QuantumCircuit, qasm2
qc = QuantumCircuit(1)
qc.sx(0)
qc.qasm(filename="test.qasm")
qasm2.load("test.qasm")

What should happen?
It would be expected that the qasm file can be read.
Any suggestions?
No response

Strictly, we nowadays treat this as a bug in the exporter rather than the importer - according to the OQ2 spec, there's no definition of sx in qelib1.inc, and the new OQ2 parser is respecting that, but the exporter pretends as though there is.  That said, we haven't got a clean setup for managing the header files associated with our exports yet.
In the mean time, you can get the behaviour you're expecting by using the "legacy" mode of the new parser.  In particular, this should work for you:
from qiskit import qasm2

qasm2.load(
    path,
    include_path=qasm2.LEGACY_INCLUDE_PATH,
    custom_instructions=qasm2.LEGACY_CUSTOM_INSTRUCTIONS,
    custom_classical=qasm2.LEGACY_CUSTOM_CLASSICAL,
)

You probably only need to specify the custom_instructions item of those really, but the include_path and custom_classical should make the behaviour fully compatible with the QuantumCircuit.qasm() export, even in some very unusual cases.

Strictly, we nowadays treat this as a bug in the exporter rather than the importer - according to the OQ2 spec, there's no definition of sx in qelib1.inc, and the new OQ2 parser is respecting that, but the exporter pretends as though there is. That said, we haven't got a clean setup for managing the header files associated with our exports yet.
In the mean time, you can get the behaviour you're expecting by using the "legacy" mode of the new parser. In particular, this should work for you:
from qiskit import qasm2

qasm2.load(
    path,
    include_path=qasm2.LEGACY_INCLUDE_PATH,
    custom_instructions=qasm2.LEGACY_CUSTOM_INSTRUCTIONS,
    custom_classical=qasm2.LEGACY_CUSTOM_CLASSICAL,
)

You probably only need to specify the custom_instructions item of those really, but the include_path and custom_classical should make the behaviour fully compatible with the QuantumCircuit.qasm() export, even in some very unusual cases.

Thanks a lot for the clarification and the mentioned work-around.


update(prefix): Make devfest the default prefix for DevFest season.

Looks good.

Is the site ready to deploy? Could you send some screenshots for mobile and desktop?

Yes, it's ready, but it is 100% hard coded to use gdg.events URLs. Since that domain is dead atm, deployment won't help much.
I'm working on solving this in https://github.com/Splaktar/firefly/tree/removeGdgEventsHardCoding


Create BlockIdentifier Message Type

Sometimes bip_select needs to tell clients to send a PieceMessage, but it wont know the actual payload. The clients will generally have to use something like bip_disk to get the payload from some fs to actually send the message.
We want bip_select to send a variant of PieceMessage without the data portion so clients dont get confused and think they can send that message without grabbing the data first. A wrapper type named something like BlockIdentifier would allow this, and we could use this type internally in RequestMessage, CancelMessage, as well as PieceMessage.

For tighter integration, we could also re-use bip_disks BlockMetadata type.
This would be even better if we separated these vocabulary types out into a separate crate.


Add an 'Event Viewer' example

It would be nice to have this as a general tool, and it would make sense for it to live in examples.
This should, at the very least, print out information about keyboard and mouse events. A nice inspiration might be the w3c key event viewer.
This should have a scrollable list of events, a text box, and some area that accepts mouse clicks.

Would be a starter for / side effect of #1026.


Return coordinates starting from 0,0

As it stands, flextree seems to return centered coordinates. It would be more keeping with the other d3-hierarchy style layouts if it instead returned coordinates that started from 0,0 (including the width and height of the calculated nodes). If this is an option or I shouldn't be seeing negative x values, let me know.

If the root node starts at 0,0 then you should be seeing negative X values in a tree with children. Pretty sure this is how D3 Hierarchy works as well, also with centred coords. Width and height of calculated nodes is available inside node.data.size, which is the size one has provided for the layout.

If I get to it, I'll try to make it more clear in the docs.


More tests and proptests

Right now some tests don't pass, this is due to doing modulo for negative value not working probably.
test substraction_negative_result ... FAILED
test proptest_sub ... FAILED
test proptest_add ... FAILED
test proptest_mul ... FAILED

Pull Request type

Please check the type of change your PR introduces:

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, renaming)
[ ] Refactoring (no functional changes, no API changes)
[ ] Build-related changes
[ ] Documentation content changes
[x] Testing
[ ] Other (please describe):

This reworks the way type id and names are stored (imho easier now), so that it works better with the debug code.
I also changed the return type from always being a struct to being only a struct if the function returns more than 1 value.
I need to fix a couple bugs (2 tests don't pass) and will be ready


[ISSUE-885] Fix CSINode Pod Crash When Atlantic Cluster Scale Down and then Scale Up

Signed-off-by: Shi, Crane<EMAIL_ADDRESS>Purpose
Issue dell/csi-baremetal#885
Change csi-baremetal-operator to use sigs.k8s.io/controller-runtime/pkg/client , the same lib used by csi-baremetal-node-controller, to query removed node to fix previous issue of inconsistent query result in this case.
PR checklist

[x] Add link to the issue
[ ] Choose Project
[ ] Choose PR label
[ ] New unit tests added
[ ] Modified code has meaningful comments
[ ] All TODOs are linked with the issues
[ ] All comments are resolved

Testing
Testing details

/ci

Can you explain why this changes fix issue?

Can you explain why this changes fix issue?

From my analysis of the codes of csi-baremetal-operator and csi-baremetal and the logs of different components, the root cause here is:

csi-baremetal-node-controller doesn't clean cache of mappings of k8s node to csi node resource when csibmnode resource deleted if it detects the existence of the k8s node on which the removed csibmnode resource resides.
During the execution of Atlantic platform API to remove k8s node, the query result of the removed k8s node provided by lib k8s.io/client-go/kubernetes used by csi-baremetal-operator is inconsistent with that provided by lib sigs.k8s.io/controller-runtime/pkg/client used by csi-baremetal-node-controller

In detail, when I called Atlantic platform API to remove k8s node hostname4, the removal job created on the platform side. When the job cleaned the related k8s resources and nearly finished, csi-baremetal-operator performed normal reconcile and detected the removal of k8s node hostname4 via lib k8s.io/client-go/kubernetes and delete the csibmnode resource residing on the hostname4. Then, csi-baremetal-node-controller gets the update event of removed csibmnode resource and performs the deletion of csibmnode resource. However, it used sigs.k8s.io/controller-runtime/pkg/client and found that hostname4 still existed, and in the current original logic, csi-baremetal-node-controller would not clean the cache of hostname4 to the removed csibmnode. Then the cache of deleted hostname4 to deleted csibmnode will remain there...
While we call Atlantic platform API to add k8s node hostname4 back, csi-baremetal-node-controller will reconcile k8s node hostname4 but will read its outdated cache entry,  hostname4 to the removed csibmnode. As a result, csi-baremetal-node-controller would not create a new csibmnode and would not update the node id to the annotation of hostname4. Then finally, the new csi node pod came out on hostname4 would fail to get the node id from the annotation of newly-added-back hostname4 or the csibmnode on it and kept in CrashLoopBackOff state...
Then, @safronovD suggested me to change the code to also use sigs.k8s.io/controller-runtime/pkg/client in csi-operator to query removed node and check whether this can resolve the problem.
I will update the test result soon

@rkiselenko
I worked out a new solution to add the cache clean of k8snode to bmnode if both of them deleted during the reconcilation of csi-baremetal-node-controller if it detects the deletion of k8snode, in PR https://github.com/dell/csi-baremetal/pull/895
I've built csi-baremetal images from the code in this PR and verified the solution is workable on Atlantic environment. That is, with this solution, the new csi node pod will be normally initialized without crash error in this Atlantic node-scale-down-and-then-up case.
In addition, the restore of deleted csibmnode will not happen here and CSI Uninstallation process (https://github.com/dell/csi-baremetal-operator/blob/master/docs/README.md) will not be broken either.


NETOBSERV-317 fix rendering performances issue

Following https://github.com/netobserv/network-observability-console-plugin/pull/169 some performances issues occurs depending on your resolution / window size changes. Browser freeze and a prompt ask to exit page in worst cases.
This PR change the way rows are skipped keeping PF table Tr with their attributes and only remove their content.
Also, CSSTransition has been moved on Tr level to avoid repeating these on each Td

thanks @mariomac
I will wait for some extra feedback before merge to ensure it works on every environments

/ok-to-test


PROG - Caching problems

Clicking "Refresh" after a program is updated, then abapGit does not show it as updated.
Will investigate and try to reproduce, I think it only happens on one of the SAP systems I have access to. Perhaps different system setup, or bug in SAP standard, or something else.

looks like this is due to bad time zone settings on the system.
However, it works for CLAS objects, as classes without repotext are always considered as changed, I guess this is a bug which we should fix? @sbcgua

Mmmm ... not quite sure I've understood the issue :) How to reproduce it ?

a: create new empty repo
b: add simple class to repo
c: set breakpoint at SELECT SINGLE udat utime FROM repotext in ZABAPGIT_OBJECTS
d: click "Refresh"
Nothing is found in REPOTEXT, so macro _object_check_timestamp always returns rv_changed = abap_true.

mmmm ... does not seem easy from the first glance. It just happens with text and there is no information if it was there before. What if it is deleted and thus changed ... have to think. But a bit loaded at work at the moment.
P.S. I'm starting to be a bit pessimistic about this caching stuff. As they say the most complex problems in programming are invalidation of cache and naming of variables. ;)

I think it would be okay to ignore the deletion of all texts in the caching algorithm, it would not happen very often, and probably at the same time as the ABAP code is changed.
Alternatively reconsider the approach, and regenerate the XML file every time and cache the ABAP files for CLAS.

OK, did like you suggested. Indeed this logic would fail in rare cases.

Alternatively reconsider the approach ...

If you mean that serialize should take care about what should or should not be serialized - I think it is a better in general. But I think it will not be easy. That means that serialize should have an access to some common cache (or own static attribute?). So serialize will also take timestamp as an input (or generate it internally) and decide which files to reserialize. Something like that. What do you think ? And also how needed is this ?
BTW another question: currently texts are serialized into main xml. Would it be a good idea to separate the texts file ? For PROG/CLAS and also for MSAG (maybe something else ) ? Potentially could be better readability from repo side. Just as an idea.

separate text files: I dont think so, everything should go into the main xml.
Eg. a PROG XML consists of dynpros + text symbols + selection texts + list headings + header metadata + CUA + title texts, I dont think we should start splitting some of these into individual files.

ok, just asked.
What do you think about caching questions ?

I think https://github.com/sbcgua/abapGit/commit/16ba35664cb69ad20144bcd9b0322f336fa5f492 is okay for now, redesigning caching will require some hard work

Closing then :)


Update metrics-core, metrics-json to 4.2.7 in series/0.23

Updates

io.dropwizard.metrics:metrics-core
io.dropwizard.metrics:metrics-json

from 4.2.5 to 4.2.7.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "io.dropwizard.metrics" } ]

labels: library-update, early-semver-patch, semver-spec-patch, commit-count:1

Superseded by #5763


Sky Dolly doesn't record more than a couple of seconds

Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Application version:

Visible in the "Info / About" dialog
Version [e.g. 0.5.0]

Additional context
Add any other context about the problem here.

Sky Dolly doesn't record more than a couple of seconds

I cannot reproduce this, and without exact steps how to reproduce it I cannot be of help
E.g. how do you tell exactly that it doesn't record more "than a couple of seconds"? Does it stop recording, that is, does the "Record" button get disabled? Or does it simply keep storing new samples? Does the time counter continue to run, or does it stop as well? And which version are you using anyway (not that it would make a big difference, because I never had this problem on any version.
Please provide the exact steps and observations. After all, there is a "template" for creating issues in the first place (the one that you did not complete ;))

By the tone of your response you sound to be upset about my inability to be
able to record as expected.
Please accept my apologies as that was not my intention. You guys go above
and beyond in your efforts to provide a fine product.
I went into github and opened a ticket after I followed the instructions to
record and wasn't able to do so.
I installed version 0.8.4 of Sky Dolly.
I open MSFS2020 and get ready to fly, opened Sky Dolly, press the "record"
button,  start flying. It only records a few seconds, not more than 4
seconds. I hit "play" and only see that recording.
I looked in the settings,  but I see no time limitations.
Confused
On Thu, Aug 5, 2021, 4:36 AM Oliver Knoll @.***> wrote:

I cannot reproduce this, and without exact steps how to reproduce it I
cannot be of help
E.g. how do you tell exactly that it doesn't record more "than a couple
of seconds"? Does it stop recording, that is, does the "Record" button get
disabled? Or does it simply keep storing new samples? Does the time counter
continue to run, or does it stop as well? And which version are you using
anyway (not that it would make a big difference, because I never had this
problem on any version.
Please provide the exact steps and observations. After all, there is a
"template" for creating issues in the first place (the one that you did not
complete ;))
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/till213/SkyDolly/issues/11#issuecomment-893275369,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AVC4SOXQNASLJKTY5TOOOQLT3JESTANCNFSM5BR5UJFQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email
.

"By the tone of your response you sound to be upset about my inability to be able to record as expected."
Oh, I am sorry to have sounded rude, that was not my intention, my apoligies! But your issue description was a bit short indeed. And you completely ignored the "template text" - it's there for a reason ;)
"You guys..."
Correction: that's just me  (one person) ;)
Anyway, back to your issue, for which I am grateful when people report issues! As I said I cannot reproduce this, and it is the first time that I hear about it. Now I am not saying that there isn't a bug somewhere, but we need to track it down a bit further.
First of all, yes, there is an "issue" with the timer which shows the recorded time (right next to the "time slider"): that timer is "driven" by recorded data. Now here is the thing: Sky Dolly requests the data ("simulation variables") in such a way that the simulator (Flight Simulator 2020, or FS 2020 in short) only sends them when their values actually change. This is both for performance reasons (the less often FS 2020 needs to send respetively later receive data, the better), and also for "storage" reasons ("less data to store").
Now here is the thing: normally there is always at least one (set of) simulation variable changing, typically the "position" (latitude and longitude), so the recording timer is being updated. However: if you start "from cold and dark", that is you first need to enable batteries, APU, ... and most importantly, your aircraft stands completely inert on its parking space, then it is quite normal that FS 2020 is "completely quiet". And during that time the recording timer isn't updated either.
But - and that is the important part - the recording is still going on (and the "Record" button should still be "enabled" (pushed) and show a "red recording icon"). And as soon as you operate, say, the throttle or the flaps the timer will get updated and show the correct (= total recorded) time. And as soon as your aircraft actually starts moving the timer is constantly being updated.
(Now the timer which does not get updated is something that has personally irritated me as well a couple of times, and I might address this issue with a "timer based update mechanism" in the future - but I do not consider it a "pressing issue" right now).
So again I ask the same questions:

How exactly do you tell that "recording has stopped"? For instance, does the "Record" button become de-activated somehow?
Are you perhaps pushing some key (for instance the spacebar or ESC, which, yes, does stop the recording) while the Sky Dolly app has focus? (I am talking from experience here ;))
Are you starting "in the air" (= flying) or "from cold and dark" (see "timer issue" above)?
Does this happen with other aircrafts, or perhaps just with one type? Any third party aircrafts involved (if so, please also test with the "stock aircrafts" coming with FS 2020)?
Sky Dolly uses the "SimConnect API" to communicate with FS 2020, which on its turn communicates via "local pipes" with the simulator: do you have any "anti-virus or custom firewall software" installed which could interfere with such "interprocess communication"?
Note that the Windows 10 "built-in firewall" should be fine (I have it activated as well)
Which Windows version are you using (I assume Windows 10 and not some preview/developer version of Windows 11)?

So perhaps you could create and attach a screenshot just when you think (or it really did stop) that recording has stopped.
And no, there is no limitation of recording time (except your RAM - but Sky Dolly efficiently stores the data).

So here is an illustration of what I meant: even though I am already at least 30 seconds into the recording, the recording timer is still at 00:00.0 - but note the recording button, which is still active.
As soon as you "move a lever" (or the aircraft), or any other "simulation variable" change and the timer gets updated (and keeps running as soon as at least one simulation variable keeps changing).
Again, something I will look into in the future, but the timer is not a pressing issue.
But it sounds like you have a different problem?
I am recording an A320neo (stock version, not the FBW variant!) from "cold and dark" right now (with the exact same v0.8.4 that has been released), and the recording keeps going as expected.

Oliver,
I just got in and tried Sky Dolly. It in fact recorded a brief 4+ minutes.
I was able to play the file and it went perfectly.
Started flying in the air, went into Sky Dolly, hit record and it worked as
it should.
Thank you for your patience. I happened to see a YT video yesterday and the
guy was using Sky Dolly so I decided to try it.
Looks and works fine. If I might ask. In order to open the executable I
have to go to my download files. Did I do something wrong in the
installation? Can I open it directly from MSFS2020? Or can I create a
shortcut on the desktop so it's there when I need it? I'm not a computer
expert. There's a huge learning curve also if I want to edit and share the
whole file or a piece of it.
Thanks again.
On Thu, Aug 5, 2021 at 1:37 PM Oliver Knoll @.***>
wrote:

"By the tone of your response you sound to be upset about my inability to
be able to record as expected."
Oh, I am sorry to have sounded rude, that was not my intention, my
apoligies! But your issue description was a bit short indeed. And you
completely ignored the "template text" - it's there for a reason ;)
"You guys..."
Correction: that's just me (one person) ;)
Anyway, back to your issue, for which I am grateful when people report
issues! As I said I cannot reproduce this, and it is the first time that I
hear about it. Now I am not saying that there isn't a bug somewhere, but we
need to track it down a bit further.
First of all, yes, there is an "issue" with the timer which shows the
recorded time (right next to the "time slider"): that timer is "driven" by
recorded data. Now here is the thing: Sky Dolly requests the data
("simulation variables") in such a way that the simulator (Flight Simulator
2020, or FS 2020 in short) only sends them when their values actually
change. This is both for performance reasons (the less often FS 2020 needs
to send respetively later receive data, the better), and also for "storage"
reasons ("less data to store").
Now here is the thing: normally there is always at least one (set of)
simulation variable changing, typically the "position" (latitude and
longitude), so the recording timer is being updated. However: if you start
"from cold and dark", that is you first need to enable batteries, APU, ...
and most importantly, your aircraft stands completely inert on its parking
space, then it is quite normal that FS 2020 is "completely quiet". And
during that time the recording timer isn't updated either.
But - and that is the important part - the recording is still going on
(and the "Record" button should still be "enabled" (pushed) and show a "red
recording icon"). And as soon as you operate, say, the throttle or the
flaps the timer will get updated and show the correct (= total recorded)
time. And as soon as your aircraft actually starts moving the timer is
constantly being updated.
(Now the timer which does not get updated is something that has personally
irritated me as well a couple of times, and I might address this issue with
a "timer based update mechanism" in the future - but I do not consider it a
"pressing issue" right now).
So again I ask the same questions:

How exactly do you tell that "recording has stopped"? For instance,
does the "Record" button become de-activated somehow?
Are you perhaps pushing some key (for instance the spacebar or ESC,
which, yes, does stop the recording) while the Sky Dolly app has focus? (I
am talking from experience here ;))
Are you starting "in the air" (= flying) or "from cold and dark"
(see "timer issue" above)?
Does this happen with other aircrafts, or perhaps just with one
type? Any third party aircrafts involved (if so, please also test with the
"stock aircrafts" coming with FS 2020)?
Sky Dolly uses the "SimConnect API" to communicate with FS 2020,
which on its turn communicates via "local pipes" with the simulator: do you
have any "anti-virus or custom firewall software" installed which could
interfere with such "interprocess communication"?
Note that the Windows 10 "built-in firewall" should be fine (I have
it activated as well)
Which Windows version are you using (I assume Windows 10 and not
some preview/developer version of Windows 11)?

So perhaps you could create and attach a screenshot just when you think
(or it really did stop) that recording has stopped.
And no, there is no limitation of recording time (except your RAM - but
Sky Dolly efficiently stores the data).
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/till213/SkyDolly/issues/11#issuecomment-893654600,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AVC4SOQQTB6SSIUSSLQB7ALT3LD4DANCNFSM5BR5UJFQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email
.

--
Carlo Pérez

„It in fact recorded a brief 4+ minutes“
Ah, that sounds much better, doesn‘t it. For a moment I thought that the most basic functionality was broken ;)
„Ihappened to see a YT video yesterday and the guy was using Sky Dolly so I decided to try it.“
Out of curiosity, may I ask which video that was, I you happen to remember its link (or title/author)?
„In order to open the executable I have to go to my download files. Did I do something wrong in the installation?“
No, you did everything correct! For the time being (while in active development, adding and improving basic features) Sky Dolly does not come yet with an „installer“ (setup.exe or the like). That means you simply download and unzip the ZIP archive to any location of your preference. That means you can move the unzipped „SkyDolly“ folder (which contains the SkyDolly.exe and all its required libraries) to wherever you like (and have write-access).
And yes, you can - manually - create a shortcut, too. That should be possible by right-clicking on the SkyDolly.exe - after you have moved the SkyDolly folder to the desired location, of course - and select „Create shortcut“ (or similar - I am currently typing this answer on a mobile device, not Windows ;)).
Once the shortcut (file) has been created you can move (or copy) it onto the desktop, into the taskbar or even into the Windows start menu.
As of Sky Dolly v0.8 you can also „associate“ the „logbooks“ (with suffix *.sdlog - as in „Sky Dolly logbook“) with Sky Dolly, such that when you double-click on such a file it gets opened automatically with Sky Dolly (which also launches a new instance).
By default the logbook is created in „c:\Users[Your Username]\Documents\Sky Dolly\“ - right-click on the logbook file (*.sdlog) and choose „Open with…“ - there should also be an „Always open with“-checkbox that you may want to check.
And yes, that is all stuff that an „installer“ would normally do for you - but we are not there yet.
And no, I don‘t know currently whether the „FS2020 SDK“ allows to at least create a „shortcut“, e.g. somewhere in the „flight menu“. But Sky Dolly is an „external application“ anyway, so you may as well start it „the normal way“. But „integrating a shortcut“ into FS2020 is something that I may look into into more detail in the future…
„ if I want to edit and share the whole file or a piece of it.“
Note that Sky Dolly „merely“ replays the recorded „simulation variables“, that is you need FS2020 running to „replay the flight“. Sky Dolly does not create videos that you could share (or edit) - and currently I don‘t intend to add „video export capabilities“. Why? Because there already are applications for „screen capture“. Myself I am using
https://obsproject.com/
That being said, you can export your recordings as either „CSV“ or - newly - as KML („Google Earth“) files. CSV files can be imported into another Sky Dolly instance („share with your friends“) and replayed on another computer (which of course also needs Sky Dolly and of course FS 2020), KML files can be opened with Google Earth (also in the browser, although I recommend the app).
I hope you enjoy Sky Dolly!
I will now close this issue.

And yes, a „manual“ is also - somewhere ;) - on the todo list. For now you may also refer to the „Frequently Asked“ section on https://de.flightsim.to/file/9067/sky-dolly - it may also answer some questions which may arise in the future.

Just finished recording two more videos. Over 16 minutes of footage. No
problem.
I did notice that I need to have MSFS2020 in order to playback the video. I
also noticed that I have to close Sky Dolly and reopen in order to start
recording a new video.
The YouTube video Sky Dolly was mentioned is here:
https://www.youtube.com/watch?v=FNfIORkZdTo&t=1582s
I was able to create the "shortcut" to my desktop.
You have pretty much answered all my questions. Thanks for your time. Good
job to you and your team.
On Thu, Aug 5, 2021 at 3:23 PM Oliver Knoll @.***>
wrote:

„It in fact recorded a brief 4+ minutes“
Ah, that sounds much better, doesn‘t it. For a moment I thought that the
most basic functionality was broken ;)
„Ihappened to see a YT video yesterday and the guy was using Sky Dolly so
I decided to try it.“
Out of curiosity, may I ask which video that was, I you happen to remember
its link (or title/author)?
„In order to open the executable I have to go to my download files. Did I
do something wrong in the installation?“
No, you did everything correct! For the time being (while in active
development, adding and improving basic features) Sky Dolly does not come
yet with an „installer“ (setup.exe or the like). That means you simply
download and unzip the ZIP archive to any location of your preference. That
means you can move the unzipped „SkyDolly“ folder (which contains the
SkyDolly.exe and all its required libraries) to wherever you like (and have
write-access).
And yes, you can - manually - create a shortcut, too. That should be
possible by right-clicking on the SkyDolly.exe - after you have moved the
SkyDolly folder to the desired location, of course - and select „Create
shortcut“ (or similar - I am currently typing this answer on a mobile
device, not Windows ;)).
Once the shortcut (file) has been created you can move (or copy) it onto
the desktop, into the taskbar or even into the Windows start menu.
As of Sky Dolly v0.8 you can also „associate“ the „logbooks“ (with suffix
*.sdlog - as in „Sky Dolly logbook“) with Sky Dolly, such that when you
double-click on such a file it gets opened automatically with Sky Dolly
(which also launches a new instance).
By default the logbook is created in „c:\Users[Your
Username]\Documents\Sky Dolly\“ - right-click on the logbook file (*.sdlog)
and choose „Open with…“ - there should also be an „Always open
with“-checkbox that you may want to check.
And yes, that is all stuff that an „installer“ would normally do for you -
but we are not there yet.
And no, I don‘t know currently whether the „FS2020 SDK“ allows to at least
create a „shortcut“, e.g. somewhere in the „flight menu“. But Sky Dolly is
an „external application“ anyway, so you may as well start it „the normal
way“. But „integrating a shortcut“ into FS2020 is something that I may look
into into more detail in the future…
„ if I want to edit and share the whole file or a piece of it.“
Note that Sky Dolly „merely“ replays the recorded „simulation variables“,
that is you need FS2020 running to „replay the flight“. Sky Dolly does not
create videos that you could share (or edit) - and currently I don‘t intend
to add „video export capabilities“. Why? Because there already are
applications for „screen capture“. Myself I am using
https://obsproject.com/
That being said, you can export your recordings as either „CSV“ or - newly

as KML („Google Earth“) files. CSV files can be imported into another Sky
Dolly instance („share with your friends“) and replayed on another computer
(which of course also needs Sky Dolly and of course FS 2020), KML files can
be opened with Google Earth (also in the browser, although I recommend the
app).

I hope you enjoy Sky Dolly!
I will now close this issue.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/till213/SkyDolly/issues/11#issuecomment-893723790,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AVC4SOS23HIVMVGM2GLRKC3T3LQLFANCNFSM5BR5UJFQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email
.

--
Carlo Pérez

"I also noticed that I have to close Sky Dolly and reopen in order to start recording a new video."
Hmm, that shouldn't be required. But you need to make sure that "no playback is running". So double-check that the "Play" button is not enabled (or simply press the "Stop" button, to make sure).
Once no playback (and of course no other recording) is running you should be able to simply press the "Record" button again (or press key R) and recording should resume, with the current flight situation (and aircraft) that you have currently loaded ("Ready to fly") in FS 2020.
Note however that the "recording mode" changes depending on which "module" ("Logbook" or "Formation") you are currently in: when you are in the "Formation" module (press key F2) then the aircraft is added to the current flight (the "formation"). So yes, a "flight" can have more than one aircraft.
So if you really want to record a new "flight" - "from scratch", so to speak - then make sure you are back in the "Logbook" module (press F1). After recording has finished the newly recorded flight should show up in the logbook table.
Simply double-click on any flight in the logbook table to "load it into memory", for replay (or select the flight row in the table and press the "Load" button, at the bottom of the logbook table).
Again, you shouldn't need to have to "stop and restart Sky Dolly" - even when FS 2020 does crash you should not need to restart Sky Dolly either: it should automatically "reconnect" with the newly started FS 2020 once you press one of the "Play", "Record", "Rewind", "Fast Forward" etc. buttons (there are still some "special cases" related to "formation flying" where the "AI aircrafts" are not always properly created, I am still looking into these "special cases". But if that happens simply load the flight again in Sky Dolly, which re-sends a request to "Generate AI aircrafts" - but even then, no restart of Sky Dolly required).
By the way I did not find any reference to Sky Dolly - neither in the video (I skipped through it in like 30 second intervals) nor in its description - in the video you linked to: that video seems to exclusively talk about "NeoFly". Maybe he briefly mentions Sky Dolly quickly at some point?
But in any case: nice that this video apparently made you discover SkyDolly ;)


Fix Codeclimate ("hlint lint" is broken)

I don't know how this slipped, but apparently hlint lint doesn't work anymore and thus Codeclimate HLint integration is broken.
This PR removes "hlint lint" from the Codeclimate Dockerfile, but we might also want to remove mentions of "[lint]" from the CLI docs:
hlint lint --help
HLint v2.2.2, (C) Neil Mitchell 2006-2019

hlint [lint] [OPTIONS] [FILE/DIR]
...

hlint lint .
Couldn't find file: lint

hlint lint . works absolutely fine for me... I wonder if it's your build, some shell script wrapper, an old version, mismatched compiler/libraries or what... Can anyone else reproduce it not working?

Oh, I found how to reproduce it.
# .hlint.yaml
- arguments:
    - -XTypeApplications
    - -XQuasiQuotes

If you have - arguments: set in your .hlint.yaml, it breaks.

The arguments are prepended to the command line, which works really badly if you have a mode at the start. To be honest, I'm still not sure how arguments in the YAML file should be handled. Maybe at the end is better?

I think this should be discussed in a separate issue, and for now we should decide what to do with this PR. Is it safe to remove the mode from the HLint invocation? If yes, I'd rather unbreak Codeclimate first. If it's not {safe/future-proof/etc} I'll close this PR and we can get to the drawing board.

The only reason to type lint explicitly is that there's a risk the first argument might itself be lint (or one of the other HLint modes). Since you explicitly pass --cc first that can't be the case, so this change seems nice and safe.
I agree there's a bigger issue around arguments to be discussed elsewhere.


Erlang 21 Support

It seems Erlang 21 removed the support to apply records to function names, created workaround that takes first element as module and pass the record to the Args.

Thanks for submitting this. I appreciate sending something that works.  Unfortunately, there's a bit of a maintenance and readability nightmare here.  The whole element(1, Bridge) thing is a big problem.
The much simpler approach is to just use the sbw module.
So Bridge:query_params() should just be sbw:query_params(Bridge).
I'll go through and fix these and you'll still get credit for the work :).  But this definitely needs to be fixed :).
Thanks!


ssh: deprecate ssh.softwareversion keyword

Ticket
Redmine ticket: https://redmine.openinfosecfoundation.org/issues/2377
#1928 with deprecation only in 8

Should not be merged until the deprecation goes through on Suricata side.

Merged in #1981, thanks!


Convert HISTORY.rst from UTF-8 format to ASCII

UTF-8 formatted file breaks installations on some systems:
Traceback (most recent call last):
File "setup.py", line 34, in
long_description=open('README.rst').read() + '\n\n' + open('HISTORY.rst').read(),
File "/home/peko/autobuild/instance-1/output/target/usr/lib/python3.6/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 1125: ordinal not in range(128)
To fix this error just replace '§' with 'S' meaning 'Section'.

Rather than change the readme, why don't we use codecs.open to open the file? That way we won't run into this problem in the future either. 😉

I see it is already fixed in upstream. In Buildroot we had a 3.0.0 release where the files were just opened without using codecs. I'm closing this PR.


Add Commitizen support

It would be nice to make doing conventional commits easier. A pre-commit check would be a nice touch too!
There's also (Glitter)[https://github.com/Milo123459/glitter] which seems to involve even extra tooling.

Added in #164


NPC Animator Plugin

Lets users set and run animations on NPCs and their own character.
This plugin is intended to be used to make the NPCs feel more alive and to give them a little extra personality. It might also be useful for players who want to make role-playing videos.
Features:

Save any animation in the game with your own customizable name for it.
Run any animation on your own player.
Run any animation on any NPC.
Save animations for individual NPCs as 'Greetings'

Example: Save the bow animation for King Roald so when you interact with him, he bows to you.

Run all saved NPC animations at the same time.

Use this to run all the saved greeting animations or just 1 specific animation on all saved NPCs.

Run an animation on all spawned NPCs at the same time.

You're adding a nav button here which is never removed, even on plugin shutdown, so disabling your plugin would not remove this button and toggling it would add multiple buttons. Please ensure it is removed on shutDown().

You're adding a nav button here which is never removed, even on plugin shutdown, so disabling your plugin would not remove this button and toggling it would add multiple buttons. Please ensure it is removed on shutDown().

I fixed this as requested and also fixed a UI bug. However, I cannot verify the workflow checks pass as it's awaiting approval from a maintainer.


Is there a feature to reverse the filters?

Expected Behavior
For example I have a column: Trainings Attended and I want to see those who hasn't attended the English Proficiency training yet. Is there a workaround where when I filter the English Proficiency training it will show the rows where it doesn't have English Proficiency training?

As of 2.4.0 you can create custom filter logic per column via filterOptions: { logic: function }.


Make post-editor responsively

This PR has...

Add new open-sidebar button at navbar on post-editor page
Duplicate animation set from content component to post-editor component
Introduce new state for handling editor component
Refactor app state by wrapping inside its parent component

Codecov Report

Merging #49 into master will not change coverage.
The diff coverage is 100%.

@@           Coverage Diff           @@
##           master      #49   +/-   ##
=======================================
  Coverage   91.28%   91.28%
=======================================
  Files          28       28
  Lines         998      998
=======================================
  Hits          911      911
  Misses         84       84
  Partials        3        3

Impacted Files
Coverage Δ

pkg/storage/handler.go
47.32% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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