ESP32S3 Stuck in Download Boot Mode (IDFGH-13141)

Answers checklist.

[X] I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
[X] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
[X] I have searched the issue tracker for a similar issue and not found a similar issue.

IDF version.
v5.2.2
Espressif SoC revision.
ESP32-S3
Operating System used.
Windows
How did you build your project?
Command line with idf.py
If you are using Windows, please specify command line type.
CMD
Development Kit.
Custom Board
Power Supply used.
External 3.3V
What is the expected behavior?
The device to boot in SPI Boot Mode
What is the actual behavior?
Device boots in Joint Download Boot Mode

Steps to reproduce.

Device operating normally
Remove power to ESP (3.3V) to trigger brownout reset
Upon powering up the device, the device gets stuck in Joint Download Boot Mode whereas the Boot Pin

Debug Logs.
I (42) boot: ESP-IDF v5.2.2-dirty 2nd stage bootloader
I (42) boot: compile time Jun 26 2024 12:40:45
I (43) boot: Multicore bootloader
I (46) boot: chip revision: v0.2
I (50) boot.esp32s3: Boot SPI Speed : 80MHz
I (55) boot.esp32s3: SPI Mode       : DIO
I (59) boot.esp32s3: SPI Flash Size : 4MB
I (64) boot: Enabling RNG early entropy source...
I (70) boot: Partition Table:
I (73) boot: ## Label            Usage          Type ST Offset   Length
I (80) boot:  0 nvs              WiFi data        01 02 00009000 00004000
I (88) boot:  1 otadata          OTA data         01 00 0000d000 00002000
I (95) boot:  2 phy_init         RF data          01 01 0000f000 00001000
I (103) boot:  3 ota_0            OTA app          00 10 00010000 00180000
I (110) boot:  4 ota_1            OTA app          00 11 00190000 00180000
I (118) boot: End of partition table
I (122) esp_image: segment 0: paddr=00010020 vaddr=3c0e0020 size=48880h (297088) map
I (164) esp_image: segment 1: paddr=000588a8 vaddr=3fc9f200 size=050dch ( 20700) load
I (167) esp_image: segment 2: paddr=0005d98c vaddr=40374000 size=0268ch (  9868) load
I (171) esp_image: segment 3: paddr=00060020 vaddr=42000020 size=d5d14h (875796) map
I (276) esp_image: segment 4: paddr=00135d3c vaddr=4037668c size=18aech (101100) load
I (292) esp_image: segment 5: paddr=0014e830 vaddr=50001000 size=00004h (     4) load
I (292) esp_image: segment 6: paddr=0014e83c vaddr=600fe000 size=00070h (   112) load
I (308) boot: Loaded app from partition at offset 0x10000
I (309) boot: Disabling RNG early entropy source...
I (320) cpu_start: Multicore app
I (330) cpu_start: Pro cpu start user code
I (330) cpu_start: cpu freq: 160000000 Hz
I (330) cpu_start: Application information:
I (333) cpu_start: Project name:     dcarb_d100
I (338) cpu_start: App version:      v1.3.5-rc5-2-gffbe7e9-dirty
I (345) cpu_start: Compile time:     Jun 26 2024 12:40:19
I (351) cpu_start: ELF file SHA256:  144429dac...
I (356) cpu_start: ESP-IDF:          v5.2.2-dirty
I (362) cpu_start: Min chip rev:     v0.0
I (366) cpu_start: Max chip rev:     v0.99
I (371) cpu_start: Chip rev:         v0.2
I (376) heap_init: Initializing. RAM available for dynamic allocation:
I (384) heap_init: At 3FCAB358 len 0003E3B8 (248 KiB): RAM
I (389) heap_init: At 3FCE9710 len 00005724 (21 KiB): RAM
I (396) heap_init: At 3FCF0000 len 00008000 (32 KiB): DRAM
I (402) heap_init: At 600FE070 len 00001F78 (7 KiB): RTCRAM
I (409) spi_flash: detected chip: generic
I (413) spi_flash: flash io: dio
W (417) i2c: This driver is an old driver, please migrate your application code to adapt `driver/i2c_master.h`
I (427) sleep: Configure to isolate all GPIO pins in sleep state
I (434) sleep: Enable automatic switching of GPIO sleep configuration
I (441) coexist: coex firmware version: d96c1e51f
I (447) coexist: coexist rom version e7ae62f
I (452) main_task: Started on CPU0
I (462) main_task: Calling app_main()
E (462) BOOT: Download boot mode is enabled (persistent).
I (462) main: FIRMWARE VERSION: v1.3.0, HW_VERSION: REV-F_3.2
I (502) NVS: S_nvs semaphore init
I (532) Simple-ADC: ADC Unit 0 calibration scheme version is Curve Fitting
I (532) Simple-ADC: ADC Unit 0 Calibration Success
I (532) Simple-ADC: ADC Unit 1 calibration scheme version is Curve Fitting
I (542) Simple-ADC: ADC Unit 1 Calibration Success
I (542) gpio: GPIO[10]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (552) gpio: GPIO[20]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (562) PID: Hbridge ADCs initialized
W (562) main: Not a ULP-RISC-V wakeup (cause = 0), initializing it
I (632) iotcore-service: Using DEV Server MQTT Credentials
I (632) iotcore_events: iotcore event loop started
I (632) NVS: S_nvs semaphore init
I (722) pp: pp rom version: e7ae62f
I (722) net80211: net80211 rom version: e7ae62f
I (732) wifi:wifi driver task: 3fcbf584, prio:23, stack:6656, core=0
I (732) wifi:wifi firmware version: 3e0076f
I (732) wifi:wifi certification version: v7.0
I (732) wifi:config NVS flash: enabled
I (732) wifi:config nano formating: disabled
I (742) wifi:Init data frame dynamic rx buffer num: 32
I (742) wifi:Init static rx mgmt buffer num: 5
I (752) wifi:Init management short buffer num: 32
I (752) wifi:Init dynamic tx buffer num: 32
I (762) wifi:Init static tx FG buffer num: 2
I (762) wifi:Init static rx buffer size: 1600
I (762) wifi:Init static rx buffer num: 10
I (772) wifi:Init dynamic rx buffer num: 32
I (772) wifi_init: rx ba win: 6
I (782) wifi_init: tcpip mbox: 32
I (782) wifi_init: udp mbox: 6
I (782) wifi_init: tcp mbox: 6
I (792) wifi_init: tcp tx win: 5760
I (792) wifi_init: tcp rx win: 5760
I (802) wifi_init: tcp mss: 1440
I (802) wifi_init: WiFi IRAM OP enabled
I (802) wifi_init: WiFi RX IRAM OP enabled
I (812) Wifi Manager: Setting Wifi AP mode
I (812) Wifi Manager: ap_config.ap.channel = 3
I (822) Wifi Manager: ap_config.ap.authmode = WIFI_AUTH_OPEN
I (832) Wifi Manager: wifi_init_softap finished.SSID:IOTCORE_348518B10588C2R2 password: pin:0527
W (832) Connectivity: Starting Wifi
I (842) wifi:Set ps type: 2, coexist: 0

I (842) phy_init: phy_version 670,b7bc9b9,Apr 30 2024,10:54:13
I (902) wifi:mode : sta (34:85:18:b1:05:88) + softAP (34:85:18:b1:05:89)
I (902) wifi:enable tsf
I (902) wifi:Total power save buffer number: 16
I (902) wifi:Init max length of beacon: 752/752
I (902) wifi:Init max length of beacon: 752/752
I (912) esp_netif_lwip: DHCP server started on interface WIFI_AP_DEF with IP: <IP_ADDRESS>
I (912) MQTT: MQTT_EVENT_BEFORE_CONNECT
I (922) gpio: GPIO[9]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (922) RTC: Boot count: 1
E (922) esp-tls: couldn't get hostname for :dcarb-broker-dev.australiaeast.cloudapp.azure.com: getaddrinfo() returns 202, addrinfo=0x0
I (932) RTC: timezone GMT0

E (952) transport_base: Failed to open a new connection: 32769
I (952) RTC: Time is not set yet. Connecting to WiFi and getting time over NTP.
E (962) mqtt_client: Error transport connect
I (962) RTC: timezone GMT0

E (972) MQTT: MQTT_EVENT_ERROR
I (972) RTC: The current date/time in Pakistan is: Thu Jan  1 00:00:00 1970 (0)
E (982) MQTT: MQTT_EVENT_DISCONNECTED
I (932) gpio: GPIO[12]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (1002) gpio: GPIO[42]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (1012) gpio: GPIO[48]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (1022) gpio: GPIO[1]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (1032) gpio: GPIO[47]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (1042) gpio: GPIO[15]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:3
I (1042) gpio: GPIO[4]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:3
I (1052) main: Hardware Capabilities: ldr 1, led 1, invert waterlvl 0
I (1062) gpio: GPIO[5]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:3
E (1072) main: Main Bus Vo�ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0xf (BROWNOUT_RST),boot:0x0 (DOWNLOAD(USB/UART0))
waiting for download

More Information.
I have confirmed that the voltage on the GPIO0 is 3.3V during bootup

Have you tried pushing the boot button, hold your finger on it, then push the reset buton and release the reset button without releasing the boot? Or something like that? Sometimes I do that and works again.

Is anything connected to GPIO0?
What happens if you reset it again when it enters download mode? Will it enter download mode again or do an SPI boot?

I have a custom PCB design with no buttons connected to Enable and GPIO0
The enable pin is pulled high via a 10k resistor along with 1uF capacitor
The GPIO0 is left unconnected as it is already pulled high internally
My ESP32S3 is powered through a backup coin cell CR2477
I am continuously monitoring the main power line through ADC and when it drops below a threshold, I switch the controller in deep sleep mode while powered by the backup coin cell.
Sometimes, the main power drops rapidly and the controller does not have enough time to go into deep sleep mode and brownout occurs
About 90% of the time when a brownout is triggered, the device boots up as intended i.e. SPI boot mode and starts operating. Rarely the device gets stuck into the download boot mode and this issue is not resolved until reset the ESP32S3 through the enable pin and power cycle the whole thing. If I only power cycle, ESP32S3 continuously boots in download boot mode
From the boot mode, I have checked that the 1st Stage bootloader is detecting GPIO0 as low and going into download boot mode
I have tried using a external pullup resistor with no effect
I believe the issue is somewhere in the 1st stage bootloader where it is misreading the GPIO0 state
So far I have been able to replicate this issue in 5 different devices on my side so I believe this is not a manufacturing fault

I believe the issue is somewhere in the 1st stage bootloader where it is misreading the GPIO0 state

The strapping pins are latched by HW and the first stage bootloader simply reads this register (GPIO_STRAPPING) so there shouldnt be much room for software errors.
I'll take this issue to our digital team and see if they can explain what is happening

similar issue:
https://github.com/espressif/esptool/issues/970

and for completeness:
https://github.com/espressif/esp-idf/issues/13783

Sometimes, the main power drops rapidly and the controller does not have enough time to go into deep sleep mode and brownout occurs

I had the same issue with our custom controller, but brownout and "sticking" occured in the moment of switching between main power supply and reserve battery. The solution was pretty straightforward, just increase capacitor on EN pin up to 10 uF, so esp32s3 will be in reset state a bit longer

In my opinion, the issue is with the power supply: the CR2477 battery.
No matter what their capacity (200mAh, 1000mAh, ...), these coin batteries have a very low maximum current peak, ~20mAh, you have to check the datasheet of yours. However, on boot the ESP32 series chips, including the S3, are very likely to have a much higher current peak (100~300mAh).
As @ESP-Marius said, the strapping pins are latched in hardware, but since the power supply is unstable/not in range, the hardware is not guaranteed to work properly.
Have a try power your S3 with a stable power supply and see if this issue is still here

@Areeb-Mufti Can you please connect the gpio0 and gpio46 pins to an oscilloscope and then reproduce this issue on your Custom Board and observe the waveforms (levels) of these two pins at the same time.

@Areeb-Mufti  If there are no more issues, we will close this ticket.

Thanks for reporting, we will close this issue. Feel free to reopen if have more updates.
Thanks for using our Espressif product!


[Hub Generated] Review request for Microsoft.Cache to add version preview/2020-10-01-preview

This is a PR generated at OpenAPI Hub. You can view your work branch via this link.
Contribution checklist:

[x] I commit to follow the Breaking Change Policy of “no breaking changes
[x] I have reviewed the documentation for the workflow.
[x] Validation tools were run on swagger spec(s) and errors have all been fixed in this PR. How to fix?

If any further question about AME onboarding or validation tools, please view the FAQ.
ARM API Review Checklist

[x] Ensure to check this box if one of the following scenarios meet updates in the PR, so that label “WaitForARMFeedback” will be added automatically to involve ARM API Review. Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs, all “removals” and “adding a new property” no more require ARM API review.

Adding new API(s)
Adding a new API version
Adding a new service

[x] If you are blocked on ARM review and want to get the PR merged with urgency, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.

Breaking Change Review Checklist
If there are following updates in the PR, ensure to request an approval from API Review Board as defined in the Breaking Change Policy.

[ ] Removing API(s) in stable version
[ ] Removing properties in stable version
[ ] Removing API version(s) in stable version
[ ] Updating API in stable version with Breaking Change Validation errors
[ ] Updating API(s) in preview over 1 year

Please follow the link to find more details on PR review process.

/azp run automation - sdk

/azp run automation - sdk

/azp run unifiedPipeline

/azp run automation - sdk

/azp run unifiedPipeline

/azp run automation - sdk

/azp run unifiedPipeline

/azp run automation - sdk

/azp run unifiedPipeline

/azp run automation - sdk

/azp run unifiedPipeline

/azp run automation - sdk

/azp run unifiedPipeline

/azp run automation - sdk

/azp run automation - sdk

/azp run automation - sdk

/azp run unifiedPipeline

/azp run unifiedPipeline

/azp run automation - sdk

/azp run automation - sdk

/azp run unifiedPipeline

/azp run automation - sdk

/azp run unifiedPipeline

/azp run automation - sdk

/azp run automation - sdk

/azp run unifiedPipeline

/azp run automation - sdk

/azp run automation - sdk

@majastrz But... having re-scanned the PR spec, it seems to me that having additional provisioningStates like "Disabling, Scaling, Updating" has always been allowed according to the following, which implies various updates can change the provisioningState after it reaches a terminal state:
"The provisioningState field should be returned on all future GETs, even after it is complete, until some other operation (e.g. a DELETE or UPDATE) causes it to transition to a non-terminal state."

@majastrz But... having re-scanned the PR spec, it seems to me that having additional provisioningStates like "Disabling, Scaling, Updating" has always been allowed according to the following, which implies various updates can change the provisioningState after it reaches a terminal state:
"The provisioningState field should be returned on all future GETs, even after it is complete, until some other operation (e.g. a DELETE or UPDATE) causes it to transition to a non-terminal state."

Adding non-terminal states is allowed, but adding terminal states is not. DeleteFailed and Disabled are terminal states that aren't in the set of Succeeded, Failed, Canceled:

/azp run automation - sdk

/azp run automation - sdk

I got a notification that someone was asking about adding the Deleting state, but I can't see the comment. That's a non-terminal state, so that's definitely fine.

/azp run automation - sdk

Still signed off from ARM side.

@akning-ms May it be merged?


Alignment failed

I used juicer1.6 and juicer2 to assemble the hic data respectively, but both reported errors in the comparison step. I downloaded the latest juicer-tools.
The download code is as follows:
cd juicer-1.6/
ln -s CPU scripts
cd scripts/common
wget https://github.com/aidenlab/Juicebox/releases/download/v2.17.00/juicer_tools_2.17.00.jar
ln -s juicer_tools_2.17.00.jar juicer_tools.jar
The running code is as follows：
nohup bash /ME4012_Vol0002/dengaiping/software/juicer/scripts/juicer.sh -g SanyaOcu -z /ME4012_Vol0002/dengaiping/genome_analysis/三亚基因组分析/hic数据辅助组装/hifi.fa/reference/SanyaOcu.fa -y /ME4012_Vol0002/dengaiping/genome_analysis/三亚基因组分析/hic数据辅助组装/hifi.fa/restriction_sites/SanyaOcu_DpnII.txt -p /ME4012_Vol0002/dengaiping/genome_analysis/三亚基因组分析/hic数据辅助组装/hifi.fa/restriction_sites/SanyaOcu.chrom.size -s DpnII -D /ME4012_Vol0002/dengaiping/software/juicer/CPU -t 25 &> juicer.log &
The two errors are:
[M::mem_pestat] (25, 50, 75) percentile: (513, 1719, 4473)
9644 [M::mem_pestat] low and high boundaries for computing mean and std.dev: (1, 12393)
9645 [M::mem_pestat] mean and std.dev: (2777.48, 2737.17)
9646 [M::mem_pestat] low and high boundaries for proper pairs: (1, 16353)
9647 [M::mem_pestat] analyzing insert size distribution for orientation RR...
9648 [M::mem_pestat] (25, 50, 75) percentile: (800, 2377, 5061)
9649 [M::mem_pestat] low and high boundaries for computing mean and std.dev: (1, 13583)
9650 [M::mem_pestat] mean and std.dev: (3207.29, 2823.76)
9651 [M::mem_pestat] low and high boundaries for proper pairs: (1, 17844)
9652 [M::mem_pestat] skip orientation FF
9653 [M::mem_pestat] skip orientation RF
9654 [M::mem_pestat] skip orientation RR
9655 [M::mem_process_seqs] Processed 1044668 reads in 780.379 CPU sec, 49.587 real sec
9656 [fsync] Input/output error
9657 ***! Alignment of /ME4012_Vol0002/dengaiping/genome_analysis/三亚基因组分析/hic数据辅助组装/hifi.fa/splits/SY1-F2-3_R1.fastq.gz /ME4     012_Vol0002/dengaiping/genome_analysis/三亚基因组分析/hic数据辅助组装/hifi.fa/splits/SY1-F2-3_R2.fastq.gz failed.
9646 [M::mem_pestat] mean and std.dev: (2750.11, 2680.78)
9647 [M::mem_pestat] low and high boundaries for proper pairs: (1, 16062)
9648 [M::mem_pestat] analyzing insert size distribution for orientation RR...
9649 [M::mem_pestat] (25, 50, 75) percentile: (742, 2423, 5081)
9650 [M::mem_pestat] low and high boundaries for computing mean and std.dev: (1, 13759)
9651 [M::mem_pestat] mean and std.dev: (3196.86, 2815.57)
9652 [M::mem_pestat] low and high boundaries for proper pairs: (1, 18098)
9653 [M::mem_pestat] skip orientation FF
9654 [M::mem_pestat] skip orientation RF
9655 [M::mem_pestat] skip orientation RR
9656 [M::mem_process_seqs] Processed 796818 reads in 575.975 CPU sec, 26.110 real sec
9657 [M::mem_pestat] # candidate unique pairs for (FF, FR, RF, RR): (0, 0, 0, 0)
9658 [M::mem_pestat] skip orientation FF as there are not enough pairs
9659 [M::mem_pestat] skip orientation FR as there are not enough pairs
9660 [M::mem_pestat] skip orientation RF as there are not enough pairs
9661 [M::mem_pestat] skip orientation RR as there are not enough pairs
9662 [mem_sam_pe] paired reads have different names: "@EEFFFGFFFFEFCBDGEFFFFAEFFFFFFG=F", "E100051117L1C007R0231643190"
9663
9664 ***! Alignment of /ME4012_Vol0002/dengaiping/genome_analysis/三亚基因组分析/hic数据辅助组装/hifi2.fa/splits/SY1-F2-3_R1.fastq.gz /ME     4012_Vol0002/dengaiping/genome_analysis/三亚基因组分析/hic数据辅助组装/hifi2.fa/splits/SY1-F2-3_R2.fastq.gz failed.
Before, I cloned juicer2 directly, and juicer-tools was an old version, but I couldn't generate .hic in one step at the end, so I downloaded the latest juicer-tools and ran it again, but an error was reported earlier. Please help me, what is the possible problem?

Hi there,
The problem is found here:
9662 [mem_sam_pe] paired reads have different names: "@EEFFFGFFFFEFCBDGEFFFFAEFFFFFFG=F", "E100051117L1C007R0231643190"
Your fastq files (at least one of them) seem to be corrupted.

你好呀，
问题在这里找到：
9662 [mem_sam_pe] 配对读取具有不同的名称：“@EEFFFGFFFFEFCBDGEFFFFAEFFFFFFG=F”、“E100051117L1C007R0231643190”
您的 fastq 文件（至少其中一个）似乎已损坏。

thanks for your answer, do you know what is the reason for the other error


List supported devices in the README

@VictorKoenders @fpagliughi maybe it would be a good idea now that we support a few devices to list them. Can you give me your model of roomba?

Haven't fully tested my roomba through yet but I added my model (966)

I haven’t gotten mine to work yet (see #9), but if I do, I will update the read email.

Good enough for now. If there is anything special to do for your model you can mention it in the README


YAML schema only allows bool, string or null for default values for settings

https://github.com/Pioreactor/pioreactorui/blob/d24275fd5eba71f51b721888278e8e5e96c3d120/pioreactorui/structs.py#L12
class PublishedSettingsDescriptor(Struct, forbid_unknown_fields=True):  # type: ignore     key: str     type: t.Literal["numeric", "boolean", "string", "json"]     display: bool     description: t.Optional[str] = None     default: t.Optional[t.Union[str, bool]] = None     unit: t.Optional[str] = None     label: t.Optional[str] = None  # if display is false, this isn't needed     editable: bool = True
If using a float for a setting then an error might be raised like:
2024-12-13T18:09:44 | pioreactor/pioreactor01/$experiment/logs/ui/error | {"message":"Yaml error in vernier_fph_bta.yaml: Expected bool | str | null, got float- at$.published_settings[1].default","task":"get_job_contrib","source":"ui","level":"ERROR","timestamp":"2024-12-13T18:09:44.682885Z"}
I'm not sure if there's a reason not to allow this behaviour? My expected behaviour would have been that the "type" field restricted the allowable types here

As mentioned in my forum post here, I think the defaults field is used only in very specific places, but I can probably move logic to those specific places  and I'll look into deprecating the default field. As is, it's probably more confusing that worth it to keep around.


Incomplete WAI-ARIA role description for tabpanel

Request type

[ ] Please close this issue, I accidentally submitted it without adding any details
[ ] New documentation
[x] Correction or update

Details

While reading the summary page on WAI-ARIA roles I noticed that the tabpanel role had an incomplete description.
https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/ARIA:_tabpanel_role

This role is referenced in the tab role, where tablist is also referenced, but the link is coloured red. I assume from this that the links are broken.
https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-2/tabs.html
It seems the official definition is available here:
https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-2/tabs.html
The MDN reference docs are a great resource, I'm happy to put together a pull request if it would be helpful.

NB: I have joined the MDN site so should be able to submit a wiki update for review.

NB: I have joined the MDN site so should be able to submit a wiki update for review.

Have you been able to edit the wiki?

I took a look and reached out to one of the previous authors. I will look again and put something in for review.
Not sure if reference to the tabpanel role should be removed or just better linked to other pages/info.


Latency for get_state using MemorySaver is very high

Checked other resources

[X] I added a very descriptive title to this issue.
[X] I searched the LangGraph/LangChain documentation with the integrated search.
[X] I used the GitHub search to find a similar question and didn't find it.
[X] I am sure that this is a bug in LangGraph/LangChain rather than my code.
[X] I am sure this is better as an issue rather than a GitHub discussion, since this is a LangGraph bug and not a design question.

Example Code
t0 = time.time()
snapshot = graph_manager.graph.get_state(config)
print(f"get_state latency: {(time.time() - t0) * 1000:.2f}ms")
messages = snapshot.values.get("messages")

Error Message and Stack Trace (if applicable)
No response
Description
Hey! I am building an extremely low-latency application. I noticed that when using MemorySaver, the latency of this simple call is between 20-40ms -- this might sound small but is pretty significant for my use case. Is there any way to get this down?
System Info
langgraph 0.2.46
langgraph-checkpoint 2.0.3
python 3.10

@mukundt any reason why you're not using langgraph-checkpoint-postgres / langgraph-checkpoint-sqlite / langgraph-checkpoint-duckdb? in-memory checkpointer is not meant for any production applications

will investigate memory saver latency in the meantime -- thanks for reporting

@vbarda are any of those lower latency? If so, more than happy to give them a shot! I just assumed memory saver would be the fastest.
My application only has one active graph in use at a time, so don't need the benefits that a DB offers :)

@vbarda - it should be pretty simple, just a bunch of (pretty small) lists. I've noticed sometimes get_state is 3 ms at the start, but then it is consistently 35-40ms after that. This is on an M3 MacBook so should be pretty fast.
class State(TypedDict):
    messages: Annotated[list, add_and_persist_messages]
    agents: Annotated[list, reducer]
    user_info: str
    dialog_state: Annotated[
        list[str],
        update_dialog_stack,
    ]
    ```

@mukundt do you see the same issue if you call checkpointer.get_tuple(config)? i think the latency you're seeing is coming from .get_state, but wanted to confirm

@mukundt could you please update to langchain-core==0.3.19 and see if you're still running into this issue?

@vbarda with langchain-core==0.3.19 + get_state I still have the same issue:
GET_STATE SYNC LATENCY: 45.90ms
GET_STATE SYNC LATENCY: 20.98ms

However, checkpointer.get_tuple(config) is significantly faster, never more than 1ms. Should we use this instead? And does it have any different behavior to get the messages array?
GET_STATE SYNC LATENCY: 36.74ms
GET_TUPLE SYNC LATENCY: 0.16ms


dropzone dependency

I am new to vue, but how can I use vue2dropzone in umd? I get this error:

[Vue warn]: Error in mounted hook: "Error: Module name "dropzone" has not been loaded yet for context: _. Use require([])
http://requirejs.org/docs/errors.html#notloaded"

found in

---> <VueDropzone>
       <Root>

Can you provide more context as to how you are using this component? Can you provide a fuller snippet of your setup?

Closing to to inactivity


Metadata

Sorry I haven't been particularly prompt in getting to implementing the MetaData reader/writer.
Wanted to post this, just to show some progress, and in case I took some wrong turn in what i've implemented so far...
This is unfinished/untested in that I need to implement the PtexTexture::getMetaData reader aspects before I can really test it.  Otherwise this should eventually Fix #10

Hmm, while I might have overlooked something, I didn't see anything but warnings in the logs or indication of what exactly was ultimately causing the CI failure.

So I tried to implement (not very elegant but low level reading of metadata), this doesn't support conversion back into the MetaDataType, it just returns an &[u8].  It seems likely we can make some nicer mechanism.
But I figured none the less a low level reader seemed like a good stopping point, due to string encodings
and avoiding introduction of new types for the reader to fan out to, because the AsUint8Ptr style really only seems to work for writing.
So, I think this might require some more work, but is probably complete enough to look at.

Thanks, this is looking pretty good to me. I'm not sure why github complains about the conflict because when I merge locally (which is what I already did) it merged cleanly.
Is there anything I should wait on before merging, or is this more or less good to go?
I've also been meaning to come back to #6 soon ~ let me know if you're still looking into that one or if there's some areas that could use some help.

I think this one is more or less good to go, unless you want me to do some history rewriting to get rid of the interim error in the ptexwriter_write_meta_data missing argument, and squash the rustfmt commit.
I'll have to look at the conflict tomorrow, unless you get to it first (it is fine to push to my branch).
Regarding #6 i'll have to look at it a bit, I had redone it to use TryFrom, but I personally think we're pretty close to showing that the panics are unreachable.  The main thing I think left is 755efd4aaf5bec1a63bbe9b28c0dc83dba05d4cd
only tests that we can't write out of range enum variants.  But in the case of a corrupted file we could potentially still read one, I need to look at the ptex reader code to see whether that could be a problem making the panic reachable.

Looking at your commits to update this, I definitely agree that the value null reference checks aren't needed (passing them should be UB), I had added them while debugging what turned out to an ABI mismatch between the rust and C++ code caused by a bad declaration on the rust side -- which was causing all the arguments to be passed in the wrong locations.
Once I figured that out it should have removed those since passing null references there is already undefined behavior.


Sharing multiple images trough data-url get same filename

The plugin generate the filename of shared files with this code. fileName = sanitizeFilename(subject) + "." + imgExtension;   When you share multiple files, all of them get the same filename, so overwrite each another.  In my case, multiple pages send to a printer show as multiple times the same image.  I made a crappy fix for this problem by adding some random salt, fileName = sanitizeFilename(subject) +UUID.randomUUID()+ "." + imgExtension;,  but I don't think its a good solution (will look ugly on a email or other types of shares)

Awesome!


Add basic web support

Can't be release because flutter_map (and it's dependencies do not support web yet).


Fix local type registration

The backing type map for the client converters should not be
static/shared. Fixes an issue where the same instance of the type map
was being shared between any instance of DataFactoryManagementClient.

Hi @bgold09, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

It looks like you're working at Microsoft (brgold). If you're full-time, we DON'T require a contribution license agreement.

If you are a vendor, or work for Microsoft Open Technologies, DO please sign the electronic contribution license agreement. It will take 2 minutes and there's no faxing! https://cla.azure.com.

TTYL, AZPRBOT;


Can you please update to the latest forge version (1.18.2)?

I love this mod, but can you please update to the latest forge version (1.18.2)?

Hey! I updated the mod to the latest forge version (40.1.84)
They should be available on modrinth and are under review on CurseForge.


listbox multiple selection throw exception

I have a simple list box, if I click on an item the line is selected, now I press shitft key for multiple selection (and keep pressing it after) and click below the list box (in the white area) the item is unselected (seleciton is empty), now if I click again on the listbox while mainting shift pressed an excepetion is thrown and a popup appears (nana::listbox invalid category index). It seems to be a bug, I have reproduced it with hotfix branches and develop on my pc under windows.
Here is the code I use:
``
form fm(API::make_center(800, 500));
listbox lsbox(fm, rectangle{ 10, 10, 800, 500 });
lsbox.append_header("column 0");
lsbox.append_header("column 1");
lsbox.at(0).append({ std::string("Hello0"), std::string("World0") });
lsbox.at(0).append({ std::string("Hello1"), std::string("World1") });
lsbox.at(0).append({ std::string("Hello2"), std::string("World2") });
lsbox.at(0).append({ std::string("Hello3"), std::string("World3") });

fm.show();
exec();`

Thanks a lot for your feedback.

Thanks a lot for the very fast fix. It works now no more exception.


Invalid Authentication - Error 2406

Hi, Following the announcement on the HomeAssistant Reddit I signed up for Tuya IOT and installed Tuya V2 version 1.3 using HACS on July 1st 2021. Once I signed up for Tuya IOT I signed up for the Free api, created my first project, linked my "TuyaSmart" app account, and granted the API permissions. I can see my Tuya devices have successfully linked in the Tuya IOT project page.  I have never had a Tuya IOT project before 1st July 21 so there is no way I was using the older authentication method.
Despite this I am getting an error 2406 in my logs. I have tried reinstalling the Custom Component, creating a new Tuya IOT project and resetting my Tuya password. None of these things have worked. I am using an Australian account and have specified the "Europe" availability region during the setup.
Logs:
2021-07-01 16:35:40 INFO (MainThread) [custom_components.tuya_v2.config_flow] TuyaConfigFlow.async_step_user start, is_import= None 2021-07-01 16:36:06 INFO (MainThread) [custom_components.tuya_v2.config_flow] TuyaConfigFlow.async_step_user start, is_import= {'password': 'PASSWORD', 'endpoint': 'https://openapi.tuyaeu.com', 'access_id': 'p4qXXXXXXXXXXdnt', 'access_secret': 'dffacdd97c0XXXXXXXXXX15b07c86', 'tuya_app_type': 'tuyaSmart', 'country_code': '61', 'username'<EMAIL_ADDRESS>2021-07-01 16:36:06 INFO (SyncWorker_4) [custom_components.tuya_v2.config_flow] TuyaConfigFlow._try_login start, user_input: {'password': 'PASSWORD', 'endpoint': 'https://openapi.tuyaeu.com', 'access_id': 'p4qXXXXXXXXXXdnt', 'access_secret': 'dffacdd97c0XXXXXXXXXX15b07c86', 'tuya_app_type': 'tuyaSmart', 'country_code': '61', 'username'<EMAIL_ADDRESS>'tuya_project_type': 0} 2021-07-01 16:36:08 INFO (SyncWorker_4) [custom_components.tuya_v2.config_flow] TuyaConfigFlow._try_login finish, response:, {'code': 2406, 'msg': 'skill id invalid', 'success': False, 't': 16251XXXXX19}

Wrong contry code use like PL , EN , GB check  Tuya code list

Wrong contry code use like PL , EN , GB check Tuya code list I also do that same and cant make account work:)

No. You are incorrect. All the configuration examples, screenshots, developer comments, and every piece of documentation I have read shows this as the IDD Telephone code of the country. Eg: 86 for China, 1 for USA, 61 for Australia.
For completeness I have tested “AU” and the 2406 issue remains.
Please do not comment on open issues unless you can substantiate your claims with evidence or at least have it working yourself with that config…

ok just try to help. Today I add an account I create 3 accounts and cant connect I try all time code digits and got errors, in-home assistant. I use code letter in my case PL and account connected to the home assistant.

Try to unlink project in IoT platform and link again, also reset password in app. That works for me.

Resetting the Tuya app password (not the developer password) seems to have fixed this issue for me. I did this from within the app. I had already unlinked and relinked the account from within the Tuya developer console, but I don't think that had an impact. I did not unlink and relink after I reset the Tuya app password. (Also of note is that I had both my Tuya app and developer passwords the same before doing this and now they are different, but I don't know if that has any impact.)

This was resolved with the v1.3.2 release


gamepad not working on proton/steam deck!

[ INFO ]: Loading Mods...
[ ERROR ]: ./gamepad.dll errored! (126)
[ INFO ]: ./haggle-sdk.dll loaded!
[ INFO ]: 1 mod loaded
[ INFO ]: Ready!

The mod loader loads but that's it!

Looks like I forgot to package the SDL2 dll! Thank you for the catch.
The gamepad mod uses this version of SDL2 https://github.com/libsdl-org/SDL/releases/download/release-2.0.22/SDL2-2.0.22-win32-x86.zip

Thank you! :)
Alright so now, it seems to load successfully, but the game never loads 🤔
[ INFO ]: Loading Mods...
[ INFO ]: ./gamepad.dll loaded!
[ INFO ]: ./haggle-sdk.dll loaded!
[ INFO ]: ./SDL2.dll loaded!
[ INFO ]: 3 mods loaded
[ INFO ]: Ready!

Does peggle nights drop logs anywhere?


[BugFix] Ignore non-partition refresh tables in update  meta (#28865) (#28924)

What type of PR is this:

[x] BugFix
[ ] Feature
[ ] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Checklist:

[x] I have added test cases for my bug fix or my new feature
[ ] This pr will affect users' behaviors
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto-backported to the target branch

[x] 3.1
[ ] 3.0
[ ] 2.5
[ ] 2.4

[FE PR Coverage Check]
:heart_eyes: pass : 3 / 3 (100.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/scheduler/PartitionBasedMvRefreshProcessor.java
3
3
100.00%
[]

@Mergifyio backport branch-3.1


object_detection

Description
add object detection using open cv
Fixes # #1332
Type of change

[x] Added a new machine learning frameworks, libraries or software.
[x] Documentation update

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings

@sanjay-kv

level 1 >?

i add whole project


Allow search from all pages

It'd be nice if search was available in the mast on all pages.

+1

You can now search articles from all pages as per PR #87. :tada:


ImportError: cannot import name 'kitti_dataset_pb2'

Why this module is  missing?
@melfm @kujason @fmigneault @asharakeh
Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 10:22:32) [MSC v.1900 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help.
D:\Software\Pycharm\PyCharm 2018.1.1\helpers\pydev_pydev_bundle\pydev_import_hook.py:19: FutureWarning: Conversion of the second argument of issubdtype from float to np.floating is deprecated. In future, it will be treated as np.float64 == np.dtype(float).type.
module = self._system_import(name, *args, **kwargs)
Traceback (most recent call last):
File "D:\Software\Pycharm\PyCharm 2018.1.1\helpers\pydev\pydev_run_in_console.py", line 52, in run_file
pydev_imports.execfile(file, globals, locals)  # execute the script
File "D:\Software\Pycharm\PyCharm 2018.1.1\helpers\pydev_pydev_imps_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "D:/Research/Code/avod-master/scripts/preprocessing/gen_mini_batches.py", line 6, in
from avod.builders.dataset_builder import DatasetBuilder
File "D:\Software\Pycharm\PyCharm 2018.1.1\helpers\pydev_pydev_bundle\pydev_import_hook.py", line 19, in do_import
module = self._system_import(name, *args, **kwargs)
File "D:\Research\Code\avod-master\avod\builders\dataset_builder.py", line 7, in
from avod.protos import kitti_dataset_pb2
ImportError: cannot import name 'kitti_dataset_pb2'

Did you run the script 'sh avod/protos/run_protoc.sh' to compile the protos files?


Bump version

I think we all did a good job and deserve a new release.

How close is this version from being released. The In-memory backend is already in the documentation...

@jezdez can we do something to make the release faster?
I once again reviewed all changes point-by-point.

Tested or safe changes
Safely remove obsolete code
- [x] Delete south migrations
Not Functional Changes (docs/examples/setup.cfg)

[x] Improve grammar of documentation index file
[x] Simplify documentation installation section
[x] Update example project for Django>2
[x] Put back wheel generation in travis

Changes I personally verified

[x] Fix IntegrityError after 2.5.0 release (Allow concurrent calls to DatabaseBackend.set() method)
[x] Fix wrong "is modified" in admin for multi line strings
[x] Added a sticky footer in django constance admin
[x] Add anchors in admin for constance settings
[x] Make constance app verbose name translatable
[x] Fix Attempts to change config values fail silently and appear to succeed when user does not have change permissions
[x] Make groups of fieldsets collapsable

Affects only tests

[x] Allow override_config for pytest
[x] Add memory backend

Changes that are doubtful or unverified

[ ] Switch md5 to sha256
(I just do not understand these changes and whether they can have any negative effect.)

Merged in 96e95fcfe61c3486fa6ad4dbec136d9f7b9b423f

Thanks guys! Appreciate your efforts :+1:


doc: Unconditionally enable sphinxcontrib.rsvgconverter

Sphinx's image conversion logic is smart enough that converters are only kicking in when actually needed. For example, HTML builder indicates it can handle SVG images just fine, so the rsvg converter is not solicited for HTML builds.
This commit proposes to simplify the doc build and configuration by unconditionally enabling sphinxcontrib.rsvgconverter.

Ok so this is failing as CI seems to try to be smart/fast by only installing a subset of the "official" dependencies listed here https://docs.zephyrproject.org/latest/contribute/documentation/generation.html#installing-the-documentation-processors
My thinking by introducing this change is that folks will have rsvgconverter anyway -- if they install the documented requirements -- so the change should be harmless. Putting in draft as I think about it some more

superseded by #73839


Future art for exposures

Describe the feature
What other properties should exposures get?

[x] tags
[x] meta

we do want some traditional meta fields (e.g. owner) to be required or top-level
still could be nice as a catch-all for structured key-value properties users would want to define, beyond what'd be available via tags or description

[ ] new type options:

"reverse pipeline", e.g. a census sync
users supplying their own string types

[ ] new maturity options

higher than high? "mission-critical"
...

Should exposures be ref-able?

exposures that depend on other exposures: one exposure for each Mode query / Looker view, one exposure for the dashboard that depends on those queries / views
models that depend on exposures: modeled input to data science --> data science as exposure --> modeled output

what exactly would ref('my_exposure') return?

Describe alternatives you've considered
We're likely to keep these bare-bones for a little while. I'm still curious to hear what community members want!
Who will this benefit?
Users of the exposures resource type, which is new in v0.18.1

Is there any reason that type shouldn't just be an arbitrary string? Are y'all planning on having explicit functionality for the existing type values in the future?

Also - would be nice to have a field for URLs linking to the exposure itself.

Is there any reason that type shouldn't just be an arbitrary string? Are y'all planning on having explicit functionality for the existing type values in the future?

Yes, we may be. I'd rather keep it structured for now and open it up later on if there's a lot of demand and variance, and few reasons to keep it limited.

Also - would be nice to have a field for URLs linking to the exposure itself.

There totally is, and I missed it when documenting! This is on me, I'll update that now.

It would be nice if there was a commands field (similar to tox) where, if applicable, you could enter a command that would check the 'status' (whatever that may be) of the exposure after running the dbt models that it depends on. E.g. pytest, curl example.com/api/this-depends-on-dbt, etc.
I suppose this can already be done by something like tox anyway but I think it could be worth adding to dbt if other users are keen

It would be nice if there was a commands field (similar to tox) where, if applicable, you could enter a command that would check the 'status' (whatever that may be) of the exposure after running the dbt models that it depends on. E.g. pytest, curl example.com/api/this-depends-on-dbt, etc.
I suppose this can already be done by something like tox anyway but I think it could be worth adding to dbt if other users are keen

models that depend on exposures: modeled input to data science --> data science as exposure --> modeled output

what exactly would ref('my_exposure') return?

@jtcohen6 An idea: perhaps ref(my_exposure) could expose a source that has a ref()?
Ideally it'd look something like: source1 -> model1 -> source2/exposure -> model2 -> final_exposure
And in sources.yml:
sources:
  - name: my_source_name
    depends_on:
      - ref('my_model_treated_as_a_task')
    tables:
     - ...

Thoughts?
An example of something small I'm grappling with:

In this example well_here (exposure) generates the source lake.here__routes; it looks like this DAG includes parallel pipelines but it's actually one long linear flow. In deployment this DAG is chopped into pieces and the well_here app is wedged in. It takes away from the value.
(That would make this specific DAG circular, but that's my problem ;) )

models that depend on exposures: modeled input to data science --> data science as exposure --> modeled output

what exactly would ref('my_exposure') return?

@jtcohen6 An idea: perhaps ref(my_exposure) could expose a source that has a ref()?
Ideally it'd look something like: source1 -> model1 -> source2/exposure -> model2 -> final_exposure
And in sources.yml:
sources:
  - name: my_source_name
    depends_on:
      - ref('my_model_treated_as_a_task')
    tables:
     - ...

Thoughts?
An example of something small I'm grappling with:

In this example well_here (exposure) generates the source lake.here__routes; it looks like this DAG includes parallel pipelines but it's actually one long linear flow. In deployment this DAG is chopped into pieces and the well_here app is wedged in. It takes away from the value.
(That would make this specific DAG circular, but that's my problem ;) )

Couple questions:

Could exposures themselves have registered exposures? I'd like to model that an external cube (basically a caching layer) which consumes a set of models - but also that there are a set of reports which might consume that caching layer.
Related to the above, can we have an exposure "type" for cache, cube, or interim dataset? Of the current options, "dashboard", "analysis", and "application" and the closest, but none exactly seem to fit the description of a cube-like caching layer - which itself is a source for dashboards and analyses.

Couple questions:

Could exposures themselves have registered exposures? I'd like to model that an external cube (basically a caching layer) which consumes a set of models - but also that there are a set of reports which might consume that caching layer.
Related to the above, can we have an exposure "type" for cache, cube, or interim dataset? Of the current options, "dashboard", "analysis", and "application" and the closest, but none exactly seem to fit the description of a cube-like caching layer - which itself is a source for dashboards and analyses.

@arniwesth - re:

We autogenerate views in Looker based on dbt models, and we would like to use extensions to indicate this. We could use type:application, but ideally type should be extended (eg bi_layer, look_ml etc) or as otherwise suggested type should be user-defined.

I feel the same for the "cube" or "xmla dataset" layer of the Power BI stack. I like the idea of keeping type as enumerated (perhaps with an other option, but that's another topic) and I'm curious if there's a single term which could apply to both Looker BI and the Power BI stacks.
I like your idea of bi_layer and wonder if something like semantic model, bi model, cube, dataset, or something along these lines would fit to the Looker model and Power BI and other tools. (I think in Tableau the analogous concept of "cached-middle-layer-with-applied-biz-logic" is "Tableau Extract" "Tableau Shared Data Source".

@arniwesth - re:

We autogenerate views in Looker based on dbt models, and we would like to use extensions to indicate this. We could use type:application, but ideally type should be extended (eg bi_layer, look_ml etc) or as otherwise suggested type should be user-defined.

I feel the same for the "cube" or "xmla dataset" layer of the Power BI stack. I like the idea of keeping type as enumerated (perhaps with an other option, but that's another topic) and I'm curious if there's a single term which could apply to both Looker BI and the Power BI stacks.
I like your idea of bi_layer and wonder if something like semantic model, bi model, cube, dataset, or something along these lines would fit to the Looker model and Power BI and other tools. (I think in Tableau the analogous concept of "cached-middle-layer-with-applied-biz-logic" is "Tableau Extract" "Tableau Shared Data Source".

@jpau - Re your inquiry:

But take this current dbt DAG, and let exposure1 generate source2:
source1 → model1 → exposure1
source2 → model2 → final_exposure
In this example, the DAG is unhelpful because it doesn't tell us what we need to know (lineage, and execution order).

I'm not sure that this pattern can deterministically assure us that it is actually a DAG, or more specifically that the graph is acyclical. It looks like this approach would either have to allow circular loops (no longer a DAG) or else the initial run is not deterministic with synchronizing with the exposure.
Is it necessary for the consumption of the output from the exposure to be in the same logical DBT project? Or could you have a DBT project1 which generates input needed by the exposure and a DBT project2 which can safely assume your exposure? Breaking it into two projects seems like the best way to ensure the project (1) can benefit from static analysis and (2) make sure circular loops are not introduced (inadvertently or intentionally).
Thoughts?

@jpau - Re your inquiry:

But take this current dbt DAG, and let exposure1 generate source2:
source1 → model1 → exposure1
source2 → model2 → final_exposure
In this example, the DAG is unhelpful because it doesn't tell us what we need to know (lineage, and execution order).

I'm not sure that this pattern can deterministically assure us that it is actually a DAG, or more specifically that the graph is acyclical. It looks like this approach would either have to allow circular loops (no longer a DAG) or else the initial run is not deterministic with synchronizing with the exposure.
Is it necessary for the consumption of the output from the exposure to be in the same logical DBT project? Or could you have a DBT project1 which generates input needed by the exposure and a DBT project2 which can safely assume your exposure? Breaking it into two projects seems like the best way to ensure the project (1) can benefit from static analysis and (2) make sure circular loops are not introduced (inadvertently or intentionally).
Thoughts?

Thanks @aaronsteers

I'm not sure that this pattern can deterministically assure us that it is actually a DAG, or more specifically that the graph is acyclical.

I'm curious about this. This isn't obvious to me. Do you mind providing an example of where this style of dependency differs to others, in such a way that it may create cycles?

Is it necessary for the consumption of the output from the exposure to be in the same logical DBT project? Or could you have a DBT project1 which generates input needed by the exposure and a DBT project2 which can safely assume your exposure? Breaking it into two projects seems like the best way to ensure the project can (a) benefit from static analysis and (b) make sure circular loops are not introduced (inadvertently or intentionally).

In the given example, absolutely. But I don't think it's uncommon to have many exposure-style dependcies spread throughout a modest DAG, such as

ML transforms. For marketing alone one might score each customer on churn propensity, attribution, segmentation, price sensitivity, etc.
External data calls. You may clean, deduplicate, and transform raw data before passing that through to external APIs to get further data

Thanks @aaronsteers

I'm not sure that this pattern can deterministically assure us that it is actually a DAG, or more specifically that the graph is acyclical.

I'm curious about this. This isn't obvious to me. Do you mind providing an example of where this style of dependency differs to others, in such a way that it may create cycles?

Is it necessary for the consumption of the output from the exposure to be in the same logical DBT project? Or could you have a DBT project1 which generates input needed by the exposure and a DBT project2 which can safely assume your exposure? Breaking it into two projects seems like the best way to ensure the project can (a) benefit from static analysis and (b) make sure circular loops are not introduced (inadvertently or intentionally).

In the given example, absolutely. But I don't think it's uncommon to have many exposure-style dependcies spread throughout a modest DAG, such as

ML transforms. For marketing alone one might score each customer on churn propensity, attribution, segmentation, price sensitivity, etc.
External data calls. You may clean, deduplicate, and transform raw data before passing that through to external APIs to get further data

I'm not sure that this pattern can deterministically assure us that it is actually a DAG, or more specifically that the graph is acyclical.

I'm curious about this. This isn't obvious to me. Do you mind providing an example of where this style of dependency differs to others, in such a way that it creates a cycle?

Sorry - I realize I wasn't very clear. So the two scenarios I can think of where an exposure feeds back into project models of the same project.
Taking the example of an ml-type exposure.

Scenario one: "Necessary pause" - the output of the ml model is the input to a source or a model which cannot be
Scenario two: "Updated source" - the output of the ml model is a required input for one or more models which in turn (directly or indirectly) feeds into models which are depended by in the exposure.

This example is clearly a circular dependency, since subsequent executions of the exposure will (at least have the potential to) alter the input which feeds back into the model.

As of today, Scenario 2 would not be supported within DBT, since circular dependencies are not supported in a DAGs.

You could technically still implement this in DBT today (meaning, the exposures and source could be the same thing without DBT knowing about it) but you would have a chicken-and-egg problem on your first time executing in a new environment.

In the scenario 1 option (which is to say the project has to pause and wait for exposure to complete) dbt is not able to invoke or document the end-to-end flow until and unless the exposure has been executed. Anything downstream from the exposure would have to pause and wait for the exposure to complete externally - which represents an orchestration and scheduling challenge.

By splitting upstream and downstream into separate projects, we remove external state tracking as a challenge that DBT tracks. Essentially project1 is fully self-sufficient which project2 takes for a given that the project and the ml exposure have both completed prior to its execution.

Another option which resolves the issues with the "pausing and polling" needed by scenario 1 would be to pair the exposure feature with a predefined dbt operation feature. In that case, dbt would be able to directly call and execute the build of the exposure (in our example the ml model) and could therefor still execute an end-to-end pipeline without having to stop and block on an externally defined and externally orchestrated process.
@jpau - What do you think about this?

I'm not sure that this pattern can deterministically assure us that it is actually a DAG, or more specifically that the graph is acyclical.

I'm curious about this. This isn't obvious to me. Do you mind providing an example of where this style of dependency differs to others, in such a way that it creates a cycle?

Sorry - I realize I wasn't very clear. So the two scenarios I can think of where an exposure feeds back into project models of the same project.
Taking the example of an ml-type exposure.

Scenario one: "Necessary pause" - the output of the ml model is the input to a source or a model which cannot be
Scenario two: "Updated source" - the output of the ml model is a required input for one or more models which in turn (directly or indirectly) feeds into models which are depended by in the exposure.

This example is clearly a circular dependency, since subsequent executions of the exposure will (at least have the potential to) alter the input which feeds back into the model.

As of today, Scenario 2 would not be supported within DBT, since circular dependencies are not supported in a DAGs.

You could technically still implement this in DBT today (meaning, the exposures and source could be the same thing without DBT knowing about it) but you would have a chicken-and-egg problem on your first time executing in a new environment.

In the scenario 1 option (which is to say the project has to pause and wait for exposure to complete) dbt is not able to invoke or document the end-to-end flow until and unless the exposure has been executed. Anything downstream from the exposure would have to pause and wait for the exposure to complete externally - which represents an orchestration and scheduling challenge.

By splitting upstream and downstream into separate projects, we remove external state tracking as a challenge that DBT tracks. Essentially project1 is fully self-sufficient which project2 takes for a given that the project and the ml exposure have both completed prior to its execution.

Another option which resolves the issues with the "pausing and polling" needed by scenario 1 would be to pair the exposure feature with a predefined dbt operation feature. In that case, dbt would be able to directly call and execute the build of the exposure (in our example the ml model) and could therefor still execute an end-to-end pipeline without having to stop and block on an externally defined and externally orchestrated process.
@jpau - What do you think about this?

@aaronsteers I agree with your separation into the two scenarios, and the fact that we'd be more interested in building out supportive tooling for the first scenario. I just want to bring into conversation another recent issue (https://github.com/fishtown-analytics/dbt/issues/2894) on the subject of "3rd-party operations" about which dbt could or should know. A potential workaround for the time being is to have a placeholder model that stands in for the external process, allowing the dbt DAG to reflect your actual one. Separating out the workflows and orchestrating through a third-party tool would be the most robust, but if you have access to things like Snowflake external functions and system$wait, it wouldn't be impossible for the model itself to trigger and wait for the ml model's completion.

@aaronsteers I agree with your separation into the two scenarios, and the fact that we'd be more interested in building out supportive tooling for the first scenario. I just want to bring into conversation another recent issue (https://github.com/fishtown-analytics/dbt/issues/2894) on the subject of "3rd-party operations" about which dbt could or should know. A potential workaround for the time being is to have a placeholder model that stands in for the external process, allowing the dbt DAG to reflect your actual one. Separating out the workflows and orchestrating through a third-party tool would be the most robust, but if you have access to things like Snowflake external functions and system$wait, it wouldn't be impossible for the model itself to trigger and wait for the ml model's completion.

At the moment exposures are purely a documentation feature.
In most cases they refer to another system (like Tableau) that might need to get a notification to finalize/proceed with the pipeline (in case of Tableau, trigger the data extraction for a data source or trigger a task).
This might be in a very generic way (as the use case to check the status, described above). Or more specific, like do a REST call (with separate attribute fields for url, parameter, body, header, authentication) - so basically a webhook...

At the moment exposures are purely a documentation feature.
In most cases they refer to another system (like Tableau) that might need to get a notification to finalize/proceed with the pipeline (in case of Tableau, trigger the data extraction for a data source or trigger a task).
This might be in a very generic way (as the use case to check the status, described above). Or more specific, like do a REST call (with separate attribute fields for url, parameter, body, header, authentication) - so basically a webhook...

We autogenerate views in Looker based on dbt models, and we would like to use extensions to indicate this. We could use type:application, but ideally type should be extended (eg bi_layer, look_ml etc) or as otherwise suggested type should be user-defined.

Hey @arniwesth ! I'm thinking about doing the same (hence why I was crawling exposure-related threads). Would you be open to sharing your experience with this approach and perhaps collaborating on a dbt package together?

Hey @tnightengale. Unfortunately, I did not formulate this very well. What I actually meant, was that we just user Lookers "Create View From Table" to create models from dbt generated views/tables. It would be awesome if it could actually be automized, but it's not something we have looked into. Sorry for the confusion.

I really need tags and meta in exposures. @jtcohen6 What's the status, can I start working on it?

I just wrote this in Slack:

Can you check with whichever stakeholder depends on that report?

And then I realised that there was no way to work out which stakeholder depends on that report. Might be a useful counterpart to the existing owner property

I really need tags and meta in exposures. @jtcohen6 What's the status, can I start working on it?

@tomsej If this is something you're interested in contributing, I'm all for it! The addition of meta and tags feels pretty uncontroversial.

Would love to see a datasource or dataset options for type. We use Tableau and this would allow us to link our dbt models with Data Sources.

@juangesino - Thanks for your thoughts here - great to have a Tableau perspective. I like both of those (datasource and dataset) as well! Seems they are versatile and better fit the Tableau and Power BI use cases when there's an intermediate caching/cube layer between the database and the report.

from a slack conversation: @jtcohen6 came up with an idea to enable tracking of removed columns or changing data types in models that feed into exposures:
Could we leverage the catalog.json artifact for this? It contains the set of columns in every dbt (non-ephemeral) model. If dbt could compare the catalog from a prod run with the catalog from a CI run—assuming you had a docs generate step in both—it could check all models/sources that are 1+exposure:*, and raise a warning if any columns have been removed, or even if their data type has changed...

Hello ! It could be nice to have an 'exposure report' who would display for all exposure the status (if the source db are passing), the freshness and some tests.
Thanks :)

@juangesino I believe that  #3404 can also help you define the Tableau relevant attributes under meta property.

I don't like that the owner email is required. In my case, most of our consumers are internal to our team, and I only want to document the owner when it is external.
I'd like some granularity in the type/name. For an application, I might want (structured) the name of the application and the name of the use within the application. I have an exposure where I unstructured these metadata into a name ingester__sponsors meaning that the application name is "ingester" and within the Ingester application, the area is "sponsors". I would like to be able to select all of the Ingester exposures, but maybe that's best done with tags or meta.

Is there any update on when more options for 'type' will be available? I'm particular looking for type: pipeline to become available

@jtcohen6

users supplying their own string types

What was the idea behind having a fixed enumeration of possible strings here? AFAIK there is nothing in dbt that relies on these string values. But other tools using dbt exposure data would benefit from being able to specify their own types of exposures.
Would it be acceptable to open a PR and make this a plain string type without an enum

Thanks for the great thoughts in this thread, everyone! It's been ten months since launch—the first experimental stake in the ground, the first metadata-forward dbt feature—and together we're making exposures happen.
In one of my comments above, I was making oblique reference to the very early stages of exposure status tiles, a dbt Cloud feature that my colleagues on the Metadata team just pushed into GA.

@llarbodiere Per your comment above, you may want to check that feature out. It sounds exactly like the status check you were asking for in May.
@fuchsst You might be interested, too, in the underlying API, since you were asking about an API/webhook that could check exposure status and thereby trigger downstream processes (e.g. in Tableau).

Some threads from above that I want to briefly pull on:
Check for changes
Using catalog.json to detect columns that have changed, since some previous catalog.json / docs generate, and present those findings in the context of "exposed" resources (1+exposure:*): I still really like this idea! This could be another --state feature in dbt, though at some point, we're not actually executing resources—we're really just diffing two JSON files / metadata inputs. This feels more like a "post-dbt" process. The dbt Cloud metadata API could be a really useful tool here, when it includes column-level info...
Selection
Selecting exposures on the basis of type/tags/meta (@kgeis): I've been thinking about this too! As of v0.20, and the addition of tags support in exposures, this is possible with the tag selection method. As a follow-on to some of the changes coming in #3616, which reconcile "configs" and "properties" in dbt, I think we could reclassify some exposure properties as configs, and thereby unlock things like:
dbt run -m +config.type:application  # i.e. exposures with type:application
dbt test -m +config.maturity:high

Relax required/limited properties
type (lots of folks above, most recently @owlas): I do think relaxing this is the right move. We weren't sure exactly how we wanted to be using this: I had imagined the possibility that our team would want to build different integration points for notebooks vs. apps vs. ad hoc analyses. By defining a strict set of strongly-suggested options, it also gave me the opportunity to make the case that these are for more than just BI dashboards ;)
Today, we mainly use this value for grouping/categorizing exposures, in places like the dbt-docs site. As I mentioned above, I could also see it powering a selection method. So there is some desire to keep these standardized and validated—tags and meta are now your go-to place for totally free-form input—but let's make it so dbt-core developers aren't blockers to the really cool things you all want to do.
A couple of ideas:

Users get to define their own set of valid exposure types somewhere (in dbt_project.yml?). Then, each defined exposure has to conform to one of those types. The idea here is to prevent someone from accidentally merging code with an exposure type defined as dshboard, or from putting classifier when we'd previously agreed on the more-generic ml.
It's a free-form input, we just do smarter things in the places where we bucket/categorize exposures. If an exposure is in a type category by itself, we should bucket it under Custom or Other instead.

Curious to hear your thoughts here!
owner.email (@kgeis): This is one I feel more strongly about keeping! It feels like a natural next step, after having the ability to reliably report on exposure status, is a system to notify the right person when upstream sources/models/tests of that exposure have failed—perhaps even modulating the severity/frequency of that notification based on its maturity. If the owner email is<EMAIL_ADDRESS>that's a pretty good indicator that the exposure is not actively maintained, which is also useful information for a viewer :)
maturity: Folks don't seem to mind only having high/medium/low. As numbers go, three is a pretty good one.

@jtcohen6 Re-opening up this (well, still open) issue :-)
What is your point/suggestion on the external actions/hooks being defined for exposures and triggered by dbt? I think this was already mentioned couple of times in this thread, e.g. in the context of testing reports/dashboards. Specifically in GoodData we would like to surface customers' reports as dbt exposures and perform semantic tests when underlying models change. Is there any progress in thinking about that?
Related to that (and also mentioned above) is the dependencies between exposures. The typical BI tool use cases would be quite simple, e.g. metrics -> reports -> dashboards. Is this something you still consider as desirable?

@jtcohen6 Looking forward to see the feature of defining exposure types.  This will be a cool feature.

Has there been any update in making exposures ref-able or is there a plan in a future update? This is a feature I think would be very helpful in my team so we can visualize how all of our reports are made.

@jpau - Re your inquiry:

Should exposures be ref-able?

exposures that depend on other exposures: one exposure for each Mode query / Looker view, one exposure for the dashboard that depends on those queries / views
models that depend on exposures: modeled input to data science --> data science as exposure --> modeled output
what exactly would ref('my_exposure') return?

Per my comments above, I'd personally prefer DBT to prioritize the static analysis and definitely-a-DAG properties which are critical to system stability. That said, I would love for the project to be able to reference another project's exposures, and perhaps that could even be performed as adding a reference pointer on a source definition like created_by: ref('other-project/exposure1'). I also would love for exposures to be able to reference other exposures - as in the example of a cube or bi_model exposure also having one or more of its own dashboard exposures which shows how end-users actually consume the data.
Thoughts?

+1 !!!!
That's exactly what I am looking for right now. Even though I am coming from one, service-specific, tool such as Looker, I think there is also a need for this elsewhere and, if designed properly, can be universal.
Looker specific usage: there is a functionality where you can extend explores with other explores.
Ex:
explore: orders_and_customers {
    description: "This explore provides basic insights into customer base etc"
    view_name: orders
    join: customers {
        relationship: one_to_one --one order per customer
        type: left_outer
        sql_on: ${orders.customer_id} = ${customers.customer_id}
    }
}
explore: tracking_tools {
    extends: [orders_and_customers]
    description: "This explore allows to deep dive into how customers are using the tracking services for the orders"
    join: tracking_info {
        relationship: one_to_many
        type: left_outer
        sql_on: ${orders.order_id} = ${tracking_info.order_id}
   }
}

So, the example is basic but hopefully explains the usage. Say, I don't want the tracking links info being present to all the users and only to, say, PMs so I have 2 explores where one extends/enhances already existing one(s) and the extension can go indefinitely same as dbt lineage. In simple terms, orders_and_customers shows only 2 views, and tracking_tools shows all 3 views.
Since we have the ability to bring down the Documentation to dbt layer, it would be extremely helpful if we could reference exposures. Because, in this example, one exposure corresponds to one explore:
    - name: Orders and Customers
      type: dashboard
      description: >
            This explore provides basic insights into customer base etc
      depends_on:
        - ref('orders')
        - ref('customers')

    - name: tracking_tools
      type: dashboard
      description: >
            This explore allows to deep dive into how customers are using the tracking services for the orders
      depends_on:
        - ref('Orders and Customers')
        - ref('tracking_info')

I hope it's clear enough and, PLEEEEEASE, give us this functionality🥸
Let us know if you move this fuctionality up in priority and the approximate deadline 🙏

Additional use case at Ludia/JamCity:
We have 2 data stacks with inter-depencies. Some of our models are used downstream by tables and dashboards/reports.
We would like to define those downstream tables as exposure or external tables to reflect it in our DAG. But also have the possibility to put exposures (tableau dashboards) depending on other exposures (the downstream tables) so we can rebuild the DAG for the most important reports.
Thanks a lot,
Lucas

I was looking into exposing some analysis object (https://docs.getdbt.com/docs/building-a-dbt-project/analyses) as an exposure. It is slightly misleading that you cannot (or maybe I couldn't) considering the fact that exposures do have a type that is called analysis.
The use case is basically we are trying to expose queries that drill across transactional fact tables to pull in together different data and aggregate/whatever. This qualifies the notion of an analysis, but we want it to be better managed, described and potentially rendered into dbt docs (we like the freedom of analysis objects, but crave the metadata of exposure objects).

I'd still be excited to make some of the changes mentioned here! In particular:

Balancing customization + governance for exposure types
Making exposures ref-able, and more neatly paired with other resource types (an "exposed" analysis, an "exposed" model)
Some interesting potential overlap with #5073...?

I'm going to convert this to a GitHub discussion, since that's what it's rightly been all along :)


dragend should not result in a suggestion being selected

STR:
L.esri.Geocoding.geosearch({
  providers: [
    L.esri.Geocoding.arcgisOnlineProvider({
      maxResults: 15
    })
  ]
}).addTo(map);

on a mobile device:

enter some text that generates more suggestions than will fit on the screen.
attempt to hold your finger down and swipe to the bottom of the list
as soon as you release your finger, the plugin assumes that you are making a selection.

related #200

resolved via #215 🎉


More control over framerates to different viewports

Okay, this is a fun one cause I have no idea what would be the best way to start adding this into Godot as a feature. But it is something we rather spectacularly ran into today.
Godot for obvious reasons v-syncs to the monitor the game is running on. No need to render more frames then the display can handle and no nasty flickering.
Problem for me is, I'm rendering to textures and then outputting to a Vive HMD.
The vsync is limiting the framerate to 60fps, the vive requires me to up this to 90fps... Easy, disable the vsync and we start hitting way more then 90fps (just a test scene with boxes).
However at the end we do want the Vive to run at something sensible like either 90fps or 120fps, but, especially if we render a 3rd camera point for what we show on screen, we'd like to lower that to something like 30fps. Nobody is gaming on the screen, the output is purely there for spectators and maybe screen capturing the output. Especially with an extra render pass, but also even if we duplicate the left eye texture we rendered for the vive, we'd like to only do this every so many frames.

First of all thank you for your report and sorry for the delay.
We released Godot 3.0 in January 2018 after 18 months of work, fixing many old issues either directly, or by obsoleting/replacing the features they were referring to.
We still have hundreds of issues whose relevance/reproducibility needs to be checked against the current stable version, and that's where you can help us.
Could you check if the issue that you described initially is still relevant/reproducible in Godot 3.0 or any newer version, and comment about it here?
For bug reports, please also make sure that the issue contains detailed steps to reproduce the bug and, if possible, a zipped project that can be used to reproduce it right away. This greatly speeds up debugging and bugfixing tasks for our contributors.
Our Bugsquad will review this issue more in-depth in 15 days, and potentially close it if its relevance could not be confirmed.
Thanks in advance.
Note: This message is being copy-pasted to many "stale" issues (90+ days without activity). It might happen that it is not meaningful for this specific issue or appears oblivious of the issue's context, if so please comment to notify the Bugsquad about it.

Note that in this video:
https://www.youtube.com/watch?v=07euJhZbeSc
I present a work around for doing this based on something someone suggested on IRC a while ago.
Not sure if this issue is still relevant.


Website does not want to add video MP4

If he wants to add a movie, pops up the error "Sorry, only MP4 and MKV files are allowed.", Although the film is in MP4 format.
What to do?

Didn't think anyone would actually use this. Anyway, I'll take a look. :smile: Cheers for bringing this issue up.

Didn't think anyone would actually use this. Anyway, I'll take a look. :smile: Cheers for bringing this issue up.

ok

@PXgamer add sql file, that fix the problem

@vistafan12 I was actually thinking of redoing this project in a better way.

ohh, ok.
btw. can you help with NeoVid (video sharing website project, created by og VBF creators)?
If so, then I invite you to Discord server: https://discord.gg/Ehb2CsM

@vistafan12 sure, I've joined the group.


Use the hub kubeconfig to patch the placement

Failure in SVT test due to the kubeconfig being used was managed cluster
kubeconfig instead of hub.
Refs:

https://github.com/stolostron/backlog/issues/24410

Signed-off-by: Gus Parvin<EMAIL_ADDRESS>

/retest
Didn't get a cluster

/retest


Why java over cordova or react native

The app is already written (without react native or angular native script) as web app and I don't want to rewrite the whole thing :)

iirc, Cordova supports vanilla html/css/js.

There are some things which can't be done (easily) with cordova:

Providing a Widget
Serving the webapp instead of a local bundle to make service workers etc possible
google auth (possible, but complicated)

Furthermore, the app is much much smaller without the whole cordova lib. Also, Cordova is a big mess in my experience (and I've developed some applications with it) :)


Fix capitalization in "Introduction Flatpak Builds" blog post

Just something I've noticed while reading the blog post.

Deploy preview for openbuildservice ready!
Built with commit d93d0216b825641d68adfc8fb9abe948ce36f93e
https://deploy-preview-286--openbuildservice.netlify.app


added ConfigurationFactory setter

Python binding is now fully active for configurationShooter selection and use

Commit applied on top of devel branch.


Add shitty stalemate mashup by julio torria

Song Name
shitty stalemate mashup
Artist Name
kayoszx
Source
Youtube
Youtube Link
m90qIs0J2uA
Direct File Link
No response
Song ID
482872
Start Offset [ms]
0
Extra
Created from Auto Nong.
Created for level: 81527152

reject
its bad...


Support ScrollView which it's initial contentOffsetY is not 0

Some ScrollView's contentOffset.y inital value is not 0.
We need to support this kind of scrollView

Version 0.1.1 support this feature
PR #11


Time is incorrect

The time is wrong, it's an hour behind - perhaps need to account for GMT - funnily enough it's the same issue we had with the concept!!!

Times are saved on the database in UTC. Need to be displayed to the user in their local timezone.

Released in v0.10.0


Getting playground working on 0.5

Updates to get 0.5 working
Fixing deprecation warnings
Dropping Lint.jl and DeclarativePackages.jl
Changed default Pkg.build behaviour to use a script rather than trying to build an binary executable.

Current coverage is 86.40% (diff: 87.67%)

Merging #48 into master will increase coverage by 2.82%

@@             master        #48   diff @@
==========================================
  Files             9          9
  Lines           335        309    -26
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
- Hits            280        267    -13
+ Misses           55         42    -13
  Partials          0          0

Powered by Codecov. Last update e31498d...bb4bbb1

Coverage increased (+1.8%) to 69.75% when pulling bb4bbb15102e99b8a535f994f82db824c590fd2b on dev into e31498d384841144346062517f24acba0d25f737 on master.


You can only scan for repo's or rm them, you can't simply add them.

There are options in config to scan for paths or disable scan but why not simple create a add button so you can pick and choose your self what repo to add instead of using scan and pray the folder you are scanning for repo's isn't too big?

@gertcuykens, thank you very much for your feedback. As you have noted, VS Code automatically detects git repositories, something that can be controlled with the various settings - git.autoRepositoryDetection, git.repositoryScanMaxDepth, git.repositoryScanIgnoredFolders, git.ignoredRepositories, git.scanRepositories. While I do not believe this is an area that we would make changes, I would like to better understand the scenarios in which the automatic detection is not working.

If you want to have a full overview of your tree structure of your docker container / ssh server for example to start with. So you can navigate to /etc or /var or whatever in vscode. By default vscode try to scan everything. The work around is like you pointed out messing with your vscode config files. But then they get synced so as soon as you switch to a other container you can start over messing with the config files.

By default vscode try to scan everything.

I would like to better understand this statement. By default VS Code scans 1 level deep in the workspace/folder that you have opened, as well as uses the opened files to see if any of the opened files are in a git repository that should be opened. Are you seeing something different?
One option that you have is to actually set the settings as "workspace settings" that are stored on the file system of the docker container, SSH server so they would not be synced, and they would always be specific to the environment that you are opening.

By default VS Code scans 1 level deep in the workspace/folder that you have opened, as well as uses the opened files to see if any of the opened files are in a git repository that should be opened. Are you seeing something different?

Correct but it get pretty annoying quickly if the ssh servers contains many git repo's and in addition you hit the inode scan limit warning popup multiple times. And when you remove the repo's your not interested in the first screenshot I posted they get added again automatically when navigating around, or switch server.

One option that you have is to actually set the settings as "workspace settings" that are stored on the file system of the docker container, SSH server so they would not be synced, and they would always be specific to the environment that you are opening.

Ok that I need to try first

Hey @lszomoru, this issue might need further attention.
@gertcuykens, you can help us out by closing this issue if the problem no longer exists, or adding more information.

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.
Happy Coding!


error 400 updating billing budgets API

The following Pulumi code is returning a 400 error when trying to update a budget through GCP's billingbudgets API.
from pulumi import export
from pulumi_gcp import billing, organizations

from . import opts, BILLING_ACCOUNT

budget = billing.Budget('some-project',
                        display_name='some-project',
                        billing_account=BILLING_ACCOUNT,
                        amount={
                            'specifiedAmount': {
                                'currencyCode': 'USD',
                                'units': '12000',
                            },
                        },
                        budget_filter={
                            'projects': ['projects/some-project'],
                            'creditTypesTreatment': 'INCLUDE_ALL_CREDITS',
                        },
                        threshold_rules=[{
                            'thresholdPercent': 1.0,
                        }], __opts__=opts)

Returns the following through the pulumi up command.
googleapi: Error 400: Request contains an invalid argument.

Debugging
Running this through a proxy I can see the error returned from the PATCH request to the following endpoint...
https://billingbudgets.googleapis.com/v1/billingAccounts/A1B14B-4D91E1-D2F331/budgets/325d8230-c6d4-47ae-98c1-5cd9e79e46e8?alt=json

The request body contains...
{
  "amount": {
    "specifiedAmount": {
      "currencyCode": "USD",
      "units": "12000"
    }
  },
  "budgetFilter": {
    "creditTypesTreatment": "INCLUDE_ALL_CREDITS",
    "projects": [
      "projects/some-project"
    ]
  },
  "displayName": "some-project",
  "thresholdRules": [
    {
      "spendBasis": "CURRENT_SPEND",
      "thresholdPercent": 1
    }
  ]
}

With Google sending a response with...
{
  "error": {
    "code": 400,
    "message": "Request contains an invalid argument.",
    "status": "INVALID_ARGUMENT"
  }
}

Dependency versions
Package    Version
---------- ---------
Arpeggio   1.10.1
attrs      20.3.0
certifi    2020.12.5
chardet    4.0.0
dill       0.3.3
grpcio     1.34.0
idna       2.10
parver     0.3.1
pip        20.3.3
protobuf   3.14.0
pulumi     2.17.0
pulumi-aws 3.23.0
pulumi-gcp 4.8.0
requests   2.25.1
semver     2.13.0
setuptools 47.1.0
six        1.15.0
urllib3    1.26.2

Pulumi CLI is v2.17.0.
Notes
I have a project set up that is linked to a valid billing account. A service account was created within this project and has Owner role set on the project, as well as Monitoring Admin role. This service account is assigned to the billing account as a Billing Account Administrator role. The credentials for this service account are used by the Pulumi GCP client.

I am able to isolate this using curl and it appears including the budgetFilter parameter results in the PATCH failed response. So it looks like it is on GCP's side of things but I'm still unsure what is wrong with budgetFilter param...
Here is the curl command that works (removing budgetFilter).
$ curl -vX PATCH \
     -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d @patch-body.json \
     "https://billingbudgets.googleapis.com/v1/billingAccounts/A1B14B-4D91E1-D2F331/budgets/325d8230-c6d4-47ae-98c1-5cd9e79e46e8?alt=json"

patch-data.json
{
  "displayName": "some-project",
  "amount": {
    "specifiedAmount": {
      "currencyCode": "USD",
      "units": "12000"
    }
  },
  "thresholdRules": [
    {
      "spendBasis": "CURRENT_SPEND",
      "thresholdPercent": 1
    }
  ],
  "notificationsRule": {},
}

Results in the proper budget object being returned with a 200 response.

I am able to isolate this using curl and it appears including the budgetFilter parameter results in the PATCH failed response. So it looks like it is on GCP's side of things but I'm still unsure what is wrong with budgetFilter param...
Here is the curl command that works (removing budgetFilter).
$ curl -vX PATCH \
     -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d @patch-body.json \
     "https://billingbudgets.googleapis.com/v1/billingAccounts/A1B14B-4D91E1-D2F331/budgets/325d8230-c6d4-47ae-98c1-5cd9e79e46e8?alt=json"

patch-data.json
{
  "displayName": "some-project",
  "amount": {
    "specifiedAmount": {
      "currencyCode": "USD",
      "units": "12000"
    }
  },
  "thresholdRules": [
    {
      "spendBasis": "CURRENT_SPEND",
      "thresholdPercent": 1
    }
  ],
  "notificationsRule": {},
}

Results in the proper budget object being returned with a 200 response.

Ok, I heard back from GCP and this is an issue with Google's billingbudgets API. It is being reported by Terraform provider users as well. 😞

Ok, I heard back from GCP and this is an issue with Google's billingbudgets API. It is being reported by Terraform provider users as well. 😞

This is resolved on GCP's side but the GET requests now return budgetFilters.projects as an array of project.number versus the old way which would return project.name. If you continue updating budgets with project.name than you will receive forever "planned update" from Terraform/Pulumi.


650 subject added entry--topical term

https://github.com/uwlib-cams/MARC2RDA/blob/main/Working Documents/6XX.csv

This overlaps with the discussion on Classification numbers. We should use a consistent approach and expand the scope of the Google doc to cover the   aspects of 6XX.

@cspayne I have added 3 lines for breaking out fast $x$y$z. I did not put status: reviewed, but first pass. Can you please check if they are ok according to the new decision? If yes, I will implement to the other tags too. Thank you

Hi @szapoun. They look good!

Hi @szapoun, it was clarified in the meeting today that we will not be breaking out any $x, $y, or $z from subjects, we will mint subject concepts as a whole. fast will sometimes break out $x, $y, or $z from other subject headings and create separate fields for those values, which we will retain, such as the below example. These do not require any additions to the mappings we have already created.
      <marc:datafield tag="655" ind1=" " ind2="7">
            <marc:subfield code="a">History.</marc:subfield>
            <marc:subfield code="2">fast</marc:subfield>
            <marc:subfield code="0">(OCoLC)fst01411628</marc:subfield>
     </marc:datafield>

@GordonDunsire @CECSpecialistI can you confirm that this is correct? Thanks.

Are we separating out $v as a category of work even if an IRI is provided for the entire subject in $1 or $0? Or do we only separate out $v if we are also minting an IRI for the subject as a whole?

I am not sure but I think we should separate out $v.  We can check with  @GordonDunsire @AdamSchiff:

Are we separating out $v as a category of work even if an IRI is provided for the entire subject in $1 or $0?
Or do we only separate out $v if we are also minting an IRI for the subject as a whole?

I believe that we are keeping the entire string as the subject, including the $v and that we are also separating out the $v as category of work.
Adam
Adam L. Schiff
Principal Cataloger
University of Washington Libraries
(206) 543-8409
@.***

From: pennylenger @.>
Sent: Monday, October 28, 2024 10:00 AM
To: uwlib-cams/MARC2RDA @.>
Cc: Adam L Schiff @.>; Mention @.>
Subject: Re: [uwlib-cams/MARC2RDA] 650 subject added entry--topical term (Issue #245)
I am not sure but I think we should separate out $v. We can check with @GordonDunsirehttps://urldefense.com/v3/__https://github.com/GordonDunsire__;!!K-Hz7m0Vt54!hdKvRta94vWdr0jUjdQjCR2Up3zvmVY_xZjUrZ04aiR-tibOhd7oYxaHI31b84SSs4NcgwGZqXy2ZklEGpHJMHU$ @AdamSchiffhttps://urldefense.com/v3/__https://github.com/AdamSchiff__;!!K-Hz7m0Vt54!hdKvRta94vWdr0jUjdQjCR2Up3zvmVY_xZjUrZ04aiR-tibOhd7oYxaHI31b84SSs4NcgwGZqXy2ZklEhDZqIXg$:

Are we separating out $v as a category of work even if an IRI is provided for the entire subject in $1 or $0?
Or do we only separate out $v if we are also minting an IRI for the subject as a whole?

—
Reply to this email directly, view it on GitHubhttps://urldefense.com/v3/__https://github.com/uwlib-cams/MARC2RDA/issues/245*issuecomment-2442139701__;Iw!!K-Hz7m0Vt54!hdKvRta94vWdr0jUjdQjCR2Up3zvmVY_xZjUrZ04aiR-tibOhd7oYxaHI31b84SSs4NcgwGZqXy2ZklEmgQd0qk$, or unsubscribehttps://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/ADFBVB5AR6NBXTPBYLJ3VY3Z5ZUSDAVCNFSM6AAAAABQA6YXDGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINBSGEZTSNZQGE__;!!K-Hz7m0Vt54!hdKvRta94vWdr0jUjdQjCR2Up3zvmVY_xZjUrZ04aiR-tibOhd7oYxaHI31b84SSs4NcgwGZqXy2ZklEkczDid0$.
You are receiving this because you were mentioned.Message ID: @.***>


BeamAmount: refactoring

Need to refactor BeamAmount control and get rid of maxPaintedWidth.

Use elide on UnitName and detect if need to shorten amount automatically,
maxPaintedWidth: this.width in TxDetails causes freeze of animation if multiple assets

Please test that amounts with unit (like "10 BEAM", "20.21 BeamX" &c) are displayed correctly

please, check all amount fields in the wallet

Checked on build 6.0.10830.4004