Switch to Poetry from Pipenv

Related
Related to #286. Additiona background can be read in this comment.
Description

This PR replaces Pipenv with Poetry, the tool that is ideologically closest to Pipenv. Poetry offers us the ability to depend on other packages in the monorepo, so to see this in action, the license and attribution related functionality in the API has been separated into its own package at packages/ov-attribution.
Please note that this PR is only a test, demonstration and proof-of-concept. Poetry has not yet been finalised as our new package manager. I mainly opened the PR to see how this works in CI.
Testing Instructions

🚧 WIP

Install Poetry.
Build the new Docker image with just dc build web.
Explore the editable local package by changing something in packages/ov-attribution to see the change immediately in the API.
Run the tests. (Or don't, CI has you covered.)

Test ov-attribution with cd packages/ov-attribution && poetry run pytest.
Test the API with just api/test.

Checklist

[x] My pull request has a descriptive title (not a vague title likeUpdate index.md).
[x] My pull request targets the default branch of the repository (main) or a parent feature branch.
[x] My commit messages follow best practices.
[x] My code follows the established code style of the repository.
[x] I added or updated tests for the changes I made (if applicable).
[x] I added or updated documentation (if applicable).
[x] I tried running the project locally and verified that there are no visible errors.
[ ] I ran the DAG documentation generator (if applicable).

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

I'm testing this out locally and tried the instructions - I made some changes to packages/ov-attribution/ov_attribution/attribution.py and the API did not reload 🤔 In fact, it took rebuilding the web image to get the changes to appear. Is that intended?

It should have reflected immediately because the ov-attribution package is mounted into the API image during development so changes should reflect immediately. I suspect it's because the Django API is not reloading when the package changes because it's not watching it and not automatically reloading. I'll try to fix it.

I feel like the openverse_ prefix is too verbose. But doable.
Maybe py_packages and js_packages? They're shorter than full names and equal in length to each other. But no solid opinions from me on that (a terrible set of names would be 🐍_packages/ and 🟨_packages/; this is probably the only set I would strongly oppose haha). I wanted to keep the number of root folders in the repo to a minimum but I agree that Python and JS packages should not be in one folder as that breeds confusion.
I'll also look into the src/ layout. I felt nice about the symmetry of api/api and ov-attribution/ov_attribution but if the src/ layout is better, we'll use that 👍.

Maybe py_packages and js_packages

Works for me!

@dhruvkb should this be drafted while we review #4128? I'm a bit confused at which I should look at first?

@AetherUnbound I undrafted it because I felt quite confident that PDM would be our pick and also so I could also receive feedback on the actual implementation of the migration like that from @sarayourfriend regarding using an src/ layout and naming the dirs py-packages.
Now that #4128 is merged, feel free to review this PR as deeply as you like. Thanks!

@obulat to keep this PR small (already 35 files changed) I made a separate issue to cover CI changes #4167.

@obulat good call, done.

I think we should have packages/python/ instead of py-packages/ at the top level (to mirror what we have in automation/).

I love this, Madison! :100:

Install PDM. I recommend using the pipx approach, I am too.

FWIW, this isn't the official recommendation from PDM, and I think I've run into weird virtual environment issues sometimes when using the pipx approach that I never had happen when using the project's own recommendation: https://pdm-project.org/en/latest/#recommended-installation-method
If you're not having issues, no worried, but if anyone does run into things, I was able to get everything working without a hitch by avoiding pipx for this.

Since these changes are working and the idea has approval, I will merge this PR. Not dismissing any of the comments from the reviews, I'll make separate issues for each of them and add them to the milestone.


[kubernetes] openebs related services should be running in namespace/openebs

With 0.3, openebs services and the containers (related to OpenEBS volumes) are running in the default namespace. For better abstraction and usability, it will be good to have them under the namespace/openebs.
Following need to be investigated as part of this implementation:

Changes to the default provisioner (which currently expects that maya-apiserver is in default namespace)
Changes to the maya-apiserver to launch the jiva/openebs-volume containers in "openebs" namespace

Verify if any further changes are required to the flow for PV (openebs-volume) to connect to the controller via the (service) cluster IP.

I suggest moving this to kibe-system namespace. Any pod/deployment thats not application specific and is more likely related to provide low level functionalities ( think of it like the kernel) can go in kibe-system. Ideally for end users, when they have so many namespaces, there is always a risk of non kibe-system namespaces getting purged. Since the openebs once in use are purged by accident would be catastrophic. kube-system comes handy there.

Instead of hardcoding namespace again from default to kube-system, could it be configurable and has some default value? This will cover Miyurz's needs and make space for customization.
Also, current implementation of getMayaClusterIP doesn't work when service defined with externalName and will be great to have name maya-apiserver-service configurable in the openebs-provisioner

OpenEBS provisioner can identify its own namespace and search for maya-apiserver-service in the same namespace. Here, we are reading the namespace of openebs-provisioner from OPENEBS_NAMESPACE env variable. If provisioner is unable to find OPENEBS_NAMESPACE variable then it should set the namespace to default.
To set OPENEBS_NAMESPACE to the namespace.
In openebs-operator.yaml add following:
env:
- name: OPENEBS_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace

PR is merged in kubernetes-incubator & this feature will be available with upcoming release.


ovn-sbctl daemon process exit when list non-existed ha_chassis

OVN/OVS version
OVN：21.09
OVS：2.16.2
Steps

Run ovn-sbctl process using daemon mode.

ovn-sbctl --no-leader-only --db=tcp:<IP_ADDRESS>:6642 --detach --log-file=/tmp/ovn-sbctl.log -u /tmp/mysock.ctl

List non-existed ha_chassis

root@slave2:ovn# ovn-sbctl -u /tmp/mysock.ctl list ha_chassis_group
_uuid               : 5e232e9f-41bf-402e-b6f5-9ab04b34e005
external_ids        : {}
ha_chassis          : [8204b31f-8b13-4f62-82d0-2356604e0fb5, a7f831a9-fce5-459e-b705-1e54cb03e957]
name                : ha1
ref_chassis         : [1899d4e4-8c2d-4a9e-b956-ee2ba6bebc02, d8c23726-a6f7-4847-bd34-6f1b462a11ce]

root@slave2:ovn# ovn-sbctl -u /tmp/mysock.ctl list ha_chassis 8204b31f-8b13-4f62-82d0-2356604e0fb5
_uuid               : 8204b31f-8b13-4f62-82d0-2356604e0fb5
chassis             : 1899d4e4-8c2d-4a9e-b956-ee2ba6bebc02
external_ids        : {chassis-name=hv1}
priority            : 2

root@slave2:ovn# ovn-sbctl -u /tmp/mysock.ctl list ha_chassis abc
2022-08-19T06:27:55Z|00001|unixctl|WARN|error communicating with unix:/tmp/mysock.ctl: End of file
ovn-sbctl: /tmp/mysock.ctl: transaction error (Unknown error -1)

Check ovn-sbctl process and log

2022-08-19T06:27:55.099Z|00150|util|EMER|lib/db-ctl-base.c:303: assertion name_type == OVSDB_TYPE_STRING failed in get_row_by_id()

root@slave2:utilities# ps -efl|grep ovn-sb
0 S root     2238841 2186224  0  80   0 -  2040 pipe_w 06:29 pts/0    00:00:00 grep --color=auto ovn-sb

We found that ovn-sbctl process was exited as the error that assertion name_type == OVSDB_TYPE_STRING.
Analyze
We debug that issue and the stack information is as follows.
(gdb) bt
#0  get_row_by_id (ctx=0x56001d036b90, multiple_matches=<synthetic pointer>, record_id=0x56001cf4d960 "abc", id=0x56001b6f5fc0 <tables+1248>, table=0x56001b6fcc30 <sbrec_table_classes+624>)
    at lib/db-ctl-base.c:303
#1  ctl_get_row (ctx=ctx@entry=0x56001d036b90, table=0x56001b6fcc30 <sbrec_table_classes+624>, record_id=0x56001cf4d960 "abc", must_exist=must_exist@entry=true, rowp=rowp@entry=0x7ffc66715c90)
    at lib/db-ctl-base.c:395
#2  0x000056001b4f93c8 in cmd_list (ctx=0x56001d036b90) at lib/db-ctl-base.c:1211
#3  0x000056001b4bb5ea in do_dbctl ()
#4  0x000056001b4ba769 in main_loop ()
#5  0x000056001b4bc3c7 in server_cmd_run ()
#6  0x000056001b559f9e in process_command (request=<optimized out>, conn=0x56001cf15540) at lib/unixctl.c:311
#7  run_connection (conn=0x56001cf15540) at lib/unixctl.c:345
#8  unixctl_server_run (server=<optimized out>) at lib/unixctl.c:396
#9  0x000056001b4bc83e in server_loop ()
#10 0x000056001b4ba40f in ovn_dbctl_main ()
#11 0x000056001b4c0c27 in main ()
(gdb) p name_type
$1 = OVSDB_TYPE_UUID

We analyzed codes and the get_row_by_id write that “We only support integer and string names (so far).”.
    /* We only support integer and string names (so far). */
    if (name_type == OVSDB_TYPE_INTEGER) {
        if (!record_id[0] || record_id[strspn(record_id, "0123456789")]) {
            return NULL;
        }
    } else {
        ovs_assert(name_type == OVSDB_TYPE_STRING);
    }

But when list non-existed ha_chassis, the name_type is set OVSDB_TYPE_UUID that stack information above can watch.
    if (!id->key) {
        name_type = key = id->name_column->type.key.type;
        value = OVSDB_TYPE_VOID;
    } else {
        key = OVSDB_TYPE_STRING;
        name_type = value = id->name_column->type.value.type;
    }

We view HA_Chassis's data structure.
        "HA_Chassis": {
            "columns": {
                "chassis": {"type": {"key": {"type": "uuid",
                                             "refTable": "Chassis",
                                             "refType": "weak"},
                                     "min": 0, "max": 1}},
                "priority": {"type": {"key": {"type": "integer",
                                              "minInteger": 0,
                                              "maxInteger": 32767}}},
                "external_ids": {
                    "type": {"key": "string", "value": "string",
                             "min": 0, "max": "unlimited"}}},
            "isRoot": false},

id->name_column->type.key.type is uuid type.
Solution
We remove the SBREC_TABLE_HA_CHASSIS ctl_table_class can solve the issue.
static const struct ctl_table_class tables[SBREC_N_TABLES] = {
    [SBREC_TABLE_CHASSIS].row_ids[0] = {&sbrec_chassis_col_name, NULL, NULL},

    [SBREC_TABLE_CHASSIS_PRIVATE].row_ids[0]
    = {&sbrec_chassis_private_col_name, NULL, NULL},

    [SBREC_TABLE_DATAPATH_BINDING].row_ids
     = {{&sbrec_datapath_binding_col_external_ids, "name", NULL},
        {&sbrec_datapath_binding_col_external_ids, "name2", NULL},
        {&sbrec_datapath_binding_col_external_ids, "logical-switch", NULL},
        {&sbrec_datapath_binding_col_external_ids, "logical-router", NULL}},

    [SBREC_TABLE_PORT_BINDING].row_ids
     = {{&sbrec_port_binding_col_logical_port, NULL, NULL},
        {&sbrec_port_binding_col_external_ids, "name", NULL}},

    [SBREC_TABLE_MAC_BINDING].row_ids[0] =
    {&sbrec_mac_binding_col_logical_port, NULL, NULL},

    [SBREC_TABLE_ADDRESS_SET].row_ids[0]
    = {&sbrec_address_set_col_name, NULL, NULL},

    [SBREC_TABLE_PORT_GROUP].row_ids[0]
    = {&sbrec_port_group_col_name, NULL, NULL},

    [SBREC_TABLE_HA_CHASSIS_GROUP].row_ids[0]
    = {&sbrec_ha_chassis_group_col_name, NULL, NULL},

    // Remove the SBREC_TABLE_HA_CHASSIS
    // [SBREC_TABLE_HA_CHASSIS].row_ids[0]
    // = {&sbrec_ha_chassis_col_chassis, NULL, NULL},

    [SBREC_TABLE_METER].row_ids[0]
    = {&sbrec_meter_col_name, NULL, NULL},

    [SBREC_TABLE_SERVICE_MONITOR].row_ids[0]
    = {&sbrec_service_monitor_col_logical_port, NULL, NULL},

    [SBREC_TABLE_DHCP_OPTIONS].row_ids[0]
    = {&sbrec_dhcp_options_col_name, NULL, NULL},

    [SBREC_TABLE_DHCPV6_OPTIONS].row_ids[0]
    = {&sbrec_dhcpv6_options_col_name, NULL, NULL},

    [SBREC_TABLE_CONNECTION].row_ids[0]
    = {&sbrec_connection_col_target, NULL, NULL},

    [SBREC_TABLE_RBAC_ROLE].row_ids[0]
    = {&sbrec_rbac_role_col_name, NULL, NULL},

    [SBREC_TABLE_RBAC_PERMISSION].row_ids[0]
    = {&sbrec_rbac_permission_col_table, NULL, NULL},

    [SBREC_TABLE_GATEWAY_CHASSIS].row_ids[0]
    = {&sbrec_gateway_chassis_col_name, NULL, NULL},

    [SBREC_TABLE_LOAD_BALANCER].row_ids[0]
    = {&sbrec_load_balancer_col_name, NULL, NULL},
};

If the solution is available, I prepare to submit the code.

I don't think this is the right solution.  Its just avoiding the problem.
Maybe it needs a fix here - https://github.com/openvswitch/ovs/blob/master/lib/db-ctl-base.c#L366
@igsilya @dceara  do you've any comments ?
Thanks

I don't think this is the right solution. Its just avoiding the problem.
Maybe it needs a fix here - https://github.com/openvswitch/ovs/blob/master/lib/db-ctl-base.c#L366

@numansiddique Maybe, but on the other hand I'm wondering what the original intention was.

@igsilya @dceara do you've any comments ?

Let's say we have a:
Chassis {.uuid = U1, ...}
HA_Chassis {.uuid = U2, .chassis=U1}

If I understand the purpose of the ovn-sbctl code, we'd expect:
$ ovn-sbctl list HA_Chassis U1

To return the HA_Chassis with .uuid=U2.
I find that a bit confusing. We can already do:
$ ovn-sbctl find HA_Chassis chassis=U1

Which returns the HA_Chassis with .uuid=U2.  This is more clear in my opinion.
I think i'd be fine with removing the lines as suggested by @gujun4990. The lookup doesn't work anyway.

@dceara  Thanks.
I understood the problem now.
@gujun4990 please feel free to submit the patch (preferred) or a  PR
Thanks

OK

Fixed via<EMAIL_ADDRESS>


include "stdint.h" by .cpp file

Step 1: Are you in the right place?
GitHub issues only for bugs or improvements of the library. All other topics, e.g. hardware/programming, will be closed.
For general support from the community, see Arduino Forum or StackOverflow.
Step 2: Describe your environment

OS version: Android___
Arduino IDE version: not applicable_
MFRC522 Library version: 1.3.5_
Arduino device: any___
MFRC522 device: _____

Step 3: Describe the problem
Affected file(s) or example(s):

MFRC522.cpp
stdint.h

Steps to reproduce:

compile with g++

Observed Results:

failed to compile

//data/data/name.antonsmirnov.android.arduinodroid2/sdk/hardware/tools/avr/bin/avr-g++
-c -g -Os -w -fno-exceptions
-ffunction-sections -fdata-sections -mmcu=atmega328p
-DF_CPU=16000000L -MMD -DUSB_VID=null -DUSB_PID=null
-DARDUINO=105 -DIDE="ArduinoDroid" -DARDUINO_ARCH_AVR
-DARDUINO_AVR_UNO -I/data/data/name.antonsmirnov.android.arduinodroid2/sdk/hardware/tools/avr/avr/include
-I/data/data/name.antonsmirnov.android.arduinodroid2/sdk/hardware/arduino/cores/arduino
-I/storage/emulated/0/ArduinoDroid/libraries/EEPROM/src
-I/storage/emulated/0/ArduinoDroid/libraries/MFRC522/src
-I/storage/emulated/0/ArduinoDroid/libraries/SPI/src
-I/data/data/name.antonsmirnov.android.arduinodroid2/sdk/hardware/arduino/variants/standard /storage/emulated/0/ArduinoDroid/libraries/MFRC522/src/MFRC522.cpp
-o /data/data/name.antonsmirnov.android.arduinodroid2/librariesBuild/MFRC522/MFRC522.cpp.o

05-11 01:22:35.126 W/System.err: /storage/emulated/0/ArduinoDroid/libraries/MFRC522/src/MFRC522.cpp: In constructor 'MFRC522::MFRC522()':
05-11 01:22:35.128 W/System.err: /storage/emulated/0/ArduinoDroid/libraries/MFRC522/src/MFRC522.cpp:16:33: error: 'UINT8_MAX' was not declared in this scope
05-11 01:22:35.131 W/System.err:  MFRC522::MFRC522(): MFRC522(SS, UINT8_MAX) { // SS is defined in pins_arduino.h, UINT8_MAX means there is no connection from Arduino to MFRC522's reset and power down input
05-11 01:22:35.133 W/System.err:                                  ^
05-11 01:22:35.146 W/System.err: /storage/emulated/0/ArduinoDroid/libraries/MFRC522/src/MFRC522.cpp: In member function 'void MFRC522::PCD_Init()':
05-11 01:22:35.148 W/System.err: /storage/emulated/0/ArduinoDroid/libraries/MFRC522/src/MFRC522.cpp:201:28: error: 'UINT8_MAX' was not declared in this scope
05-11 01:22:35.150 W/System.err:   if (_resetPowerDownPin != UINT8_MAX) {
05-11 01:22:35.151 W/System.err:                             ^

Expected Results:

Should compile cpp file

Relevant Code:
  // TODO(you): code here to reproduce the problem

why is stdint.h included instead of "cstdint.h". it causes incompatibilities for compilation by IDEs
http://stackoverflow.com/questions/13642827/cstdint-vs-stdint-h

For some reason it works in Arduino IDE (but should not work in this way):
"/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega32u4 -DF_CPU=16000000L -DARDUINO=10802 -DARDUINO_AVR_ROBOT_CONTROL -DARDUINO_ARCH_AVR  -DUSB_VID=0x2341 -DUSB_PID=0x8038 '-DUSB_MANUFACTURER="Unknown"' '-DUSB_PRODUCT="Robot Control"' "-I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino" "-I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/variants/robot_control" "-I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/libraries/EEPROM/src" "-I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/libraries/SPI/src" "-I/Users/asmirnov/Documents/Arduino/libraries/MFRC522/src" "/Users/asmirnov/Documents/Arduino/libraries/MFRC522/src/MFRC522.cpp" -o "/dev/null"

c++11 do not seem to be enabled by your compile arguments or is it enabled by default?

after adding -std=gnu++11 it works now. but it still seems to be strange to use stdint.h in c++ code

Maybe strange but not wrong to use stdint.h..


ngContextMenu inside uiGrid's row template wrong posotion

ngContextMenu calculates coordinates wrongly when is placed inside of row template in UIGrid even with position:absolute. I think it takes grid's coordinates instead screen's.

Yep – absolute is a whole different scenario, as it's relative to the UIGrid, so although it gets the correct coodinates, the values aren't relative to its container.
I'll have to think about that, as ngContextMenu is designed to work with position: fixed which doesn't suffer from the same complexities as absolute.

I just made a workaround to fix the Position of the ContextMenu by adding "$(window).scrollTop()" to the y Pos (in Line 137, uncompressed file).


This seems not support Draft-07?

this is the best one I have ever meet, sadly, this can't help me

this is the best one I have ever meet, sadly, this can't help me


Better Vim autocomplete by scanning all imported modules

The new Vim plugin uses nitls to locate all Nit modules relevant to the current directory. This is a nice way to support both complex projects and new incomplete modules.
The recommended usage is to update the list of modules when launching Vim and then do it manually afterwards. You may want to update it after adding an importation and saving the file. It could also be updated on each file save or loading but it gets pretty slow. Actually, the whole system may be too slow for older computers (sorry @R4PaSs) or those running inside a slow VM (sorry @BlackMinou and @MehdiAit).
A nice feature to have, would be to call nitls on the standard library when there's not local Nit source file or project. It occurs when creating the first Nit source file in an empty directory. @privat, what would be the best way to do that? Could we have nitls -M standard?

+1

note: pour que github markdownise le README, il doit s'appeler README.md

+1


Release v0.0.2

This releases includes some breaking dependency changes, and a new JSON recursive sort option. A changelog has been added for this release and the prior release as well.

A new version of the package prettier-plugin-sort-json (0.0.2) was published at 2021-02-13T18:43:39.057Z from
[redacted]. The shasum of this package was e2aa58829d1b895ed8d9e762860b3e3b84607245.


[Bug] Set-DbaDbQueryStoreOption command is not Excluding the System Database MSDB when executed

Report

Host used

[ ] powershell.exe
[ 1] ISE
[ ] VS Code
[ ] Other (please specify)

Errors Received

I've not received any Error but the command (Enable Set-DbaDbQueryStoreOption) option is executing against system database MSDB as ExcludedDatabases option is only excluding master,model and tempdb only missing MSDB. QueryStore can't be enabled on any system databases.

Steps to Reproduce
Set-DbaDbQueryStoreOption -SqlInstance ServerName -AllDatabases -State ReadWrite -CaptureMode AUTO -MaxPlansPerQuery 200 -MaxSize 1024 -StaleQueryThreshold 30 -CleanupMode AUTO -FlushInterval 900 -CollectionInterval 60 -WaitStatsCaptureMode ON -EnableException

Expected Behavior
Exclude all the system Databases and run against all the User databases.

Actual Behavior
This is the partial result where it's saying that QueryStore is enabled on MSDB database. Even though message says enabled, it's not enabled which is expected behavior on System Database.
Database                              : msdb
ActualState                           : ReadWrite
DataFlushIntervalInSeconds            : 900
StatisticsCollectionIntervalInMinutes : 60
MaxStorageSizeInMB                    : 1024
CurrentStorageSizeInMB                : 0
QueryCaptureMode                      : Auto
SizeBasedCleanupMode                  : Auto
StaleQueryThresholdInDays             : 30

Environmental information
🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨
Please provide the output of the below script
[pscustomobject]@{
'PowerShell Version' = $PSVersionTable.PSVersion.ToString()
'dbatools latest installed' = (Get-InstalledModule -Name dbatools).Version
'Culture of OS' = (Get-Culture)
} | fl -force

PowerShell Version        : 5.1.18362.1171
dbatools latest installed : 1.0.128
Culture of OS             : en-US
SQL Server:
/* Microsoft SQL Server 2016 (SP2-CU15-GDR) (KB4583461) - 13.0.5865.1 (X64)   Oct 31 2020 02:43:57   Copyright (c) Microsoft Corporation  Enterprise Edition (64-bit) on Windows Server 2012 R2 Standard 6.3 <X64> (Build 9600: ) (Hypervisor) */

/* us_english */

@niphlod sorry my bad, I was not knowing that and it's not visible on SSMS so I thought it's same for MSDB as other System Db's. Closing the bug.

Thanks @niphlod, much appreciated! It makes sense that msdb would be usable in QueryStore given the general query patterns against it. I'll close the PR.


Migrate missing features to the refactored backend

Please create individual PRs to add new features and add a list of the PRs associated with this migration to the issue description


ApptentiveKit.Conversation.merge(with: ApptentiveKit.Conversation) throws -> ()

App is crashing on launch randomly with the following signature
ApptentiveKit  Version Used : 6.0.4
Initially used 6.0.5 and then downgraded to 6.0.4
Exception Type:  SIGTRAP
Exception Codes: TRAP_BRKPT at 0x1c83d7584
Crashed Thread:  19
Thread 19 Crashed:
0   libswiftCore.dylib                   0x00000001c83d7584 0x1c83a8000 + 193924
1   libswiftCore.dylib                   0x00000001c83d7870 0x1c83a8000 + 194672
2   ApptentiveKit                        0x0000000103b0a70c ApptentiveKit.Conversation.merge(with: ApptentiveKit.Conversation) throws -> () (Conversation.swift:0)
3   ApptentiveKit                        0x0000000103af1cdc ApptentiveKit.Backend.(loadConversation in _CE4A11A71D87B9D3E39C0EA2BC544396)(from: ApptentiveKit.Loader) throws -> () (Conversation.swift:108)
4   ApptentiveKit                        0x0000000103b27a24 function signature specialization <Arg[2] = Dead, Arg[3] = Owned To Guaranteed> of function signature specialization <Arg[2] = [Closure Propagated : closure #1 (ApptentiveKit.Loader) throws -> () in ApptentiveKit.Backend.protectedDataDidBecomeAvailable(containerURL: Foundation.URL, cachesURL: Foundation.URL, environment: ApptentiveKit.AppEnvironment & ApptentiveKit.DeviceEnvironment & ApptentiveKit.PlatformEnvironment) throws -> (), Argument Types : [ApptentiveKit.Backend]> of static ApptentiveKit.CurrentLoader.loadLatestVersion(containerURL: Foundation.URL, environment: ApptentiveKit.AppEnvironment & ApptentiveKit.DeviceEnvironment & ApptentiveKit.PlatformEnvironment, completion: (ApptentiveKit.Loader) throws -> ()) -> () (Backend.swift:197)
5   ApptentiveKit                        0x0000000103aede34 ApptentiveKit.Backend.protectedDataDidBecomeAvailable(containerURL: Foundation.URL, cachesURL: Foundation.URL, environment: ApptentiveKit.AppEnvironment & ApptentiveKit.DeviceEnvironment & ApptentiveKit.PlatformEnvironment) throws -> () (:0)
6   ApptentiveKit                        0x0000000103ac1ccc closure #1 () -> () in ApptentiveKit.Apptentive.protectedDataDidBecomeAvailable(ApptentiveKit.AppEnvironment & ApptentiveKit.DeviceEnvironment & ApptentiveKit.PlatformEnvironment) -> () (Apptentive.swift:431)
7   ApptentiveKit                        0x0000000103abab44 reabstraction thunk helper from @escaping @callee_guaranteed () -> () to @escaping @callee_unowned @convention(block) () -> () (:0)
8   libdispatch.dylib                    0x00000001d52d6850 0x1d5273000 + 407632
9   libdispatch.dylib                    0x00000001d52d77c8 0x1d5273000 + 411592
10  libdispatch.dylib                    0x00000001d52b2854 0x1d5273000 + 260180
11  libdispatch.dylib                    0x00000001d52b3318 0x1d5273000 + 262936
12  libdispatch.dylib                    0x00000001d52bd000 0x1d5273000 + 303104
13  libsystem_pthread.dylib              0x0000000216b8ab50 0x216b89000 + 6992
14  libsystem_pthread.dylib              0x0000000216b8a67c 0x216b89000 + 5756

This looks like it's a known issue in v6.0.4. There is a somewhat serious bug that causes assertionFailure calls to crash in release builds, along with (what we think is) a rare race condition on SDK startup that triggers the assertionFailure call.
If you are able to update to v6.0.6, that should solve both issues.

Thank you for the quick update, will give a try now. After upgrade if we see the issue is resolved will update the ticket.

@frankus  Issue is still reproducible but on beta 16.2

Thread 18 Crashed:
0   libswiftCore.dylib                   0x00000001c83d7584 0x1c83a8000 + 193924
1   libswiftCore.dylib                   0x00000001c83d7870 0x1c83a8000 + 194672
2   ApptentiveKit                        0x0000000102bdfb54 ApptentiveKit.Conversation.merge(with: ApptentiveKit.Conversation) throws -> () (Conversation.swift:0)
3   ApptentiveKit                        0x0000000102bc78f8 ApptentiveKit.Backend.(loadConversation in _CE4A11A71D87B9D3E39C0EA2BC544396)(from: ApptentiveKit.Loader) throws -> () (Conversation.swift:108)
4   ApptentiveKit                        0x0000000102bfd86c function signature specialization <Arg[2] = Dead, Arg[3] = Owned To Guaranteed> of function signature specialization <Arg[2] = [Closure Propagated : closure #1 (ApptentiveKit.Loader) throws -> () in ApptentiveKit.Backend.protectedDataDidBecomeAvailable(containerURL: Foundation.URL, cachesURL: Foundation.URL, environment: ApptentiveKit.AppEnvironment & ApptentiveKit.DeviceEnvironment & ApptentiveKit.PlatformEnvironment) throws -> (), Argument Types : [ApptentiveKit.Backend]> of static ApptentiveKit.CurrentLoader.loadLatestVersion(containerURL: Foundation.URL, environment: ApptentiveKit.AppEnvironment & ApptentiveKit.DeviceEnvironment & ApptentiveKit.PlatformEnvironment, completion: (ApptentiveKit.Loader) throws -> ()) -> () (Backend.swift:197)
5   ApptentiveKit                        0x0000000102bc36e4 ApptentiveKit.Backend.protectedDataDidBecomeAvailable(containerURL: Foundation.URL, cachesURL: Foundation.URL, environment: ApptentiveKit.AppEnvironment & ApptentiveKit.DeviceEnvironment & ApptentiveKit.PlatformEnvironment) throws -> () (:0)
6   ApptentiveKit                        0x0000000102b95150 closure #1 () -> () in ApptentiveKit.Apptentive.protectedDataDidBecomeAvailable(ApptentiveKit.AppEnvironment & ApptentiveKit.DeviceEnvironment & ApptentiveKit.PlatformEnvironment) -> () (Apptentive.swift:431)
7   ApptentiveKit                        0x0000000102b8fa10 reabstraction thunk helper from @escaping @callee_guaranteed () -> () to @escaping @callee_unowned @convention(block) () -> () (:0)
8   libdispatch.dylib                    0x00000001d52d6850 0x1d5273000 + 407632
9   libdispatch.dylib                    0x00000001d52d77c8 0x1d5273000 + 411592
10  libdispatch.dylib                    0x00000001d52b2854 0x1d5273000 + 260180
11  libdispatch.dylib                    0x00000001d52b3318 0x1d5273000 + 262936
12  libdispatch.dylib                    0x00000001d52bd000 0x1d5273000 + 303104
13  libsystem_pthread.dylib              0x0000000216b8ab50 0x216b89000 + 6992
14  libsystem_pthread.dylib              0x0000000216b8a67c 0x216b89000 + 5756

@SunnyGit do you have data on whether this is still occurring with v6.0.6 of our SDK?

@frankus Issue is still reproducible but on beta 16.2 ,is it supported version ?

@frankus  Please close this one, issue is not reproducible now.


JsonValue.AsDateTime example missing

In the "Remarks" Part the is the following text:

If the JsonValue does not contain a string of the format "o" as specified here the operation will fail with a run-time error.

Is it possible, that there format description is missing? It says "o" - seems not correct to me.

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

ID: 351a84b1-6500-cf37-a477-749d9f0c44ca
Version Independent ID: be9fa1f0-e30e-a6e2-fbea-c368727eeb8c
Content: JsonValue.AsDateTime Method - Business Central
Content Source: dev-itpro/developer/methods-auto/jsonvalue/jsonvalue-asdatetime-method.md
Service: dynamics365-business-central
GitHub Login: @SusanneWindfeldPedersen
Microsoft Alias: solsen

Hi, thanks for your feedback! The "o" format refers to The round-trip ("O", "o") format specifier. The article has been updated to include this information.


TypeError: first paramter must be a valid RedisClient

Hello, I think I found a bug in the library. When I try to initialize the RedisStore I get the following error:
	TypeError: tiameter must be a valid RedisClient instance.

I think that the problem is here, since when I try to log client.constructor.name I get Commander instead of RedisClient.
Here's my code:
import { createClient } from 'redis'
import { RedisDefaultStore } from 'axios-cache-adapter'

export default (req, res) => {
	const client = redis.createClient({
		url: process.env.REDIS_URL
	})

	const store = new RedisDefaultStore(client)

}

Same.
Using redis@^3 resolved my problems

Hi,
Facing similar issue with redis version ^4.3.1 .. any thoughts or reference on this if this issue still exists and workaround for it?

If you must use Redis ^4.0.0 you can take the RedisStore class from src and create your own component. I just tried this and it works for me with Redis legacymode and Node 14. Might be better to just use Redis 3, because its a bit of a headache, but just in case someone needs it:
import { createClient } from 'redis'
import { setupCache } from 'axios-cache-adapter'
// Custom Redis Store:
import RedisStore from './redisStore'

const getRedisStore = async () => {
  const HOST = process.env.REDIS_HOST
  const PORT = process.env.REDIS_PORT
  const DB = process.env.REDIS_DB

  const url = `redis://${HOST}:${PORT}/${DB}`
  const redisClient = createClient({url, legacyMode: true})
  await redisClient.connect()
  return new RedisStore(redisClient, OPTIONAL_HASH_KEY)
}

So you must await your getRedisStore and use that as your store in the setupCache.
RedisStore.js (note I've removed the TypeError check for client.constructor.name from the original src)
import { promisify } from 'util'

const isObject = (value) => {
    const type = typeof value
    return value != null && (type === 'object' || type === 'function')
}

const mapObject = (value, fn) => {
    if (!isObject(value)) return []
    return Object.keys(value).map(key => fn(value[key], key))
}

class RedisStore {
  constructor (client, HASH_KEY = 'axios-cache') {

    this.client = client
    this.HASH_KEY = HASH_KEY
    this.hgetAsync = promisify(client.HGET).bind(client)
    this.hsetAsync = promisify(client.HSET).bind(client)
    this.hdelAsync = promisify(client.HDEL).bind(client)
    this.delAsync = promisify(client.DEL).bind(client)
    this.hlenAsync = promisify(client.HLEN).bind(client)
    this.hgetallAsync = promisify(client.HGETALL).bind(client)
  }

  async getItem (key) {
    const item = (await this.hgetAsync(this.HASH_KEY, key)) || null
    return JSON.parse(item)
  }

  async setItem (key, value) {
    await this.hsetAsync(this.HASH_KEY, key, JSON.stringify(value))
    return value
  }

  async removeItem (key) {
    await this.hdelAsync(this.HASH_KEY, key)
  }

  async clear () {
    await this.delAsync(this.HASH_KEY)
  }

  async length () {
    return this.hlenAsync(this.HASH_KEY)
  }

  async iterate (fn) {
    const hashData = await this.hgetallAsync(this.HASH_KEY)
    return Promise.all(mapObject(hashData, fn))
  }
}

export default RedisStore

Hey, axios-cache-adapter is broken for axios v1 and unmaintained since 2021.
I'm the maintainer of https://axios-cache-interceptor.js.org, you should check it out...
https://axios-cache-interceptor.js.org/guide/storages#node-redis-example


apollostage fixes for mobile menu and many more

Pull request to submit changes to apollostage stylesheets back to to Gazelle.

changelog is included (see _base.scss)

Please note the _variables.scss contains URLs for SVG files that need to be adjusted (both in your repo, and in deployment).

Now really ready for code review by upstream.

Once again ready for code review.


Use stricter types where possible

@tambien this should be fixed now, can you take another look when you have a moment?


fix: use relative paths instead of $lib alias inside of lib

Closes #281
📑 Description
This changes the $lib references in the components (src/lib/*) to relative paths, which makes this library work without having to use SvelteKit. Future components should also use relative paths in order not to break the library for non-SvelteKit users.
More details in #281
✅ Checks

[✅] My pull request adheres to the code style of this project
[❌] My code requires changes to the documentation
[❌] I have updated the documentation as required (not needed in this case)
[✅] All the tests have passed
[✅] My pull request is based on the latest commit (not the npm version).

Thank you for the PR.
I'm wondering if you are willing to create a starter repo for Rail+Vite+Inertia+Svelte+Flowbite-Svelte.
If you are, please send me the link. I will add it to the doc.

@shinokada Awesome idea! Might even do that, I'm currently writing some scaffolding generators to quickly get started with this stack. I'll let you know once I have something! :)


discontinuities on segmentation

data: sct_issues/20170115_issue1109
tested with Spinal Cord Toolbox (master/20e5e8e3263c314fce31378131e6ad3c738e7daf)

note: resample to 1mm doesn't help:

The error was produced by the new check_and_correct function. Indeed, it happens that more errors can be found along the centerline but not only on the edges. In these cases, the check_and_correct function produces sparse outputs.
I corrected this by eliminating all slices above and below the first "error" encountered, starting from the center of the spinal cord.

I have encountered the same issue again:
data: sct_004/t2
version: Spinal Cord Toolbox (master/56d03f1d4e164f0398a52e54b5da4a2265a4abf3)
syntax:
sct_propseg -i t2.nii.gz -c t2

Results:

I cannot reproduce the issue.
When I try to segment the spinal cord directly with the command above, the spinal cord detection fails. When I initiate the segmentation with a three-point mask (using the viewer), the issue doesn't appear.
Could you please check the command you used to generate this result?

i confirm i get the same error again.
Version SCT: master/56d03f1d4e164f0398a52e54b5da4a2265a4abf3
Syntax
sct_propseg -i t2.nii.gz -c t2

data: sct_issues/20170307_issue1109/

master/56d03f1d4e164f0398a52e54b5da4a2265a4abf3 correspond to
commit 56d03f1d4e164f0398a52e54b5da4a2265a4abf3
Merge: 54db637 a1519e6
Author: Julien Cohen-Adad<EMAIL_ADDRESS>Date:   Sun Feb 26 10:29:12 2017 -0500

    Merge pull request #1183 from neuropoly/jca_issue1182

    Changed default threshold_distance from 2.5 to 10 to avoid edge effect

Could you please try with the latest version: master/4159bcacd16124ed920d90bd2696299a287bc987

i've tried with the latest commit on master, still the same result:
Spinal Cord Toolbox (master/188c20e8ec6a7a501e42636e2d026fab324d5303)

Ok I was able to reproduce the issue. I'm working on it.


[PDI-14334] Copy Files - overwrites files if subfolders used

find file in subfolder, relative to destination directory
add unit and integration tests
rename to camel case

Build Completed
:x: This pull request has errors. They will need to be addressed before it can be accepted. See below for more details. Some links are also available below for further assistance in addressing those issues.
Build Commands
ant -Dtestreports.dir=bin/reports/unit-test -f engine/build.xml clean-all resolve jacoco && ant -f engine/build.xml checkstyle publish-local

Cleanup Commands
rm -r ~/.ivy2/local || echo no publish local to remove

Changed files
  engine/src/org/pentaho/di/job/entries/copyfiles/JobEntryCopyFiles.java
  engine/test-src/org/pentaho/di/job/entries/copyfiles/JobEntryCopyFilesIT.java
  engine/test-src/org/pentaho/di/job/entries/copyfiles/JobEntryCopyFilesTest.java

Unit test coverage change
These statistics help you identify how your changes have affected the coverage of the following files. If a file is not in this list, then its coverage was not affected by your changes. To get some help interpreting these metrics, please refer to Jacoco's documentation.
org.pentaho.di.core.auth.core.impl.DefaultAuthenticationConsumerFactory

Branch Change: -7.14%:small_red_triangle_down:
Complexity Change: -7.69%:small_red_triangle_down:

org.pentaho.di.job.entries.copyfiles.JobEntryCopyFiles

Branch Change:  + 11.88%
Complexity Change:  + 4.10%
Instruction Change:  + 10.52%
Line Change:  + 14.37%
Method Change:  + 4.76%

org.pentaho.di.job.entries.evalfilesmetrics.JobEntryEvalFilesMetrics

Branch Change:  + .39%
Complexity Change:  + .51%
Instruction Change:  + .08%

org.pentaho.di.job.entries.waitforsql.JobEntryWaitForSQL

Branch Change: -.66%:small_red_triangle_down:
Complexity Change: -.93%:small_red_triangle_down:
Instruction Change: -.13%:small_red_triangle_down:

org.pentaho.di.job.entry.JobEntryBase

Complexity Change:  + .73%
Instruction Change:  + .57%
Line Change:  + .45%
Method Change:  + .80%

org.pentaho.di.trans.steps.constant.ConstantMeta

Instruction Change:  + .10%

org.pentaho.di.trans.steps.datagrid.DataGridMeta

Instruction Change: -.09%:small_red_triangle_down:

org.pentaho.di.trans.steps.dbproc.DBProcMeta

Instruction Change: -.11%:small_red_triangle_down:

org.pentaho.di.trans.steps.groupby.GroupByMeta

Branch Change: -3.12%:small_red_triangle_down:
Complexity Change: -3.16%:small_red_triangle_down:
Instruction Change: -.28%:small_red_triangle_down:
Line Change: -.74%:small_red_triangle_down:

org.pentaho.di.trans.steps.ifnull.IfNullMeta

Branch Change: -2.00%:small_red_triangle_down:
Complexity Change: -1.89%:small_red_triangle_down:
Instruction Change: -.17%:small_red_triangle_down:

org.pentaho.di.trans.steps.insertupdate.InsertUpdateMeta

Instruction Change: -.05%:small_red_triangle_down:

org.pentaho.di.trans.steps.memgroupby.MemoryGroupByMeta

Branch Change: -3.53%:small_red_triangle_down:
Complexity Change: -4.05%:small_red_triangle_down:
Instruction Change: -.18%:small_red_triangle_down:
Line Change: -.48%:small_red_triangle_down:

org.pentaho.di.trans.steps.processfiles.ProcessFilesMeta

Branch Change: -3.57%:small_red_triangle_down:
Complexity Change: -2.13%:small_red_triangle_down:
Instruction Change: -.33%:small_red_triangle_down:

org.pentaho.di.trans.steps.replacestring.ReplaceStringMeta

Instruction Change:  + .07%

org.pentaho.di.trans.steps.rowgenerator.RowGeneratorMeta

Instruction Change: -.08%:small_red_triangle_down:

org.pentaho.di.trans.steps.singlethreader.SingleThreaderMeta

Instruction Change:  + .08%

org.pentaho.di.trans.steps.sort.SortRowsMeta

Instruction Change: -.08%:small_red_triangle_down:

org.pentaho.di.trans.steps.synchronizeaftermerge.SynchronizeAfterMergeMeta

Instruction Change:  + .04%

org.pentaho.di.trans.steps.uniquerows.UniqueRowsMeta

Instruction Change: -.18%:small_red_triangle_down:

org.pentaho.di.trans.steps.webservices.WebServiceMeta

Branch Change:  + 1.79%
Complexity Change:  + 1.19%
Instruction Change:  + .07%

License header violations

:heavy_exclamation_mark: Copyright year is not the current year on engine/src/org/pentaho/di/job/entries/copyfiles/JobEntryCopyFiles.java. Found 2016. Was expecting 2017

Build Completed
:fire: This pull request has some issues. It would be preferable to fix them in order for it to be just perfect. See below for more details. Some links are also available below for further assistance in addressing those issues.
Build Commands
ant -Dtestreports.dir=bin/reports/unit-test -f engine/build.xml clean-all resolve jacoco && ant -f engine/build.xml checkstyle publish-local

Cleanup Commands
rm -r ~/.ivy2/local || echo no publish local to remove

Changed files
  engine/src/org/pentaho/di/job/entries/copyfiles/JobEntryCopyFiles.java
  engine/test-src/org/pentaho/di/job/entries/copyfiles/JobEntryCopyFilesIT.java
  engine/test-src/org/pentaho/di/job/entries/copyfiles/JobEntryCopyFilesTest.java

Unit test coverage change
These statistics help you identify how your changes have affected the coverage of the following files. If a file is not in this list, then its coverage was not affected by your changes. To get some help interpreting these metrics, please refer to Jacoco's documentation.
org.pentaho.di.core.auth.core.impl.DefaultAuthenticationConsumerFactory

Branch Change: -7.14%:small_red_triangle_down:
Complexity Change: -7.69%:small_red_triangle_down:

org.pentaho.di.job.entries.copyfiles.JobEntryCopyFiles

Branch Change:  + 11.88%
Complexity Change:  + 4.10%
Instruction Change:  + 10.52%
Line Change:  + 14.37%
Method Change:  + 4.76%

org.pentaho.di.job.entries.ftpsget.JobEntryFTPSGet

Branch Change: -.53%:small_red_triangle_down:
Complexity Change: -.56%:small_red_triangle_down:
Instruction Change: -.07%:small_red_triangle_down:

org.pentaho.di.job.entries.sql.JobEntrySQL

Instruction Change: -3.28%:small_red_triangle_down:
Line Change: -3.87%:small_red_triangle_down:

org.pentaho.di.job.entry.JobEntryBase

Complexity Change:  + .73%
Instruction Change:  + .57%
Line Change:  + .45%
Method Change:  + .80%

org.pentaho.di.trans.step.StepMeta

Instruction Change:  + .19%
Line Change:  + .27%

org.pentaho.di.trans.steps.constant.ConstantMeta

Instruction Change: -.10%:small_red_triangle_down:

org.pentaho.di.trans.steps.dbproc.DBProcMeta

Instruction Change:  + .11%

org.pentaho.di.trans.steps.groupby.GroupByMeta

Branch Change:  + 2.08%
Complexity Change:  + 2.11%

org.pentaho.di.trans.steps.ifnull.IfNullMeta

Branch Change: -2.00%:small_red_triangle_down:
Complexity Change: -1.89%:small_red_triangle_down:
Instruction Change: -.17%:small_red_triangle_down:

org.pentaho.di.trans.steps.ldapinput.LDAPInputMeta

Branch Change:  + 1.61%
Complexity Change:  + .97%
Instruction Change:  + .09%

org.pentaho.di.trans.steps.replacestring.ReplaceStringMeta

Instruction Change: -.07%:small_red_triangle_down:

org.pentaho.di.trans.steps.rowgenerator.RowGeneratorMeta

Instruction Change:  + .08%

org.pentaho.di.trans.steps.setvalueconstant.SetValueConstantMeta

Instruction Change:  + .14%

org.pentaho.di.trans.steps.singlethreader.SingleThreaderMeta

Instruction Change:  + .08%

org.pentaho.di.trans.steps.uniquerows.UniqueRowsMeta

Instruction Change: -.18%:small_red_triangle_down:

org.pentaho.di.trans.steps.webservices.WebServiceMeta

Branch Change: -1.79%:small_red_triangle_down:
Complexity Change: -1.19%:small_red_triangle_down:
Instruction Change: -.07%:small_red_triangle_down:

org.pentaho.di.www.TransformationMap

Branch Change: -1.14%:small_red_triangle_down:
Complexity Change: -1.54%:small_red_triangle_down:

Looks good from my side.
@mbatchelor can you please take a look?
thanks.


etcd2 cluster bootstrap failing on Google Compute Engine

Etcd2 Initial Cluster Discovery for new Clusters in CoreOS 835.9.0
The Problem
When trying to create an etcd cluster where some hosts are members and some hosts are proxies, cluster discovery seems to get confused about who is a member and who is a proxy, and then gets stuck, refusing to ever change its mind.
This happens in roughly 8 out of 10 cluster bringups. (The other 2 work fine.)
Versions
This issue has been found on

CoreOS Stable: CoreOS 835.9.0; etcd 2.2.0.
CoreOS Beta: CoreOS 877.1.0; etcd 2.2.2.
CoreOS Alpha: CoreOS 884.0.0; etcd 2.2.2.

cloudinit
The initial cloudinit setup files for these hosts looks like the following:
#cloud-config
coreos:
  etcd2:
    # generate a new token for each unique cluster from https://discovery.etcd.io/new
    discovery: https://discovery.etcd.io/b4e8d34f98130cd02a85a507fd99fd2c
    # multi-region and multi-cloud deployments need to use $public_ipv4
    advertise-client-urls: http://$private_ipv4:2379
    initial-advertise-peer-urls: http://$private_ipv4:2380
    listen-client-urls: http://<IP_ADDRESS>:2379,http://<IP_ADDRESS>:4001
    listen-peer-urls: http://$private_ipv4:2380,http://$private_ipv4:7001
  units:
    - name: etcd2.service
      command: start
    - name: fleet.service
      command: start

That discovery token is regenerated for each new cluster.
Logs
When a host comes up in failure mode, it's first etcd2.service log looks like:
Dec 07 23:47:00 trouble-etcd-e systemd[1]: Starting etcd2...
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: recognized and used environment variable ETCD_ADVERTISE_CLIENT_URLS=http://<IP_ADDRESS>:2379
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: recognized and used environment variable ETCD_DATA_DIR=/var/lib/etcd2
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: recognized and used environment variable ETCD_DISCOVERY=https://discovery.etcd.io/b86bdd008160b8d7bd352262ce2e0c33
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: recognized and used environment variable ETCD_INITIAL_ADVERTISE_PEER_URLS=http://<IP_ADDRESS>:2380
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: recognized and used environment variable ETCD_LISTEN_CLIENT_URLS=http://<IP_ADDRESS>:2379,http://<IP_ADDRESS>:4001
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: recognized and used environment variable ETCD_LISTEN_PEER_URLS=http://<IP_ADDRESS>:2380,http://<IP_ADDRESS>:7001
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: recognized and used environment variable ETCD_NAME=52f206ffb747382c49bfde7c3d21b5d7
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: etcd Version: 2.2.0
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: Git SHA: e4561dd
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: Go Version: go1.4.2
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: Go OS/Arch: linux/amd64
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: setting maximum number of CPUs to 1, total number of available CPUs is 1
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: listening for peers on http://<IP_ADDRESS>:2380
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: listening for peers on http://<IP_ADDRESS>:7001
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: listening for client requests on http://<IP_ADDRESS>:2379
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: listening for client requests on http://<IP_ADDRESS>:4001
Dec 07 23:47:06 trouble-etcd-e etcd2[757]: stopping listening for client requests on http://<IP_ADDRESS>:4001
Dec 07 23:47:06 trouble-etcd-e systemd[1]: etcd2.service: Main process exited, code=exited, status=1/FAILURE
Dec 07 23:47:06 trouble-etcd-e systemd[1]: Failed to start etcd2.
Dec 07 23:47:06 trouble-etcd-e systemd[1]: etcd2.service: Unit entered failed state.
Dec 07 23:47:06 trouble-etcd-e systemd[1]: etcd2.service: Failed with result 'exit-code'.
Dec 07 23:47:16 trouble-etcd-e systemd[1]: etcd2.service: Service hold-off time over, scheduling restart.
Dec 07 23:47:16 trouble-etcd-e systemd[1]: Stopped etcd2.

Subsequent restarts are nearly the same:
Dec 07 23:47:16 trouble-etcd-e systemd[1]: Starting etcd2...
Dec 07 23:47:16 trouble-etcd-e etcd2[956]: recognized and used environment variable ETCD_ADVERTISE_CLIENT_URLS=http://<IP_ADDRESS>:2379
Dec 07 23:47:16 trouble-etcd-e etcd2[956]: recognized and used environment variable ETCD_DATA_DIR=/var/lib/etcd2
Dec 07 23:47:16 trouble-etcd-e etcd2[956]: recognized and used environment variable ETCD_DISCOVERY=https://discovery.etcd.io/b86bdd008160b8d7bd352262ce2e0c33
Dec 07 23:47:16 trouble-etcd-e etcd2[956]: recognized and used environment variable ETCD_INITIAL_ADVERTISE_PEER_URLS=http://<IP_ADDRESS>:2380
Dec 07 23:47:16 trouble-etcd-e etcd2[956]: recognized and used environment variable ETCD_LISTEN_CLIENT_URLS=http://<IP_ADDRESS>:2379,http://<IP_ADDRESS>:4001
Dec 07 23:47:16 trouble-etcd-e etcd2[956]: recognized and used environment variable ETCD_LISTEN_PEER_URLS=http://<IP_ADDRESS>:2380,http://<IP_ADDRESS>:7001
Dec 07 23:47:16 trouble-etcd-e etcd2[956]: recognized and used environment variable ETCD_NAME=52f206ffb747382c49bfde7c3d21b5d7
Dec 07 23:47:16 trouble-etcd-e etcd2[956]: etcd Version: 2.2.0
Dec 07 23:47:16 trouble-etcd-e etcd2[956]: Git SHA: e4561dd
Dec 07 23:47:16 trouble-etcd-e etcd2[956]: Go Version: go1.4.2
Dec 07 23:47:16 trouble-etcd-e etcd2[956]: Go OS/Arch: linux/amd64
Dec 07 23:47:16 trouble-etcd-e etcd2[956]: setting maximum number of CPUs to 1, total number of available CPUs is 1
Dec 07 23:47:16 trouble-etcd-e etcd2[956]: the server is already initialized as member before, starting as etcd member...
Dec 07 23:47:16 trouble-etcd-e etcd2[956]: listening for peers on http://<IP_ADDRESS>:2380
Dec 07 23:47:16 trouble-etcd-e etcd2[956]: listening for peers on http://<IP_ADDRESS>:7001
Dec 07 23:47:16 trouble-etcd-e etcd2[956]: listening for client requests on http://<IP_ADDRESS>:2379
Dec 07 23:47:16 trouble-etcd-e etcd2[956]: listening for client requests on http://<IP_ADDRESS>:4001
Dec 07 23:47:16 trouble-etcd-e etcd2[956]: stopping listening for client requests on http://<IP_ADDRESS>:4001
Dec 07 23:47:16 trouble-etcd-e etcd2[956]: stopping listening for client requests on http://<IP_ADDRESS>:2379
Dec 07 23:47:16 trouble-etcd-e etcd2[956]: stopping listening for peers on http://<IP_ADDRESS>:7001
Dec 07 23:47:16 trouble-etcd-e etcd2[956]: stopping listening for peers on http://<IP_ADDRESS>:2380
Dec 07 23:47:16 trouble-etcd-e etcd2[956]: discovery: cluster is full
Dec 07 23:47:16 trouble-etcd-e systemd[1]: etcd2.service: Main process exited, code=exited, status=1/FAILURE
Dec 07 23:47:16 trouble-etcd-e systemd[1]: Failed to start etcd2.
Dec 07 23:47:16 trouble-etcd-e systemd[1]: etcd2.service: Unit entered failed state.
Dec 07 23:47:16 trouble-etcd-e systemd[1]: etcd2.service: Failed with result 'exit-code'.
Dec 07 23:47:26 trouble-etcd-e systemd[1]: etcd2.service: Service hold-off time over, scheduling restart.
Dec 07 23:47:26 trouble-etcd-e systemd[1]: Stopped etcd2.

Though we have the noticible difference now of actually getting an error message: discovery: cluster is full.
Workaround
So etcd2 is supposed to have automatic proxy fallback if more hosts than are requested try and join the cluster, but this doesn't seem to be working. It seems that the service is convinced at this point that it must be configured as a member, and not a proxy. The content of the /var/lib/etcd2 directory at this stage is just an empty directory called member.
Fixing the issue is as simple as removing the member directory. Then the automatically restarting etcd2 service will  forget that it thinks it should be a member of the cluster and will fall back to being a proxy.
(One caveat, though: it generates both a member and a proxy directory during this fallback, and if you try to restart the etcd2 service later, you'll get an error about being configured both as a member and as a proxy. Again: just remove the member directory, and restarting the service will become possible.)
The Scripts
There are a pair of scripts that I've checked into GitHub that I use to reproduce the issue. You can find them at https://github.com/scole-scea/etcd2_startup_issue.

Dec 07 23:47:00 trouble-etcd-e systemd[1]: Starting etcd2...
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: recognized and used environment variable ETCD_ADVERTISE_CLIENT_URLS=http://<IP_ADDRESS>:2379
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: recognized and used environment variable ETCD_DATA_DIR=/var/lib/etcd2
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: recognized and used environment variable ETCD_DISCOVERY=https://discovery.etcd.io/b86bdd008160b8d7bd352262ce2e0c33
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: recognized and used environment variable ETCD_INITIAL_ADVERTISE_PEER_URLS=http://<IP_ADDRESS>:2380
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: recognized and used environment variable ETCD_LISTEN_CLIENT_URLS=http://<IP_ADDRESS>:2379,http://<IP_ADDRESS>:4001
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: recognized and used environment variable ETCD_LISTEN_PEER_URLS=http://<IP_ADDRESS>:2380,http://<IP_ADDRESS>:7001
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: recognized and used environment variable ETCD_NAME=52f206ffb747382c49bfde7c3d21b5d7
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: etcd Version: 2.2.0
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: Git SHA: e4561dd
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: Go Version: go1.4.2
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: Go OS/Arch: linux/amd64
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: setting maximum number of CPUs to 1, total number of available CPUs is 1
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: listening for peers on http://<IP_ADDRESS>:2380
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: listening for peers on http://<IP_ADDRESS>:7001
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: listening for client requests on http://<IP_ADDRESS>:2379
Dec 07 23:47:01 trouble-etcd-e etcd2[757]: listening for client requests on http://<IP_ADDRESS>:4001
Dec 07 23:47:06 trouble-etcd-e etcd2[757]: stopping listening for client requests on http://<IP_ADDRESS>:4001
Dec 07 23:47:06 trouble-etcd-e systemd[1]: etcd2.service: Main process exited, code=exited, status=1/FAILURE
Dec 07 23:47:06 trouble-etcd-e systemd[1]: Failed to start etcd2.
Dec 07 23:47:06 trouble-etcd-e systemd[1]: etcd2.service: Unit entered failed state.
Dec 07 23:47:06 trouble-etcd-e systemd[1]: etcd2.service: Failed with result 'exit-code'.
Dec 07 23:47:16 trouble-etcd-e systemd[1]: etcd2.service: Service hold-off time over, scheduling restart.
Dec 07 23:47:16 trouble-etcd-e systemd[1]: Stopped etcd2.

Can you please provide the full log? I cannot see why it failed for the first time.
You probably need to try https://github.com/coreos/etcd/blob/master/Documentation/reporting_bugs.md#how-to-get-etcd-configuration-and-log-when-it-runs-as-systemd-service-etcd2service

Ah! You need to take the -f out of the "get the logs" example on that list. That helps a lot, since I can't turn on follow mode until after the service has failed.
At any rate: the first couple of failures from the log are:
-- Logs begin at Tue 2015-12-08 17:44:06 UTC, end at Tue 2015-12-08 18:12:00 UTC. --
Dec 08 17:44:13 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: recognized and used environment variable ETCD_ADVERTISE_CLIENT_URLS=http://<IP_ADDRESS>:2379
Dec 08 17:44:13 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: recognized and used environment variable ETCD_DATA_DIR=/var/lib/etcd2
Dec 08 17:44:13 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: recognized and used environment variable ETCD_DISCOVERY=https://discovery.etcd.io/c519647cd5ed09b20f9038a79d7f6525
Dec 08 17:44:13 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: recognized and used environment variable ETCD_INITIAL_ADVERTISE_PEER_URLS=http://<IP_ADDRESS>:2380
Dec 08 17:44:13 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: recognized and used environment variable ETCD_LISTEN_CLIENT_URLS=http://<IP_ADDRESS>:2379,http://<IP_ADDRESS>:4001
Dec 08 17:44:13 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: recognized and used environment variable ETCD_LISTEN_PEER_URLS=http://<IP_ADDRESS>:2380,http://<IP_ADDRESS>:7001
Dec 08 17:44:13 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: recognized and used environment variable ETCD_NAME=a6453bb639c1fc0fd8d800384efff6a8
Dec 08 17:44:13 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: etcd Version: 2.2.2
Dec 08 17:44:13 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: Git SHA: b4bddf6
Dec 08 17:44:13 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: Go Version: go1.4.3
Dec 08 17:44:13 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: Go OS/Arch: linux/amd64
Dec 08 17:44:13 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: setting maximum number of CPUs to 1, total number of available CPUs is 1
Dec 08 17:44:13 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: listening for peers on http://<IP_ADDRESS>:2380
Dec 08 17:44:13 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: listening for peers on http://<IP_ADDRESS>:7001
Dec 08 17:44:13 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: listening for client requests on http://<IP_ADDRESS>:2379
Dec 08 17:44:13 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: listening for client requests on http://<IP_ADDRESS>:4001
Dec 08 17:44:18 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: stopping listening for client requests on http://<IP_ADDRESS>:4001
Dec 08 17:44:18 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: stopping listening for client requests on http://<IP_ADDRESS>:2379
Dec 08 17:44:18 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: stopping listening for peers on http://<IP_ADDRESS>:7001
Dec 08 17:44:18 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: stopping listening for peers on http://<IP_ADDRESS>:2380
Dec 08 17:44:18 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: failed to join discovery cluster (context deadline exceeded)
Dec 08 17:44:18 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: discovery token https://discovery.etcd.io/c519647cd5ed09b20f9038a79d7f6525 was used, but failed to bootstrap the cluster.
Dec 08 17:44:18 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[997]: please generate a new discovery token and try to bootstrap again.
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: recognized and used environment variable ETCD_ADVERTISE_CLIENT_URLS=http://<IP_ADDRESS>:2379
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: recognized and used environment variable ETCD_DATA_DIR=/var/lib/etcd2
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: recognized and used environment variable ETCD_DISCOVERY=https://discovery.etcd.io/c519647cd5ed09b20f9038a79d7f6525
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: recognized and used environment variable ETCD_INITIAL_ADVERTISE_PEER_URLS=http://<IP_ADDRESS>:2380
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: recognized and used environment variable ETCD_LISTEN_CLIENT_URLS=http://<IP_ADDRESS>:2379,http://<IP_ADDRESS>:4001
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: recognized and used environment variable ETCD_LISTEN_PEER_URLS=http://<IP_ADDRESS>:2380,http://<IP_ADDRESS>:7001
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: recognized and used environment variable ETCD_NAME=a6453bb639c1fc0fd8d800384efff6a8
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: etcd Version: 2.2.2
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: Git SHA: b4bddf6
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: Go Version: go1.4.3
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: Go OS/Arch: linux/amd64
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: setting maximum number of CPUs to 1, total number of available CPUs is 1
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: the server is already initialized as member before, starting as etcd member...
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: listening for peers on http://<IP_ADDRESS>:2380
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: listening for peers on http://<IP_ADDRESS>:7001
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: listening for client requests on http://<IP_ADDRESS>:2379
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: listening for client requests on http://<IP_ADDRESS>:4001
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: stopping listening for client requests on http://<IP_ADDRESS>:4001
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: stopping listening for client requests on http://<IP_ADDRESS>:2379
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: stopping listening for peers on http://<IP_ADDRESS>:7001
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: stopping listening for peers on http://<IP_ADDRESS>:2380
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: failed to join discovery cluster (discovery: cluster is full)
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: discovery token https://discovery.etcd.io/c519647cd5ed09b20f9038a79d7f6525 was used, but failed to bootstrap the cluster.
Dec 08 17:44:29 trouble-etcd-c.c.ace-ripsaw-671.internal etcd2[1198]: please generate a new discovery token and try to bootstrap again.

So: context deadline exceeded.

It also looks like the syslog identifier for etcd isn't in the current CoreOS stable, so that journalctl -t trick won't work when I try this there.

I can confirm this happened to me also with CoreOS 835.9.0. I had to manually delete the /var/lib/etcd2/member folder in order for the etcd2 service to launch correctly as a proxy.

@scole-scea Does this happen a lot? The context deadline indicates the etcdserver timed out while sending requests to public discovery service. Can you reliably reproduce this?

When I wrote up the issue two weeks ago, it was every time, which is why I figured out the workaround. The test script I linked to, above, was my testcase. When I next connect to my employer's accounts and network (probably during the next week), I'll give it another shot or to to see if it's still reliably failing.
(The holidays do make that schedule a bit chaotic.)

This happened in my first test run of those scripts I pointed out before, so I'd say it's fairly reproducible.

Interestingly, alpha channel coreOS (899.1.0) starts up ok, but still leaves {{/var/lib/etc2}} with both {{member}} and {{proxy}} directories and doesn't survive {{systemctl restart etcd2.service}}.

@scole-scea Sorry for late response. And thanks for the script. I will try to reproduce this behavior
and try to find out the cause. I will keep you updated through this thread.

@scole-scea FYI. Your Workaround issue should be fixed by this PR. I will investigate more why it fails before.

@scole-scea I cannot reproduce this error message using the same configuration.
It seems work fine.
failed to join discovery cluster (discovery: cluster is full) message from your log means
you launch nodes more than the discovery size that you set up at the beginning.
You generated discovery token for 3 members here https://github.com/scole-scea/etcd2_startup_issue/blob/master/make_cluster.sh#L32:
token=$(curl -s https://discovery.etcd.io/new?size=3)

But if you launch 5 nodes using this token ("#### Making a 5-node cluster on GCE: 3 etcd members, 2 etcd proxies..."), it will error. Your discovery token https://discovery.etcd.io/b4e8d34f98130cd02a85a507fd99fd2c only shows 3 are registered.
And regarding work-around, I believe it is resolved in our latest etcd version https://github.com/coreos/etcd/pull/4089. So please try it with etcd v2.2.3.

Or do you intend to make two extra members fall back to proxy? That case should also be fixed in etcd v2.2.3 https://github.com/coreos/etcd/releases/tag/v2.2.3.

Yeah, the intent was for two of them to fall back. (This is a simplified example of a "quick development cluster" bringup, where we don't run an independent etcd cluster; we just run etcd on all the nodes. Not production worthy, and usually not long-lived.)
etcd 2.2.3 is not yet in a CoreOS release; unless there's an easy way to bring up a CoreOS host with etcd 2.2.3 running, I'll just wait until 2.2.3 hits alpha and retest then.

@scole-scea Yes etcd v2.2.3 was released last year. Please try out https://github.com/coreos/etcd/releases/tag/v2.2.3 and let us know if you still have issues.

Well, released 7 days ago, you mean. :smile: I'm a bit more up-to-date than a year behind...
My workaround still needs to be part of our tooling until 2.2.3 hits CoreOS stable, though, so it'll be a while.

Yeah just before the new year :)
And we will close this for now, and please let us know when you have any other questions.
Thanks,

CoreOS 921.0.0 was released to the alpha channel today, and it contains etcd 2.2.3.
I re-ran my tests, and huzzah! everything seems just fine.
Thanks for your help.

That's great! Thanks!


Not outputting correct voltage

#include <Arduino.h>
#include <analogWrite.h>

int brightStep = 1;
int brightness = 0;
uint8_t ledR = 34;
uint8_t ledG = 35;
uint8_t ledB = 32;
uint8_t ledW = 33;

void setup()
{

  // Set resolution for a specific pin
  analogWriteResolution(ledR, 12);
  analogWriteResolution(ledG, 12);
  analogWriteResolution(ledB, 12);
  analogWriteResolution(ledW, 12);

  analogWrite(ledR, 255);
  analogWrite(ledG, 255);
  analogWrite(ledB, 255);
  analogWrite(ledW, 255);

}

void loop() {}

This outputs
ledR = 0 = GPIO34
ledG = 0 = GPIO35
ledB = 1.6 V = GPIO32
ledW = 1.6 V = GPIO33
Why?

So pins 34, 35, 36, 39 are input only. That does not explain why the other pins only output a maximum of 1.65 V...


Add git commit icon

Add Git Commit Icon

@emilyrohrbough @emilmilanov Is this icon intended to be a 1px stroke? The vast majority of our icons are 2px stroke icons, so I thought I'd check first since it looks a bit funny compared to the other icons in the preview environment.


lomiri.lomiri-filemanager-app: init at 1.0.4

Description of changes
Working towards #99090.
Lomiri Filemanager App. Self-explanatory.

It's also one of the most flexible ways of sending files for content-hub transfers, so it's very much desired for a usable desktop experience.
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
[x] 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.

@ofborg build nixosTests.lomiri


CIF v2 - getTabs() returns tab id's of closed tabs

According to the documentation, getTabs() returns an array of tab Ids associated with template name or template tags for tabs in the session in focus, if the session belongs to the channel provider.
This works.
However, after closing tabs, the method still returns all tabs that where once opened in the session.
Scenario:

There are 3 tabs opened in a session
Microsoft.CIFramework.getTabs("tabtemplatename") returns ["tab-id-1", "tab-id-2", "tab-id-3"]
I close the tab with tab-id-3
Microsoft.CIFramework.getTabs("tabtemplatename") still returns ["tab-id-1", "tab-id-2", "tab-id-3"]
I close the tab with tab-id-2
Microsoft.CIFramework.getTabs("tabtemplatename") still returns ["tab-id-1", "tab-id-2", "tab-id-3"]

To me this seems like a bug or is this by design and why?

@rile81  Please share CIF v2 version installed in your org.

@rile81  this is fixed already , please try to upgrade to new available versions

@rile81 Please see the response above from v-sgoyal. Thanks.


config: add subjects datastream config

Closes https://github.com/inveniosoftware/invenio-vocabularies/issues/322

@yashlamba can you please rebase and fix tests?


fix: use path.posix

Fixes issue regarding path on windows when using orbitdb access controller, or access controllers that use ensure-ac-address.js

Let me know if I am missing anything, comments etc.

this looks good, mirrors what happens here
https://github.com/orbitdb/orbit-db/blob/e2ad2a0b7969622a4cc1c985ab10906eb672f0ac/src/orbit-db-address.js#L56


Fixed some details in with-office-365.md

Closes https://github.com/MicrosoftDocs/OfficeDocs-SkypeForBusiness/issues/6258.

@JohanFreelancer9 Copy editing is needed for this PR. Thanks.

@LanaChin PR has been copyedited and is ready for final review, could you please check and merge? Thanks!

Hi @dariomws ,
Were you able to test the changes that you made to the article?
Cindy

Hi @cichur,
I didn't test them as all the changes are to simplify the content. I didn't rewrite the code or commands.

$strLicense variable is the only fix that I applied. This variable is called in the Set-MsolUserLicense but never used. I think the writer forgot to add something in the third line:

I removed the $acctUpn variable and now the cmdlets pass the UPN value directly. In this way, we have only one line of code.
I removed the $strLicense variable and then passed a license example value directly. I think MEETING_ROOM is the best example here, as it should usually be.
I removed the last section with an example as it was no more than all the commands together. Each step use examples in the "Add a device account" title.
I also added a comment/note about Phone System capabilities that was in the example section and not in the "Add a device account" title. Also updated wording for this comment as it was updated.

Please let me know if you need more information.

HI @dariomws and @JohanFreelancer9
I'm not familiar with this content and am taking over for Lana, whose contract ended. :-(
I'm looking at the changes in line 199. It looks like an entire note was removed from the article. I just want to  make sure everything is correct before I merge the changes. :-)
Cindy

Hi @cichur, don't worry, ask all the questions you need.
I didn't remove that note, it's there in line 199 of the updated article:

Hi @dariomws,
Thank you. I do see it now. I'll go ahead and merge the PR. :-)
Thank you very much, Cindy


[v2.7] Port fix 478

Porting https://github.com/rancher/rancher/pull/45766

Closed in favor of Closed in favor of https://github.com/rancher/rancher/pull/45901


Configuration for add lsp feature to html! macro in Yew (rust)

hi, i try to config this plugin for add support for add lsp features to the html macro,  i try to follow the config i found in quarto-nvim but it didn't work, this is the config:
 {     "jmbuhr/otter.nvim",     opts = function(_, opts)       local rsquery = [[         (macro_invocation           name: (indentifier) @name (#eq? @name "html")           (token_tree             (ERROR) @html_macro           )         )       ]]       local otter = require("otter")       otter.activate(         { "html" },         { true },         { true },         rsquery       )     end   },

How does such a file look like?

this is how look the rust file, i'm trying to add html support for this macro

You'll need a TS query where either one capture called @_lang captures the name of a language and @content captures the content or where the name of the capture is the name of a language (e.g. @html). You can find examples for both in this query:
https://github.com/quarto-dev/quarto-nvim/blob/14a80ffab90567e360eb97b19039c4c16913ad79/lua/quarto/init.lua#L125-L138
    tsquery = [[
      (fenced_code_block
      (info_string
        (language) @_lang
      ) @info
        (#match? @info "{")
      (code_fence_content) @content (#offset! @content)
      )
      ((html_block) @html @combined)

      ((minus_metadata) @yaml (#offset! @yaml 1 0 -1 0))
      ((plus_metadata) @toml (#offset! @toml 1 0 -1 0)
      ]]

Or define a query that creates an injection and it can work without passing an additional query.


bug(executor): min-duration should also apply to steps with no actuated electrodes

Can't reproduce


How to --add_chat_history_to_context=True ?

Enter an instruction: what is 2+2?
According to basic arithmetic, the sum of two (2) is four (4), so the answer to your question is four (4).
Enter an instruction: add 5 to it
Sure! What number would you like me to add 5 to? Please provide the initial number.
Enter an instruction:
``python generate.py  --score_model=None --base_model='llama' --model_path_llama=zephyr-7b-beta.Q6_K.gguf --prompt_type=zephyr --max_seq_len=1024 --cli=True --max_new_tokens=1024 --add_chat_history_to_context=True --load_4bit=True --llamacpp_dict="{'n_gpu_layers':20}"

add_chat_history_to_context is by default true.
Under what case are you having some issue with history?  cli mode?

yes cli

Try again, I fixed some excessive limits.  But also consider making max_seq_len larger to 2048 and max_new_tokens smaller like 512.

Perfect! This is working marvelously.
However is there any way to enable it when --langchain_mode=UserData?
Many thanks for your unwavering support really appreciate it.

Is it not working with langchain mode enabled?

No it is not unfortunately

No it is not unfortunately

Your choices of CLI options is too limiting.  The 2nd round of chat would have something quite large in terms of number of tokens, esp. if you allow 1024 new tokens and 1024 is max tokens.
Also, your choice of llamacpp_dict is very limiting in terms of speed, it's about 10x slower than defaults.
Also, you don't need to pass load_4bit (unused for llama.cpp models) or add_chat_history_to_context (default is True).
A better version that is fast and can handle the long history with documents is (zephyr is not good for chat history + rag):
CUDA_VISIBLE_DEVICES=0 python generate.py --cli=True --langchain_model=UserData --score_model=None --base_model=https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/mistral-7b-instruct-v0.2.Q4_K_M.gguf --prompt_type=mistral --max_seq_len=2048 --max_new_tokens=128 --top_k_docs=3 --metadata_in_context=False --chunk-size=128 --add_disk_models_to_ui=False --pre_load_embedding_model=True --embedding_gpu_id=cpu --cut_distance=10000 --hf_embedding_model=BAAI/bge-base-en-v1.5


IRK for Android Device

How can I read the IRK from an Android device and add it as a private BLE device in Home Assistant? The Home Assistant page only says how to add macOS devices. Here in the wiki it is also possible with Android. Can someone help me there?
I use Android 14.
Many thanks

Take a spare ESP chip and install ESPresense on it. Connect it to your network. While still connected to your PC, either view the logs on ESPHome (you can use any random existing device to view the logs, just select "Plug into this computer"), using the ESPresense web terminal, or any other way you'd like.
Go to http://ESP_DEV_IP/ui/#/devices and click Enable. Pair your phone to the ESPresense chip. In the logs, you'll see it list an IRK. It'll be formatted something like irk:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. Copy that whole string, including irk:, and add it as a Private BLE Device in Home Assistant.
Or, alternatively, you can enable the BLE Transmitter in the HA companion app.

Thanks for the explanation. I did everything that way, but when I inserted the IRK into Home Assistant, this message comes. What can I do now?

... Copy that whole string, including irk:, and add it as a Private BLE Device in Home Assistant.

No, put it there without the irk: and without spaces, if any.

Additionally, I wrote a guide for Windows:
https://github.com/home-assistant/home-assistant.io/issues/33676

... Copy that whole string, including irk:, and add it as a Private BLE Device in Home Assistant.
No, put it there without the irk: and without spaces, if any.

And your device needs to be visible to one of your BLE proxies, of course.

Can I check whether my device is visible?

I guess Bermuda would show your device with its random Mac address.
I actually never checked if it's visible, I was close to one of the
scanners, unlocked my phone, opened the bluetooth settings and scanned for
other devices to make sure it is visible.
Am So., 21. Juli 2024 um 13:17 Uhr schrieb Kilian @.***

:

... Copy that whole string, including irk:, and add it as a Private BLE
Device in Home Assistant.
No, put it there without the irk: and without spaces, if any.
And your device needs to be visible to one of your BLE proxies, of course.
Can I check whether my device is visible?
—
Reply to this email directly, view it on GitHub
https://github.com/agittins/bermuda/issues/247#issuecomment-2241571822,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AANUCB2EGL3YWUGKWMEJAG3ZNOKERAVCNFSM6AAAAABK73KE2WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENBRGU3TCOBSGI
.
You are receiving this because you commented.Message ID:
@.***>

I tried to do it that way but unfortunately this message always comes when I insert the IRK.

I tried to do it that way but unfortunately this message always comes when I insert the IRK.

Having an IRK does not guarantee that your device supports BLE. I guess your device is quite up-to-date?
I don't know for sure, but I think you also need to keep the pairing on your device, so do not delete the pairing after you extracted the IRK of that connection.

Yes, I have a Google Pixel 6.
However, esprecense does not have to run permanently? I only used it to read the IRK. I try to keep the coupling to the ESP via Bluetooth.

If you have connected your smartphone to the scanner, make sure not to delete the connection on your smartphone. This is because the IRK is associated with this connection and is crucial for maintaining the pairing. The IRK is used in Bluetooth connections to generate and resolve random private addresses, ensuring that the devices recognize each other in future connections. Deleting the connection would require re-pairing and exchanging new IRKs.

I tried it but unfortunately it doesn't work and home assistant doesn't know the IRK.
I will then have to do it via the Companion app.

Did the IRK look like the example provided when you entered it? In my case, it did.
An Identity Resolving Key (IRK) in Bluetooth Low Energy (BLE) has a specific format that consists of 128 bits (16 bytes). It is a binary string that exclusively contains hexadecimal values. The exact structure is as follows:

Length and Format: An IRK is exactly 16 bytes (128 bits) long and is represented in hexadecimal form. Each position in the key represents four bits.

Permissible Characters: Since an IRK consists of hexadecimal values, the permissible characters are 0-9 and A-F. Special characters, letters outside A-F, or any other non-hexadecimal characters are not allowed.

Example:
4A5B6C7D8E9F0A1B2C3D4E5F67890ABC

In practice, the IRK is exchanged during the pairing and bonding process between two BLE devices and is stored in a secure database. It is used to verify the identity of devices and to generate and check Random Resolvable Private Addresses to protect user privacy.
For more technical details and precise specifications, you can refer to the Bluetooth Core Specification and documentation from sources like Texas Instruments.

Bluetooth Core Specification: www.bluetooth.com/specifications/bluetooth-core-specification
Texas Instruments Documentation: http://dev.ti.com/tirex/explore/node?node=A__AMFeexk1uTfW3L-dHNUnzQ__com.ti.SIMPLELINK_ACADEMY_CC2640R2SDK__7unKOT8__LATEST

Thanks, I'll do it with the Home Assistant Companion App.

If you have connected your smartphone to the scanner, make sure not to delete the connection on your smartphone. This is because the IRK is associated with this connection and is crucial for maintaining the pairing. The IRK is used in Bluetooth connections to generate and resolve random private addresses, ensuring that the devices recognize each other in future connections. Deleting the connection would require re-pairing and exchanging new IRKs.

I don't think this is correct. The IRK is used purely for identifying if a a given mac address belongs to the same device that gave the IRK. For Private Bluetooth Device this happens without a connection at all. I'm open to evidence to the contrary, though.
This means once you have the IRK for a device, you can delete that connection and if you used say an espresence device to get it, you can then re-flash the device with something else, all that matters is having the IRK.

Thanks, I'll do it with the Home Assistant Companion App.

Using the companion app (and asking Bermuda to track the iBeacon id) certainly works, so you should hopefully have no trouble setting that up.
The latest version of Bermuda will show you some info in the config dialog so you can tell if HA is receiving bluetooth data OK - it's possible that your original problem might have been that the IRK was OK but HA wasn't seeing any data.
If you have any trouble feel free to reopen this issue or create a new one.

Hi @agittins I am running into the same issue, Can you please confirm for Android:

Enable BLE on companion app
Enter the UUID from Companion app into the iBeacon tracker that is now shown in Home Assistant (New device discovered)
that is all I need to do? there is no need to find the IRK for Android devices?

Also, if its ok, once I have everything up and running, I would like to contribute to better documentation for this plugin.
Thank you for your time.

Hi @Raul-7-7, you don't need the iBeacon integration at all.
If you don't want to use irk, all you need to do is:

enable "BLE Transmitter" in the companion app
in Bermuda, "CONFIGURE", "SELECT DEVICES" you should find the uuid listed near the top of the drop-down. Select it and click submit.

You'll now have Bermuda sensors for that iBeacon.
The benefit of irk is that then you don't actually need the app to be broadcasting at all, (so no iBeacon uuid) as Bermuda will recognise any broadcast from the device.
For iphones this is a bigger benefit because they will often stop an app from advertising for power saving, which is less a problem for Android.


fix

ℹ Change description:
Nothing here
templates

[templates: bug, feature]

shows unavailable if price is 0, i think checking by currency should work because it should exist on all estimations


FUGR: error, different ABAP Language versions

When installing a maintenance view, https://github.com/abapGit-tests/FUGR_maintenance_view abapGit gives error "different ABAP Language versions"

code temporarily commented, need to look into how this can be fixed


Security fix: bump-up Gradio to 4.36.1

Description
Security fix: bump-up Gradio to 4.36.1
Type of change

[ ] Refactor
[ ] New feature
[ ] Bug fix
[ ] CVE fix
[ ] Optimization
[ ] Documentation Update
[ ] Configuration Update
[x] Security fix
[ ] Bump-up dependent library
[ ] Bump-up library or tool used for development (does not change the final image)

/approve


Rating system for finished books

I'll use a simple 5 star system for rating books with some optional explanatory text.

I'll leave out the explanatory text for now to make the system a bit easier to build. This leaves just the 5 stars. It'll go from 0 to 5 stars and will be restricted to only the "Already Read" library.


Configurable dist and public folders

I'm trying to use react-static to deploy a site on GitLab Pages. The great thing about GitLab pages compared to GitHub pages is GitLab provides a CI server that can run any static generator to build your site.
However, GitLab requires the website artifacts must be in the /public folder. So I want to build to the /public folder instead of the /dist folder. But there is already a /public folder in react-static. It would be nice if both directories could be configurable. Of course, I can rename/move/copy folders and files, but configurable folder names seems like a reasonable feature of react-static.

I'll look into this. In the meantime, I highly suggest just renaming your directories in your build script to satisfy your hosting.

For the time being, these are going to remain static directories. But quite possibly, we'll consider this again in the near future.


About the preparation of dataset

The setup document  explain that by preparing the dataest with following setup, we can execute the convert.py
<location>
|---input
    |---<image 0>
    |---<image 1>
    |---...

However when execute the
python convert.py -s data/lerf/figurines

It shows the following error, which means it failed at Feature extraction.
>  python convert.py -s data/lerf/figurines
sh: 1: colmap: not found
ERROR:root:Feature extraction failed with code 32512. Exiting.

Is there any way to execute convert.py with proper way?

How did you solve this problem?

How did you solve this problem?

Did you solve this problem?


OpenAI Assistants v2 api support for OpenAIAssistantRunnable

Title: "langchain: OpenAI Assistants v2 api support"
Descriptions

[x] "attachments" support added along with backward compatibility of "file_ids"

[x]  "tool_resources" support added while creating new assistant

[ ] "tool_choice" parameter support

[ ]  Streaming support

Dependencies: OpenAI v2 API (openai>=1.23.0)

Twitter handle: @skanta_rath

Hello! @eyurtsev @Anush008 @efriis  @cbornet
Do you think you could help us here reviewing and approving? This is blocking the new OpenAI v2 Assistants and it's quite urgent :cry:
Thank you very much! :heart:

Will older versions of openai <1.23.6 still work after this change ?

mb unrelated question but OpenAI v2 Assistant now supports tool_choice parameter and streaming. Does it covered?

Will older versions of openai <1.23.6 still work after this change ?

Yes. They will work as these changes are backward compatible

@Surya-Kanta thanks for your fast iteration!
@Enase, Surya just added compatibility with tool_choice. As for streaming is not implemented yet. Please keep in mind that this PR is bugfixing not a new feature. Currently the assistants can't be migrated to v2 :cry:

@mbonet I will then continue working on complete migration of Assistants v2 in this branch.

@cbornet @Enase can we then merge? :pray:

I have already finished upgrade for all breaking changes related to v2 migration apart from streaming related changes. Anyone want to contribute in this PR are welcome in advance.

would be great to have this in the next release, as it's required to use the Assistants API v2 when you wanna use it in combination with GPT4o

@Enase, Surya just added compatibility with tool_choice

It's not true even if you fix the obvious issues, thanks for your effort but I don't get the reason why you declare something that wasn't done.

Hi all, thank you for this. To avoid breaking changes with earlier versions of the openai sdk I've moved this to a new class OpenAIAssistantV2Runnable. I've marked it as beta. Please post your feedback; PRs are also welcome.

@ccurme thanks!

Hello, has the update been released?

Hello, has the update been released?

This was moved to langchain-community and released today. If you pip install langchain-community==0.2.1 you can import it with:
from langchain_community.agents.openai_assistant import OpenAIAssistantV2Runnable

API reference: https://api.python.langchain.com/en/latest/agents/langchain_community.agents.openai_assistant.base.OpenAIAssistantV2Runnable.html
Note that this class is marked as beta; we welcome issues / PRs if you run into anything.

I identified that the function does not return the assistent tools, is there a way to make this change?
        try:
            response = self._get_response(run)

This is great. Does it support streaming yet?

@ccurme do you think we can improve the original docs?
https://api.python.langchain.com/en/latest/agents/langchain.agents.openai_assistant.base_v2.OpenAIAssistantV2Runnable.html
The suggested import is quite wrong langchain.agents no?
from langchain.agents.openai_assistant import OpenAIAssistantV2Runnable

You pointed it should be from langchain_community namespace and it took me a good 2 hrs to notice this discrepancy :cry:

Looks like the pipeline is failing for this merge? Any indication when this will be successfully merged?
@codeonprod thanks for doing this!


Want to unhide main window

When you press the X on the top right of the screen, it gives you the option to hide the window from ever showing up again. But if i want to enter OPcodes in the future i want to unhide it. How would i do this usually? Can anyone help?
The only solution ive found is to reinstall alex itself. which isnt ideal

xivalexander closes to your system tray (located, by default, in the bottom-right on Windows). Click "Show Control Window" on the gear symbol in your tray to re-open the control window after closing it to the tray.

xivalexander closes to your system tray (located, by default, in the bottom-right on Windows). Click "Show Control Window" on the gear symbol in your tray to re-open the control window after closing it to the tray.

thank you!


Stop tests from hanging locally on conda.

Current dependencies on/for this PR:

main

PR #302   👈

This stack of pull requests is managed by Graphite.


Feature: screenshot of any control

would be handy to be able to screenshot the entire running app and any widget.
use case: using Flet to generate png/jpgs for static graphic designs, improve performance by caching a layout as an image an reloading it as an image
there appears to be support for this in flutter
see:
https://stackoverflow.com/questions/51117958/how-to-take-a-screenshot-of-the-current-widget-flutter
https://www.youtube.com/watch?v=cVAGLDuc2xE
https://www.youtube.com/watch?v=Nuni5VQXARo

Package to be implemented: https://pub.dev/packages/screenshot


[HDFS] Experimental Kerberos Support

Adds experimental Kerberos Support via SECURE_MODE flag.
Introduces TASK_NAME env var.
Adds support for per task JRE via TASK_JRE_URI. This is important in Kerberos configuration so that JRE with pre-installed (inside jre/lib/security) JCE jars and krb5.conf can used.
Enables better configurable logging via HADOOP_OPTS and HADOOP_ROOT_LOGGER.
Experimental KEYTABS_URI is used for downloading keytabs on each node. This WILL BE replaced in future once better solution is available.
Makes service user configurable.

Doc: https://docs.google.com/document/d/1lqlEIs98j1VsAyoEYnhYoaNmYylcoaBAwHpD29yKjU4

@mohitsoni:  Can we finish this off or close the PR, please?


If a value is zero, the unit wasn't shown.

This fix tests the value type. If it's a number, the unit is added. From my point of view the original behaviour is incorrect because I specifically ask to display that unit, even if it is zero.

The title of this and the implementation change do not seem to be for the same thing.
Not showing zero units is by design and it is part of point of making it human-like in the display. Your desired behavior is in the minority and that change would break everyone else's experience.
Your PR makes a change that would never work. That first test will always be true. value is always a number. If +ts.value fails to produce a number (i.e., NaN) then 0 will be the value. Both satisfy `typeof value === 'number'. Beyond this I don't even see how it fixes what the title claims is the issue.
The good news is that you don't need to change the library to make zero units display. You could just write your own formatting. For example here is an example from another issue where zeros (and even leading zeros for minutes & seconds) were required.
https://github.com/mckamey/countdownjs/issues/4#issuecomment-109644816
I don't know what your code looks like that uses countdown.js but presumably if you have fixed labels then the formatting is easier. Perhaps a snippet of code would help better understand what you are trying to do. Please open as a separate issue as I'm closing this PR.


Individual member report

Was there a request for an Individual youth member report that gave a one page summary of all their achievements and what was remaining to get to the Peak Award? The intention was to use this report to accompany the Peak Award submission to the local Branch.

Yes,
It is https://github.com/NomisNostab/Topo-Blazor/issues/34

Acknowledged.


Make playground run again

Closes #24 and fixes another playground build error introduced in #32.

Perfect, thanks! 🚀


Refactor Add Person and Delete Person

Refactor Person class to Student

Format for Phone has been changed to strictly 8 digit numbers only instead of at least 3 digit numbers, format for Name has also been changed to alphabetical characters only instead of alphanumeric, test cases have been updated accordingly


@kanaabe => Width bugs

Changes the placement and size of .screen-reader-text to no longer render it offscreen, which led to bugs in width.
Now text is rendered at 0px height and width, and placed in the top corner of the page.  This still passes Chrome's accessibility audit.

Ah much better solution. Thanks!


Add guidance for text alignment classes

What
We added some new classes for aligning text in https://github.com/alphagov/govuk-frontend/issues/1824. We should add some corresponding guidance to the Design System for these classes.
Why
To help our users discover the classes and understand how to use them
Who needs to know about this
Developer, content writer
Done when

[ ] New guidance PR raised and approved (not yet merged)
[ ] PR merged in after GOV.UK Frontend 3.14.0 is released

Draft guidance here: https://docs.google.com/document/d/1XM2qX_CZ99RuiJzs-DKK_-_xTXvuRbbqJ40Jpaouqag/edit#

Closing as a dupe of #1863.


fixes tree view problem on newer versions of atom

Fixes issue #68

Thanks! I'll test and upstream soon

Needs to be tested with an old version of atom to see if it's compatible.

yep!

there was this one as well that I was in the process of getting to test https://github.com/snowkit/atom-flow/pull/18

Perfect! Hope either one of the solution fixes the issue.


Design/implement behaviors api

Is this something separate from https://github.com/dart-lang/sdk/issues/23770 ? It seemed like that would fix the issues.

If we decide to wait for it, then yes the design can probably use that feature. We also need to explore how this will interact with the behaviors written in JS. I have a feeling its going to end up being more complicated.

https://github.com/dart-lang/polymer-dart/pull/557 is the first step towards this. In some ways the api actually is better than using the super calls in mixins proposal, as it guarantees that all lifecycle methods will be called, regardless of whether you call super.

This has turned out to work quite well, so I think it will be the final implementation, at least until we have the super call in mixins support at which point we can evaluate migrating to that. For the reason stated above I am actually inclined not to ever migrate though.

blocked on reflectable transformer work

Hi @jakemac53 .
Is there a chance to run a minimal example this week?
Currently tests are falling due reflectable. (UnimplementedError in declarationsFor)
I am concerned about performance for List, Map. A simple example for the List (change / add / remove) can help.

I think the reflectable work is probably a couple weeks out still unfortunately. You can run in dev mode though (in dartium, not through pub serve)

Thanks for the answer.
I very much hope that the alpha version will be in our hands by the end of August.
I use the branch 'behaviors'.
I'm run:
pub serve
dartium
My minimal example (property_binding.dart) is not working.
Do you have a minimum working example with bindings?

If you are on the behaviors branch, then don't run pub serve. Instead just start any local server at the top level dir of your package, and access it that way. Pub serve runs the transformers which are not yet fully implemented (hence the errors you are getting).

Thanks.
I'll try.

Closing this, its still blocked from being merged in until reflectable transformer is more fully implemented, but everything works in development mode.


A few changes to improve the benchmark performance.

Thanks @bramp !
Here's me wishing I had some fuzz testing up and running :).