@ca-plant-list/ca-plant-list 0.4.42 → 0.4.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,13 @@
1
1
  {
2
+ "Aconitum columbianum": {
3
+ "calflora": { "notintaxondata": true }
4
+ },
5
+ "Blitum californicum": {
6
+ "calflora": { "notintaxondata": true }
7
+ },
8
+ "Blitum nuttallianum": {
9
+ "calflora": { "notintaxondata": true }
10
+ },
2
11
  "Castilleja ambigua subsp. ambigua": {
3
12
  "rpi": {
4
13
  "translation-to-rpi": "Castilleja ambigua var. ambigua"
@@ -55,6 +64,7 @@
55
64
  },
56
65
  "Malacothamnus hallii": {
57
66
  "comment": "in CNPS Rare Plant Inventory",
67
+ "inat": { "notintaxondata": true },
58
68
  "jepson": {
59
69
  "notineflora": true
60
70
  },
@@ -88,7 +98,13 @@
88
98
  "notineflora": true
89
99
  }
90
100
  },
91
- "Polypogon interruptus": { "calflora": { "native": true } },
101
+ "Piperia michaelii": { "rpi": { "translation": "Platanthera michaelii" } },
102
+ "Platanthera michaelii": {
103
+ "comment": "in CNPS Rare Plant Inventory as Piperia michaelii",
104
+ "rpi": {
105
+ "translation-to-rpi": "Piperia michaelii"
106
+ }
107
+ },
92
108
  "Ranunculus sceleratus var. sceleratus": {
93
109
  "calflora": { "native": false }
94
110
  },
@@ -100,7 +116,9 @@
100
116
  },
101
117
  "jepson": {
102
118
  "notineflora": true
103
- }
119
+ },
120
+ "inat": { "notintaxondata": true }
104
121
  },
122
+ "Symphyotrichum occidentale": { "calflora": { "notintaxondata": true } },
105
123
  "Veronica catenata": { "calflora": { "native": true } }
106
124
  }
@@ -0,0 +1 @@
1
+ A tube or bowl shaped structure formed by the fused lower parts of the petals, sepals, and [stamens](./stamen.html).
package/data/synonyms.csv CHANGED
@@ -151,7 +151,7 @@ Arceuthobium cyanocarpum,Arceuthobium campylopodum
151
151
  Arceuthobium divaricatum,Arceuthobium campylopodum
152
152
  Arceuthobium littorum,Arceuthobium campylopodum
153
153
  Arceuthobium monticola,Arceuthobium campylopodum
154
- Arceuthobium occidentale,Arceuthobium campylopodum
154
+ Arceuthobium occidentale,Arceuthobium campylopodum,INAT
155
155
  Arceuthobium siskiyouense,Arceuthobium campylopodum
156
156
  Arceuthobium tsugense,Arceuthobium campylopodum
157
157
  Arceuthobium tsugense subsp. contortae,Arceuthobium campylopodum
@@ -242,8 +242,6 @@ Berberis dictyota,Berberis aquifolium var. dictyota,INAT
242
242
  Berberis piperiana,Berberis aquifolium var. aquifolium
243
243
  Blepharizonia plumosa subsp. plumosa,Blepharizonia plumosa
244
244
  Blepharizonia plumosa subsp. viscida,Blepharizonia laxa
245
- Blitum californicum,Chenopodium californicum,INAT
246
- Blitum nuttallianum,Monolepis nuttalliana,INAT
247
245
  Bloomeria aurea,Bloomeria crocea var. aurea
248
246
  Bloomeria maritima,Muilla maritima
249
247
  Bloomeria maritima var. serotina,Muilla maritima
@@ -311,7 +309,6 @@ Cakile edentula subsp. californica,Cakile edentula
311
309
  Calamagrostis densa,Calamagrostis koelerioides
312
310
  Calandrinia leeana,Lewisia leeana
313
311
  Calandrinia menziesii var. macrocarpa,Calandrinia breweri
314
- Calibrachoa parviflora,Petunia parviflora,INAT
315
312
  Callitriche heterophylla subsp. bolanderi,Callitriche heterophylla var. bolanderi
316
313
  Callitropsis macrocarpa,Hesperocyparis macrocarpa
317
314
  Callitropsis sargentii,Hesperocyparis sargentii
@@ -424,7 +421,6 @@ Cheilanthes carlotta-halliae,Aspidotis carlotta-halliae
424
421
  Cheilanthes covillei,Myriopteris covillei
425
422
  Cheilanthes gracillima,Myriopteris gracillima
426
423
  Cheilanthes intertexta,Myriopteris intertexta
427
- Chenopodiastrum murale,Chenopodium murale,INAT
428
424
  Chenopodium ambrosioides,Dysphania ambrosioides
429
425
  Chenopodium ambrosioides var. suffruticosum,Dysphania ambrosioides
430
426
  Chenopodium botrys,Dysphania botrys
@@ -541,9 +537,9 @@ Cryptantha hanseni,Cryptantha intermedia var. intermedia
541
537
  Cryptantha intermedia var. rigida,Cryptantha juniperensis
542
538
  Cryptantha nevadensis var. rigida,Cryptantha juniperensis
543
539
  Cryptantha torreyana,Cryptantha torreyana var. pumila,INAT
544
- Cupressus macrocarpa,Hesperocyparis macrocarpa,INAT
540
+ Cupressus macrocarpa,Hesperocyparis macrocarpa
545
541
  Cupressus macrocarpa subsp. lobosensis,Hesperocyparis macrocarpa
546
- Cupressus sargentii,Hesperocyparis sargentii,INAT
542
+ Cupressus sargentii,Hesperocyparis sargentii
547
543
  Cupressus sargentii var. duttonii,Hesperocyparis sargentii
548
544
  Cuscuta californica var. breviflora,Cuscuta occidentalis
549
545
  Cuscuta formosana,Cuscuta japonica var. formosana
@@ -571,7 +567,6 @@ Danthonia californica var. californica,Danthonia californica
571
567
  Danthonia racemosa,Rytidosperma racemosum
572
568
  Datura stramonium var. tatula,Datura stramonium
573
569
  Deinandra corymbosa subsp. macrocephala,Deinandra corymbosa
574
- Delphinium ajacis,Consolida ajacis,INAT
575
570
  Delphinium californicum var. interius,Delphinium californicum subsp. interius
576
571
  Delphinium decorum var. patens,Delphinium patens subsp. patens
577
572
  Delphinium emiliae,Delphinium variegatum subsp. variegatum
@@ -600,7 +595,6 @@ Dentaria californica var. cuneata,Cardamine californica
600
595
  Dentaria californica var. integrifolia,Cardamine californica
601
596
  Dentaria californica var. sinuata,Cardamine californica
602
597
  Dentaria pachystigma var. dissectifolia,Cardamine californica
603
- Deschampsia bolanderi,Scribneria bolanderi,INAT
604
598
  Deschampsia holciformis,Deschampsia cespitosa subsp. holciformis
605
599
  Dicentra chrysantha,Ehrendorferia chrysantha
606
600
  Dichanthelium acuminatum,Panicum acuminatum,INAT
@@ -651,7 +645,6 @@ Draba verna var. verna,Draba verna
651
645
  Dudleya cymosa subsp. gigantea,Dudleya cymosa subsp. cymosa
652
646
  Echeveria brittonii,Sedum obtusatum
653
647
  Echeveria obtusata,Sedum obtusatum
654
- Echinochloa colona,Echinochloa colona,INAT
655
648
  Echinochloa crus-galli subsp. spiralis,Echinochloa crus-galli
656
649
  Echinochloa crus-galli var. zelayensis,Echinochloa crus-galli
657
650
  Echinodorus berteroi var. lanceolatus,Echinodorus berteroi
@@ -681,8 +674,7 @@ Elytrigia intermedia subsp. intermedia,Elymus hispidus
681
674
  Elytrigia intermedia var. intermedia,Elymus hispidus
682
675
  Elytrigia pontica,Elymus ponticus
683
676
  Elytrigia pontica subsp. pontica,Elymus ponticus
684
- Emmenanthe penduliflora var. rosea,Emmenanthe rosea,INAT
685
- Emmenanthe rosea,Emmenanthe rosea,INAT
677
+ Emmenanthe penduliflora var. rosea,Emmenanthe rosea
686
678
  Ephedra nevadensis subvar. pluribracteata,Ephedra viridis
687
679
  Ephedra nevadensis var. viridis,Ephedra viridis
688
680
  Epilobium adenocaulon,Epilobium ciliatum subsp. ciliatum
@@ -946,8 +938,6 @@ Heracleum lanatum,Heracleum maximum
946
938
  Herniaria cinerea,Herniaria hirsuta var. cinerea,INAT
947
939
  Herniaria hirsuta subsp. cinerea,Herniaria hirsuta var. cinerea
948
940
  Herpestris pilosa,Mimetanthe pilosa
949
- Hesperocyparis macrocarpa,Hesperocyparis macrocarpa,INAT
950
- Hesperocyparis sargentii,Hesperocyparis sargentii,INAT
951
941
  Hesperomecon filiformis,Hesperomecon linearis
952
942
  Hesperoscordum hyacinthinum,Triteleia hyacinthina
953
943
  Hesperoscordum lacteum,Triteleia hyacinthina
@@ -1018,7 +1008,6 @@ Isopyrum stipitatum,Enemion stipitatum
1018
1008
  Isotrema californicum,Aristolochia californica
1019
1009
  Iva axillaris subsp. robustior,Iva axillaris
1020
1010
  Iva axillaris var. robustior,Iva axillaris
1021
- Jacobaea vulgaris,Senecio jacobaea,INAT
1022
1011
  Johnstonella micromeres,Cryptantha micromeres
1023
1012
  Juglans californica var. californica,Juglans californica
1024
1013
  Juglans californica var. hindsii,Juglans hindsii
@@ -1242,7 +1231,6 @@ Madia madioides,Anisocarpus madioides
1242
1231
  Mahonia dictyota,Berberis aquifolium var. dictyota
1243
1232
  Mahonia nervosa var. mendocinensis,Berberis nervosa
1244
1233
  Mahonia pinnata subsp. pinnata,Berberis pinnata subsp. pinnata
1245
- Malacothamnus arcuatus var. elmeri,Malacothamnus hallii,INAT
1246
1234
  Malacothamnus fremontii subsp. cercophorus,Malacothamnus fremontii var. fremontii
1247
1235
  Malacothamnus hallii,Malacothamnus arcuatus var. elmeri
1248
1236
  Malacothamnus howellii,Malacothamnus fremontii var. fremontii
@@ -1520,9 +1508,6 @@ Oxalis corniculata subsp. pilosa,Oxalis pilosa
1520
1508
  Oxalis corniculata var. wrightii,Oxalis pilosa
1521
1509
  Oxalis oregana f. smalliana,Oxalis smalliana
1522
1510
  Oxalis oregana var. smalliana,Oxalis smalliana
1523
- Oxybasis rubra,Chenopodium rubrum,INAT
1524
- Oxybasis rubra var. humilis,Chenopodium rubrum var. humile,INAT
1525
- Oxybasis rubra var. rubra,Chenopodium rubrum var. rubrum,INAT
1526
1511
  Oxytheca inermis,Eriogonum inerme var. inerme
1527
1512
  Papaver lemmonii,Papaver californicum
1528
1513
  Parapholis cylindrica,Hainardia cylindrica,INAT
@@ -1610,7 +1595,6 @@ Phyla nodiflora var. rosea,Phyla nodiflora
1610
1595
  Picris echioides,Helminthotheca echioides
1611
1596
  Pinus benthamiana,Pinus ponderosa var. benthamiana
1612
1597
  Pinus ponderosa subsp. benthamiana,Pinus ponderosa var. benthamiana
1613
- Pinus ponderosa subsp. benthamiana,Pinus ponderosa var. pacifica,INAT
1614
1598
  Pinus ponderosa var. pacifica,Pinus ponderosa var. benthamiana
1615
1599
  Piperia elegans subsp. elegans,Platanthera elegans subsp. elegans
1616
1600
  Piperia elegans var. elata,Platanthera elongata
@@ -1639,12 +1623,8 @@ Plantago major var. scopulorum,Plantago major
1639
1623
  Plantago maritima var. californica,Plantago maritima
1640
1624
  Plantago maritima var. juncoides,Plantago maritima
1641
1625
  Plantago maritima var. maritima,Plantago maritima
1642
- Platanthera elegans subsp. elegans,Piperia elegans subsp. elegans,INAT
1643
- Platanthera elongata,Piperia elongata,INAT
1644
1626
  Platanthera foetida,Platanthera unalascensis
1645
1627
  Platanthera leucostachys,Platanthera dilatata var. leucostachys
1646
- Platanthera michaelii,Piperia michaelii,INAT
1647
- Platanthera transversa,Piperia transversa,INAT
1648
1628
  Platystemon californicus var. ciliatus,Platystemon californicus
1649
1629
  Platystemon californicus var. crinitus,Platystemon californicus
1650
1630
  Platystemon californicus var. horridulus,Platystemon californicus
@@ -1744,7 +1724,6 @@ Prunella vulgaris var. atropurpurea,Prunella vulgaris var. lanceolata
1744
1724
  Prunella vulgaris var. parviflora,Prunella vulgaris var. vulgaris
1745
1725
  Prunus amygdalus,Prunus dulcis,INAT
1746
1726
  Pseudognaphalium canescens subsp. beneolens,Pseudognaphalium beneolens
1747
- Pseudognaphalium luteoalbum,Pseudognaphalium luteoalbum,INAT
1748
1727
  Pseudognaphalium microcephalum var. thermale,Pseudognaphalium thermale
1749
1728
  Psilocarphus globiferus,Psilocarphus brevissimus var. brevissimus
1750
1729
  Psilocarphus globiferus,Psilocarphus chilensis
@@ -1805,7 +1784,6 @@ Rhamnus crocea subsp. ilicifolia,Rhamnus ilicifolia
1805
1784
  Rhamnus crocea var. ilicifolia,Rhamnus ilicifolia
1806
1785
  Rhamnus tomentella,Frangula californica subsp. tomentella
1807
1786
  Rhamnus tomentella subsp. tomentella,Frangula californica subsp. tomentella
1808
- Rhaponticum repens,Rhaponticum repens,INAT
1809
1787
  Rhus aromatica subsp. trilobata,Rhus aromatica
1810
1788
  Rhus aromatica var. simplicifolia,Rhus aromatica
1811
1789
  Rhus aromatica var. trilobata,Rhus aromatica
@@ -2038,7 +2016,6 @@ Smilacina racemosa var. amplexicaulis,Maianthemum racemosum subsp. amplexicaule
2038
2016
  Smilacina racemosa var. glabra,Maianthemum racemosum subsp. amplexicaule
2039
2017
  Smilacina stellata,Maianthemum stellatum
2040
2018
  Smilacina stellata var. sessilifolia,Maianthemum stellatum
2041
- Solanum nitidibaccatum,Solanum physalifolium var. nitidibaccatum,INAT
2042
2019
  Solanum nodiflorum,Solanum americanum
2043
2020
  Solanum physalifolium var. nitidibaccatum,Solanum nitidibaccatum
2044
2021
  Solidago californica,Solidago velutina subsp. californica
@@ -2093,7 +2070,6 @@ Streptanthus albidus subsp. peramoenus,Streptanthus glandulosus subsp. glandulos
2093
2070
  Streptanthus breweri var. breweri,Streptanthus breweri
2094
2071
  Streptanthus coulteri var. lemmonii,Caulanthus lemmonii
2095
2072
  Streptanthus flavescens,Caulanthus flavescens
2096
- Streptanthus glandulosus subsp. glandulosus,Streptanthus albidus subsp. peramoenus,INAT
2097
2073
  Streptanthus lemmonii,Caulanthus lemmonii
2098
2074
  Stropholirion californicum,Dichelostemma volubile
2099
2075
  Stylocline amphibola,Micropus amphibolus
package/data/taxa.csv CHANGED
@@ -153,7 +153,7 @@ Arabidopsis thaliana,mouse-ear cress,X,,,,,13682,433,55021,10153,true
153
153
  Arabis blepharophylla,coast rock cress,N,,,,,13690,436,60983,10166,true,Coast Rockcress,,182,4.3,,,S4,G4
154
154
  Aralia californica,elk-clover,N,,,,,13860,504,52848,202125,,Elk's Clover
155
155
  Arbutus menziesii,Pacific madrone,N,perennial,white,3,5,13872,506,51046,63080,true,Pacific Madrone
156
- Arceuthobium campylopodum,western dwarf mistletoe,N,,,,,13881,510,55422,10362,true,Foothill Pine Dwarf Mistletoe
156
+ Arceuthobium campylopodum,western dwarf mistletoe,N,,,,,13881,510,918449,10362,true,Foothill Pine Dwarf Mistletoe
157
157
  Arctostaphylos auriculata,Mt. Diablo manzanita,N,,,,,13905,533,48023,63093,true,Mount Diablo Manzanita,,203,1B.3,,,S2,G2
158
158
  Arctostaphylos crustacea subsp. crustacea,,N,,,,,89190,11337,79587,94933,true,Brittle Leaf Manzanita
159
159
  Arctostaphylos crustacea subsp. rosei,,N,,,,,91854,11338,79590,94936,true,Rose's Manzanita
@@ -241,7 +241,7 @@ Blennosperma nanum var. nanum,,N,,,,,6876,1094,64152,202456,true,Common Blennosp
241
241
  Blepharizonia laxa,glandular big tarplant,N,,,,,80231,10792,58799,202461,true,Glandular Big Tarweed
242
242
  Blepharizonia plumosa,big tarplant,N,,,,,1762,1098,57915,202462,true,Big Tarplant,,1589,1B.1,,,S1S2,G1G2
243
243
  Blitum californicum,California blite,N,perennial,,3,9,100040,,878230,213354,Chenopodium californicum
244
- Blitum nuttallianum,Nuttall's poverty weed,N,annual,,4,9,82731,,877971,381982,Monolepis nuttalliana
244
+ Blitum nuttallianum,Nuttall's poverty weed,N,annual,,4,9,82731,5671,877971,381982,Monolepis nuttalliana
245
245
  Bloomeria crocea var. aurea,,N,,yellow,4,6,55181,11376,80476,202467,true,Golden Stars
246
246
  Boechera breweri subsp. breweri,Brewer's rock cress,N,,,,,85519,11382,79644,41737,true,Brewer's Rock Cress
247
247
  Bolboschoenus fluviatilis,river bulrush,N,,,,,80011,11419,64228,103271,true,River Bulrush
@@ -550,7 +550,7 @@ Cynara cardunculus,"artichoke thistle,cardoon",X,,,,,2433,2568,57563,203266,true
550
550
  Cynodon dactylon,Bermuda grass,X,,,,,21743,2570,58371,138811,true,,cynodon-dactylon-profile
551
551
  Cynosurus echinatus,dogtail grass,X,,,,,21767,2577,47695,138861,true,,cynosurus-echinatus-profile
552
552
  Cyperus difformis,,X,,,,,21811,2580,59051,104211,true
553
- Cyperus eragrostis,,N,,,,,21820,2581,59055,104227,true,Tall Flatsedge
553
+ Cyperus eragrostis,tall flatsedge,N,,,,,21820,2581,59055,104227,true,Tall Flatsedge
554
554
  Cyperus erythrorhizos,,N,,,,,21822,2582,59060,104228,true,Red Rooted Cyperus
555
555
  Cyperus esculentus,yellow nut sedge,N,,,,,21824,2583,76584,104229,true,Chufa Sedge
556
556
  Cyperus involucratus,umbrella-sedge,X,,,,,21853,2585,414284,104272,true
@@ -568,7 +568,7 @@ Datisca glomerata,durango root,N,perennial,yellow,5,7,22377,2618,58888,16996,tru
568
568
  Datura stramonium,jimson weed,X,,,,,22387,2621,55854,67400,true
569
569
  Datura wrightii,"sacred datura,angel's trumpet",U,"annual,perennial",white,4,10,22389,2622,58331,67403,true,Sacred Datura
570
570
  Daucus carota,Queen Anne's lace,X,,,,,22394,2623,76610,203298
571
- Daucus pusillus,,N,,,,,22395,2624,56726,203299,,Rattlesnake Weed
571
+ Daucus pusillus,"American wild carrot, rattlesnake weed",N,annual,white,4,6,22395,2624,56726,203299,,Rattlesnake Weed
572
572
  Deinandra bacigalupii,Livermore moonshine,N,,,,,77607,9090,58817,203307,true,Livermore Tarplant,,1890,1B.1,CE,,S1,G1
573
573
  Deinandra corymbosa,,N,,,,,77598,9855,60956,203310,true,Coastal Tarweed
574
574
  Deinandra kelloggii,,N,,,,,79196,10829,76615,203319,true,Kellogg's Tarweed
@@ -653,7 +653,7 @@ Eichhornia crassipes,water-hyacinth,X,,,,,23856,2896,962637,203518,true,,eichhor
653
653
  Elatine brachysperma,waterwort,N,,,,,23917,2899,76768,17822,true,Shortseed Waterwort
654
654
  Elatine californica,waterwort,N,,,,,23919,2900,58891,17823,true,California Waterwort
655
655
  Eleocharis acicularis var. acicularis,needle spikerush,N,,,,,58118,2906,64313,108000,Eleocharis acicularis,Needle Spike-rush
656
- Eleocharis macrostachya,common spikerush,N,,,,,23993,2911,59064,104457,true,Common Spikerush
656
+ Eleocharis macrostachya,common spikerush,N,perennial,,,,23993,2911,59064,104457,true,Common Spikerush
657
657
  Eleocharis parishii,Parish spikerush,N,,,,,23997,2917,58344,104485,true,Parish's Spikerush
658
658
  Eleocharis parvula,small spikerush,N,,,,,23999,2918,76783,104486,true,Small Spikerush,,588,4.3,,,S3,G5
659
659
  Eleocharis rostellata,,N,,,,,24012,2922,59065,104498,true,Beaked Spikerush
@@ -672,14 +672,14 @@ Elymus multisetus,big squirreltail,N,,,,,24122,2941,57167,140134,true,Big Squirr
672
672
  Elymus ponticus,tall wheatgrass,X,,,,,91896,11643,1301269,206756,Thinopyrum ponticum
673
673
  Elymus stebbinsii,,N,,,,,101964,2944,63331,140192,true,Stebbins' Wheat Grass
674
674
  Elymus trachycaulus subsp. trachycaulus,slender wheatgrass,N,,,,,50280,2947,636557,167179,true,Slender Wheatgrass
675
- Elymus triticoides,,N,,,,,24181,11648,57184,140206,Leymus triticoides,Creeping Wild Rye
675
+ Elymus triticoides,beardless wild-rye,N,,,,,24181,11648,57184,140206,Leymus triticoides,Creeping Wild Rye
676
676
  Emmenanthe penduliflora,whispering bells,N,annual,"white,yellow",4,7,24223,2956,58173,203529,,Whispering Bells
677
677
  Emmenanthe rosea,,N,,,,,24224,14564,1597339,206758,,Whisperingbells
678
678
  Enemion occidentale,,N,,,,,24250,9551,76818,17850,true,Western Rue-anemone
679
679
  Enemion stipitatum,,N,,,,,24252,9552,76819,17852,true,Siskiyou Rue-anemone
680
680
  Ephedra californica,,N,,,,,24275,2972,57890,59599,true,California Jointfir
681
681
  Ephedra viridis,,N,,,,,24287,2979,57891,59617,true,Mountain Ephedra
682
- Epilobium brachycarpum,,N,,,,,24341,2983,52971,17879,true,Panicled Willow Herb
682
+ Epilobium brachycarpum,panicled willowherb,N,,,,,24341,2983,52971,17879,true,Panicled Willow Herb
683
683
  Epilobium campestre,,N,,,,,89220,11649,76827,17882,true,Smooth Boisduvalia
684
684
  Epilobium canum subsp. canum,California fuchsia,N,perennial,red,,,50302,2985,53044,42259,true,California Fuchsia
685
685
  Epilobium canum subsp. latifolium,California fuchsia,N,perennial,red,6,12,50304,2987,53230,203563,true,California Fuchsia
@@ -785,7 +785,7 @@ Erythranthe laciniata,,N,,,,,99142,13417,546557,203784,true,Cut-leaved Monkeyflo
785
785
  Erythranthe latidens,broad-tooth monkeyflower,N,,"white,pink",4,6,99144,13495,771886,203785,true,Broadtooth Monkeyflower
786
786
  Erythranthe microphylla,small leaved monkeyflower,N,,,,,99152,13498,453717,206815,true
787
787
  Erythranthe moschata,musk monkeyflower,N,perennial,yellow,6,8,99156,13494,453644,203788,true,Musk Flower
788
- Erythranthe nasuta,shy monkeyflower,N,,yellow,3,7,99158,13637,545973,203789,true
788
+ Erythranthe nasuta,shy monkeyflower,N,annual,yellow,3,7,99158,13637,545973,203789,true
789
789
  Erythranthe primuloides,primrose monkeyflower,N,perennial,yellow,6,8,99174,13501,635401,203794,true,Primrose Monkeyflower
790
790
  Erythranthe tilingii,Tiling's monkeyflower,N,perennial,yellow,6,9,99191,13507,555996,203798,true,Larger Mountain Monkeyflower
791
791
  Eschscholzia caespitosa,tufted poppy,N,,,,,25205,3511,58954,18096,true,Tufted Poppy
@@ -889,9 +889,9 @@ Glyceria leptostachya,narrow mannagrass,N,,,,,27079,3929,77292,141421,true,Narro
889
889
  Glycyrrhiza lepidota,wild licorice,N,,,,,27117,3933,58896,22506,true,Wild Licorice
890
890
  Gnaphalium palustre,lowland cudweed,N,annual,white,5,10,3082,3946,57980,204019,true,Western Marsh Cudweed
891
891
  Gratiola ebracteata,bractless hedge hyssop,N,,,,,27292,3952,77300,69880,true,Bractless Hedge-hyssop
892
- Grindelia camporum,,N,,yellow,,,3099,3956,56953,206865,,Great Valley Gumweed
893
- Grindelia hirsutula,,N,,yellow,,,3107,3960,55364,204046,true,Gumweed
894
- Grindelia stricta var. angustifolia,marsh gumplant,N,,yellow,,,77358,3968,61991,206870,,Marsh Gumplant
892
+ Grindelia camporum,,N,perennial,yellow,5,11,3099,3956,56953,206865,,Great Valley Gumweed
893
+ Grindelia hirsutula,hairy gumweed,N,perennial,yellow,4,6,3107,3960,55364,204046,true,Gumweed
894
+ Grindelia stricta var. angustifolia,marsh gumplant,N,perennial,yellow,,,77358,3968,61991,206870,,Marsh Gumplant
895
895
  Gruvelia pusilla,little combseed,N,,,,,105901,14570,57694,271340,,Little Pectocarya
896
896
  Gutierrezia californica,California matchweed,N,,,,,3140,3977,57978,204054,true,California Matchweed
897
897
  Hackelia micrantha,Jessica's stickseed,N,perennial,blue,6,8,27534,3990,77323,204095,,Jessica Sticktight
@@ -908,8 +908,8 @@ Helianthus californicus,California sunflower,N,,,,,3254,4042,56954,204184,true,C
908
908
  Helianthus gracilentus,,N,,,,,3280,4047,77356,204188,true,Slender Sunflower
909
909
  Heliotropium curassavicum var. oculatum,heliotrope,N,,,,,59914,11723,80928,204220,,Seaside Heliotrope
910
910
  Helminthotheca echioides,bristly ox-tongue,X,"annual,biennial",yellow,1,12,81752,10921,61906,204227,true,,picris-echioides-profile
911
- Hemizonia congesta subsp. lutescens,,N,,,,,80179,10922,61173,204234,true,Hayfield Tarweed
912
- Hemizonia congesta subsp. luzulifolia,,N,,white,3,12,102005,4070,56956,204235,true,Hayfield Tarweed
911
+ Hemizonia congesta subsp. lutescens,,N,annual,,,,80179,10922,61173,204234,true,Hayfield Tarweed
912
+ Hemizonia congesta subsp. luzulifolia,"hayfield tarweed,woodrush tarweed",N,annual,white,3,12,102005,4070,56956,204235,true,Hayfield Tarweed
913
913
  Heracleum maximum,cow parsnip,N,,,,,27996,9546,53094,204245,,Cow Parsnip
914
914
  Herniaria hirsuta var. cinerea,rupturewort,X,,,,,81545,10923,932806,130357,true
915
915
  Hesperevax acaulis var. ambusticola,fire evax,N,annual,,4,6,59934,4108,80930,204250,true,Fire Evax
@@ -954,9 +954,10 @@ Hordeum brachyantherum subsp. californicum,California barley,N,,,,,76414,4220,59
954
954
  Hordeum depressum,low barley,N,,,,,28384,4221,58378,141856,true,Low Barley
955
955
  Hordeum jubatum subsp. jubatum,foxtail barley,N,,,,,50967,11730,79941,167364,true,Foxtail Barley
956
956
  Hordeum marinum subsp. gussoneanum,Mediterranean barley,X,,,,,50968,4224,63879,204328,true
957
- Hordeum murinum subsp. glaucum,,X,,,,,50970,4226,61204,204329,true
958
- Hordeum murinum subsp. leporinum,,X,,,,,50971,4227,52795,204330,true
959
- Hordeum murinum subsp. murinum,,X,,,,,50972,4228,63333,167373,true
957
+ Hordeum murinum,wall barley,X,annual,,,,28392,4225,52796,141884,true,,horderum-murinum-profile
958
+ Hordeum murinum subsp. glaucum,,X,annual,,,,50970,4226,61204,204329,true
959
+ Hordeum murinum subsp. leporinum,,X,annual,,,,50971,4227,52795,204330,true
960
+ Hordeum murinum subsp. murinum,,X,annual,,,,50972,4228,63333,167373,true
960
961
  Horkelia californica var. californica,California horkelia,N,,,,,81857,11731,237030,48514,true,California Horkelia
961
962
  Horkelia californica var. elata,tall horkelia,N,,,,,81856,11732,80945,48515,true,California Honeydew
962
963
  Horkelia californica var. frondosa,leafy horkelia,N,,,,,81858,11733,1629357,48516,true,California Horkelia
@@ -1017,7 +1018,7 @@ Juncus tenuis,poverty rush,N,,,,,29725,4496,69930,104860,true,Poverty Rush
1017
1018
  Juncus xiphioides,iris-leaved rush,N,,,,,29743,4502,57110,104882,true,Irisleaf Rush
1018
1019
  Juniperus californica,California juniper,N,,,,,29749,4503,57889,58267,true,California Juniper
1019
1020
  Juniperus communis var. saxatilis,mountain juniper,N,,,,,60424,10933,81001,58735,,Common Juniper
1020
- Keckiella breviflora var. breviflora,,N,,,,,75718,4520,59015,98400,true,Gaping Keckiella
1021
+ Keckiella breviflora var. breviflora,bush beardtongue,N,perennial,"white,pink",5,7,75718,4520,59015,98400,true,Gaping Keckiella
1021
1022
  Keckiella corymbosa,,N,,,,,29883,4523,62043,71018,true,Keckiella
1022
1023
  Kickxia elatine,fluellin,X,,,,,29898,4532,64332,71023,true
1023
1024
  Kickxia spuria,fluellin,X,,,,,29899,4533,64191,71024,true
@@ -1026,9 +1027,9 @@ Koeleria gerardi,annual junegrass,X,,,,,29957,13237,167999,231850,Rostraria cris
1026
1027
  Koeleria macrantha,junegrass,N,,,,,29951,4539,57183,142292,true,Junegrass
1027
1028
  Kopsiopsis strobilacea,California ground-cone,N,,,,,93802,11786,77612,71163,true,California Ground-cone
1028
1029
  Kyllinga brevifolia,shortleaf spikesedge,X,,,,,30044,4545,489795,104894,true
1029
- Lactuca saligna,,X,,,,,3688,4549,53105,204511,true
1030
+ Lactuca saligna,willowleaf lettuce,X,,,,,3688,4549,53105,204511,true
1030
1031
  Lactuca serriola,prickly lettuce,X,,,,,3690,4550,53107,204513,true
1031
- Lactuca virosa,,X,,,,,3697,4552,53108,204515,true
1032
+ Lactuca virosa,bitter lettuce,X,,,,,3697,4552,53108,204515,true
1032
1033
  Laennecia coulteri,,N,,,,,3698,9509,57937,204517,,Coulter's Horseweed
1033
1034
  Lagophylla ramosissima,hare's-ear,N,,,,,3719,4556,56965,204520,true,Branched Lagophylla
1034
1035
  Lamarckia aurea,goldentop,X,,,,,30147,4560,58379,142340,true
@@ -1120,7 +1121,7 @@ Limosella australis,delta mudwort,N,,,,,31029,10069,60248,71441,true,,,1715,2B.1
1120
1121
  Linanthus dichotomus subsp. dichotomus,evening snow,N,,,,,51286,10624,80000,95800,,Evening Snow
1121
1122
  Linanthus dichotomus subsp. meridianus,,N,,,,,51287,10625,80001,95801
1122
1123
  Linanthus pungens subsp. pulchriflorus,granite prickly phlox,N,perennial,"white,pink",5,8,98684,14586,861790,204699
1123
- Linum bienne,,X,,,,,31144,4906,55679,24471,true
1124
+ Linum bienne,pale flax,X,,,,,31144,4906,55679,24471,true
1124
1125
  Linum lewisii var. lewisii,blue flax,N,,,,,60912,4910,60495,48905,true,Prairie Flax
1125
1126
  Lithophragma affine,woodland star,N,perennial,white,3,4,31236,4922,50803,24525,true,San Francisco Woodland Star
1126
1127
  Lithophragma bolanderi,,N,perennial,white,2,7,31238,4923,77787,24527,true,Bolander's Woodland Star
@@ -1129,7 +1130,7 @@ Lithophragma heterophyllum,hill starflower,N,perennial,white,2,6,31244,4927,5312
1129
1130
  Lithophragma parviflorum var. parviflorum,,N,perennial,"white,pink",3,7,60952,4930,77791,48936,Lithophragma parviflorum,Smallflower Woodland-star
1130
1131
  Lobularia maritima,sweet alyssum,X,,,,,31347,4939,56992,24547,true,,lobularia-maritima-profile
1131
1132
  Logfia filaginoides,herba impia,N,annual,red,2,5,81847,10960,64254,204735,true,California Cottonrose
1132
- Logfia gallica,,X,annual,"brown,yellow",3,7,31363,9521,56949,204736,true
1133
+ Logfia gallica,narrowleaf cottonrose,X,annual,"brown,yellow",3,7,31363,9521,56949,204736,true
1133
1134
  Lomatium californicum,chu-chu-pate,N,,yellow,4,6,31389,4950,56824,204737,,California Lomatium
1134
1135
  Lomatium caruifolium var. caruifolium,,N,,,,,61026,4953,64328,204739,,Alkali Desertparsley
1135
1136
  Lomatium caruifolium var. denticulatum,,N,,,,,61027,4954,60123,204740
@@ -1166,6 +1167,7 @@ Lupinus lepidus var. sellulus,,N,,,,,61365,5170,81070,49224,true,Stool Lupine
1166
1167
  Lupinus lepidus,dwarf lupine,N,perennial,blue,,,31941,,62689,25001,true,Pacific Lupine
1167
1168
  Lupinus littoralis var. variicolor,,N,,,,,80538,14304,,49237,true,Manycolored Lupine
1168
1169
  Lupinus luteolus,butter lupine,N,,,,,31956,5176,77875,25020,true,Pale Yellow Lupine
1170
+ Lupinus microcarpus,chick lupine,N,annual,,,,32094,5183,57069,25048,true,Chick Lupine
1169
1171
  Lupinus microcarpus var. densiflorus,,N,annual,"yellow,white",4,6,76668,5184,57058,49248,true,Dense Flowered Platycarpos
1170
1172
  Lupinus microcarpus var. microcarpus,chick lupine,N,annual,"pink,blue",3,6,75776,5186,58159,204796,true,Valley Lupine
1171
1173
  Lupinus nanus,sky lupine,N,,blue,3,6,31978,5189,50612,25068,true,Sky Lupine
@@ -1346,7 +1348,7 @@ Oxalis pes-caprae,Bermuda-buttercup,X,,yellow,1,5,35642,6016,53169,27001,true,,o
1346
1348
  Oxalis pilosa,hairy wood sorrel,N,,yellow,2,9,35601,11895,78300,27002,true,Radishroot Woodsorrel
1347
1349
  Oxalis smalliana,redwood sorrel,N,perennial,"white,pink,blue",1,8,8615,14752,1464017,416928
1348
1350
  Oxybasis macrosperma,,X,annual,,7,10,82806,,1023208,394022,Chenopodium macrospermum
1349
- Oxybasis rubra var. humilis,,N,annual,,8,10,82809,,931680,433293,Chenopodium rubrum var. humile
1351
+ Oxybasis rubra var. humilis,,N,annual,,8,10,82809,10813,931680,433293,Chenopodium rubrum var. humile
1350
1352
  Oxybasis rubra var. rubra,,N,annual,,8,10,82810,,931836,432285,Chenopodium rubrum var. rubrum
1351
1353
  Oxybasis rubra,red pigweed,N,annual,,,,107008,,931679,210185,Chenopodium rubrum
1352
1354
  Oxyria digyna,alpine sorrel,N,perennial,,7,9,35722,6022,67591,117404,true,Mountain Sorrel
@@ -1446,7 +1448,7 @@ Pistacia atlantica,,X,,,,,77247,6541,78588,28204
1446
1448
  Pittosporum crassifolium,,X,,,,,38444,6545,78590,208641
1447
1449
  Plagiobothrys acanthocarpus,adobe allocarya,N,,,,,38484,6550,58062,205466,,Adobe Popcornflower
1448
1450
  Plagiobothrys arizonicus,,N,,,,,38485,6551,58063,205467,,Arizona Popcornflower
1449
- Plagiobothrys bracteatus,,N,,,,,38487,6553,57719,205469,,Bracted Popcornflower
1451
+ Plagiobothrys bracteatus,bracted popcornflower,N,annual,white,4,6,38487,6553,57719,205469,,Bracted Popcornflower
1450
1452
  Plagiobothrys canescens var. canescens,,N,,,,,63883,10232,81250,205474,,Valley Popcornflower
1451
1453
  Plagiobothrys canescens,,N,,,,,38488,6554,58064,205473,,Valley Popcornflower
1452
1454
  Plagiobothrys chorisianus var. chorisianus,,N,,,,,63885,6557,57715,208215,,Choris' Popcornflower,,1382,1B.2,,,S1,G3T1Q
@@ -1471,8 +1473,8 @@ Plantago major,common plantain,X,,,,,38570,6619,58961,74543,true
1471
1473
  Plantago maritima,alkali plantain,N,,,,,38573,6620,68543,74544,true,Goose Tongue
1472
1474
  Plantago subnuda,naked plantain,N,,,,,38605,6626,60223,74567,true,Naked Plantain
1473
1475
  Platanthera dilatata var. leucostachys,white-flowered bog orchid,N,,,,,63974,9593,81271,205521,true,White Bog Orchid
1474
- Platanthera elegans subsp. elegans,,N,perennial,green,5,9,76273,,840643,396924,Piperia elegans subsp. elegans
1475
- Platanthera elongata,wood rein-orchid,N,perennial,green,5,7,107276,,551466,205448,Piperia elongata
1476
+ Platanthera elegans subsp. elegans,,N,perennial,green,5,9,76273,8857,840643,396924,Piperia elegans subsp. elegans
1477
+ Platanthera elongata,wood rein-orchid,N,perennial,green,5,7,107276,6532,551466,205448,Piperia elongata
1476
1478
  Platanthera michaelii,Michael's rein-orchid,N,perennial,green,4,8,107279,6534,840639,205450,Piperia michaelii,,,1380,4.2,,,S3,G3
1477
1479
  Platanthera transversa,flat-spurred piperia,N,perennial,green,5,8,107280,6535,355392,205452,Piperia transversa
1478
1480
  Platanthera unalascensis,"Alaska piperia,slender-spire orchid",N,perennial,green,5,8,38611,6536,840638,205454,Piperia unalascensis
@@ -1489,7 +1491,7 @@ Poa bulbosa,bulbous bluegrass,X,,,,,38805,6662,58382,147098,true
1489
1491
  Poa douglasii,sand-dune bluegrass,N,,,,,38815,6669,61071,147190,true,Sand Dune Blue Grass
1490
1492
  Poa howellii,,N,,,,,38804,6672,52812,147272,true,Howell's Bluegrass
1491
1493
  Poa pratensis subsp. pratensis,Kentucky bluegrass,X,,,,,70514,6689,64155,167666,true
1492
- Poa secunda subsp. secunda,one-sided bluegrass,N,,,,,70516,6694,58383,167673,true,One-sided Bluegrass
1494
+ Poa secunda subsp. secunda,one-sided bluegrass,N,perennial,,,,70516,6694,58383,167673,true,One-sided Bluegrass
1493
1495
  Pogogyne douglasii,,N,,,,,38936,6704,63943,74615,,Douglas' Pogogyne
1494
1496
  Pogogyne serpylloides,,N,,,,,38939,6708,57118,74618,,Thymeleaf Beardstyle
1495
1497
  Pogogyne zizyphoroides,,N,,,,,78298,6709,60209,207217,,Sacramento Beardstyle
@@ -1520,6 +1522,7 @@ Potamogeton crispus,,X,,,,,39560,6806,78707,205611,true,,potamogeton-crispus-pro
1520
1522
  Potamogeton diversifolius,,N,,,,,39562,6807,78708,205612,true,Diverse-leaved Pondweed
1521
1523
  Potamogeton foliosus subsp. foliosus,,N,,,,,80562,11947,80166,205614,true,Leafy Pondweed
1522
1524
  Potamogeton illinoensis,,N,,,,,39581,6814,78711,205617,true,Shining Pondweed
1525
+ Potamogeton natans,floating-leaved pondweed,N,perennial,,,,39591,6816,78712,205618,true,Floating Leaved Pondweed
1523
1526
  Potamogeton nodosus,,N,,,,,39595,6817,59108,205619,true,Long-leaved Pondweed
1524
1527
  Potamogeton pusillus,,N,,,,,39612,6820,78714,205623,true,Small Pondweed
1525
1528
  Potamogeton zosteriformis,,N,,,,,39646,6825,78717,208653,true,Eel-grass Pondweed,,1750,2B.2,,,S3,G5
@@ -1542,9 +1545,9 @@ Prunella vulgaris var. vulgaris,,X,,,,,75995,6885,81287,99540
1542
1545
  Prunus cerasifera,cherry plum,X,,,,,39972,6887,55837,28875,true,,prunus-cerasifera-profile
1543
1546
  Prunus dulcis,almond,X,,,,,39976,6888,69936,28884,true
1544
1547
  Prunus emarginata,bitter cherry,N,,,,,39978,6889,63905,28885,true,Bitter Cherry
1545
- Prunus ilicifolia subsp. ilicifolia,,N,,,,,76988,6895,59002,43463,Prunus ilicifolia var. ilicifolia,Hollyleaf Cherry
1548
+ Prunus ilicifolia subsp. ilicifolia,holly-leafed cherry,N,perennial,white,4,5,76988,6895,59002,43463,Prunus ilicifolia var. ilicifolia,Hollyleaf Cherry
1546
1549
  Prunus subcordata,,N,,,,,40019,6897,56040,28936,true,Klamath Plum
1547
- Prunus virginiana var. demissa,western choke-cherry,N,,,,,64546,6898,63900,50588,true,Western Chokecherry
1550
+ Prunus virginiana var. demissa,western choke-cherry,N,perennial,white,5,6,64546,6898,63900,50588,true,Western Chokecherry
1548
1551
  Pseudognaphalium beneolens,fragrant everlasting,N,"annual,perennial","white,yellow",6,10,81674,11047,64303,204006,true,Fragrant Everlasting
1549
1552
  Pseudognaphalium biolettii,,N,,,,,81666,11955,58829,205655,true,Bicolored Everlasting
1550
1553
  Pseudognaphalium californicum,"California cudweed,California everlasting",N,"annual,perennial",white,4,7,80569,11956,53077,205656,true,California Cudweed
@@ -1575,7 +1578,7 @@ Pyrola dentata,toothed wintergreen,N,perennial,"white,pink",6,8,40456,13183,7076
1575
1578
  Pyrola picta,white-veined wintergreen,N,perennial,"white,pink",6,8,40452,6961,62239,74938,true,White-veined Wintergreen
1576
1579
  Pyrrocoma racemosa var. racemosa,clustered goldenweed,N,,,,,8122,6975,81305,207239,true
1577
1580
  Quercus agrifolia var. agrifolia,coast live oak,N,,,,,64703,6984,58913,50668,Quercus agrifolia,Coast Live Oak
1578
- Quercus agrifolia,,N,,,,,40530,6983,47850,29223,true,Coast Live Oak
1581
+ Quercus agrifolia,coast live oak,N,,,,,40530,6983,47850,29223,true,Coast Live Oak
1579
1582
  Quercus berberidifolia,scrub oak,N,,,,,76903,6986,57082,29233,true,Scrub Oak
1580
1583
  Quercus chrysolepis,canyon live oak,N,,,,,40565,6987,51092,29251,true,Canyon Live Oak
1581
1584
  Quercus douglasii,blue oak,N,,,,,40581,6990,49009,29260,true,Blue Oak
@@ -1614,6 +1617,8 @@ Rhaponticum repens,Russian knapweed,X,,,,,103802,13621,339502,201832,Acroptilon
1614
1617
  Rhinotropis californica,California milkwort,N,,,,,107535,14636,876453,265222,true,California Milkwort
1615
1618
  Rhodiola integrifolia subsp. integrifolia,western roseroot,N,perennial,red,5,8,80583,10300,80170,43540,true,Western Roseroot
1616
1619
  Rhus aromatica,skunkbrush,N,,,,,41175,11056,58738,29816,,Fragrant Sumac
1620
+ Rhus integrifolia,lemonade berry,N,perennial,,,,41186,7090,55009,29829,,Lemonade Berry
1621
+ Rhus ovata,sugar bush,N,perennial,,,,41191,7091,64121,29838,,Sugar Bush
1617
1622
  Ribes amarum,bitter gooseberry,N,,,,,41372,7099,53433,29899,true,Bitter Gooseberry
1618
1623
  Ribes aureum var. gracillimum,golden currant,N,perennial,yellow,2,5,65126,7104,55547,51084,true,Golden Currant
1619
1624
  Ribes californicum var. californicum,hillside gooseberry,N,perennial,white,2,3,65128,7108,47128,51086,true,Hillside Gooseberry
@@ -1632,10 +1637,10 @@ Romulea rosea var. australis,,X,,,,,65230,7162,68895,207249,,,romulea-rosea-prof
1632
1637
  Rorippa curvisiliqua,yellow cress,N,,,,,41580,7168,58866,30089,true,Curvepod Yellowcress
1633
1638
  Rorippa palustris subsp. palustris,,N,,,,,52673,11988,64157,43562,true,Bog Yellowcress
1634
1639
  Rosa californica,California rose,N,,pink,,,41631,7179,53437,30158,true,California Wildrose
1635
- Rosa gymnocarpa,wood rose,N,,pink,,,41652,7182,53441,30212,true,Wood Rose
1640
+ Rosa gymnocarpa,wood rose,N,perennial,pink,4,7,41652,7182,53441,30212,true,Wood Rose
1636
1641
  Rosa rubiginosa,sweet-brier,X,,,,,41648,11057,78886,30313,true
1637
- Rosa spithamea,ground rose,N,,,,,41696,7187,53442,30338,true,Ground Rose
1638
- Rosa woodsii,Woods' rose,N,perennial,pink,,,41704,,78887,30370,true,Woods' Rose
1642
+ Rosa spithamea,ground rose,N,perennial,pink,4,8,41696,7187,53442,30338,true,Ground Rose
1643
+ Rosa woodsii,Woods' rose,N,perennial,pink,,,41704,10312,78887,30370,true,Woods' Rose
1639
1644
  Rubus armeniacus,Himalayan blackberry,X,,,,,87465,10319,61317,30459,,,rubus-armeniacus-profile
1640
1645
  Rubus laciniatus,cutleaf blackberry,X,,,,,42009,7195,78891,30698,true
1641
1646
  Rubus parviflorus,thimbleberry,N,,,,,42108,7200,51646,30808,true,Thimbleberry
@@ -1754,6 +1759,7 @@ Silene douglasii var. douglasii,Douglas' catchfly,N,perennial,white,6,9,66384,10
1754
1759
  Silene gallica,windmill pink,X,,,,,44517,7597,53212,119276,true
1755
1760
  Silene laciniata subsp. californica,,N,,,,,82538,11084,62222,129063,true,Cardinal Catchfly
1756
1761
  Silene lemmonii,Lemmon's catchfly,N,perennial,white,4,9,44533,7603,60523,119295,true,Lemmon's Catchfly
1762
+ Silene multinervia,multinerved catchfly,N,annual,"white,pink",4,6,44540,7606,168967,119304
1757
1763
  Silene sargentii,Sargent's catchfly,N,perennial,white,7,8,44566,7614,62697,119340,true,Sargent's Catchfly
1758
1764
  Silene verecunda,,N,,,,,44589,7617,60581,119364,true,San Francisco Campion
1759
1765
  Silybum marianum,milk-thistle,X,,,,,4918,7622,52586,205950,true,,silybum-marianum-profile
@@ -1766,7 +1772,7 @@ Sisyrinchium californicum,golden-eyed-grass,N,,,,,44688,7633,60550,205957,true,Y
1766
1772
  Sium suave,,N,,,,,44763,7641,79131,208695,,Hemlock Waterparsnip
1767
1773
  Solanum americanum,,N,,,,,44818,7647,59035,76168,true,American Black Nightshade
1768
1774
  Solanum elaeagnifolium,white horse-nettle,X,,,,,44852,7654,79137,76470,true
1769
- Solanum furcatum,,X,,,,,44856,7655,79138,76521,true
1775
+ Solanum furcatum,forked nightshade,X,,,,,44856,7655,79138,76521,true
1770
1776
  Solanum lanceolatum,lanceleaf nightshade,X,,,,,44872,7656,79139,76689,true
1771
1777
  Solanum nigrum,black nightshade,X,,,,,44883,7658,79141,76840,true
1772
1778
  Solanum nitidibaccatum,nightshade,X,annual,white,5,10,103838,14890,406080,211825,true
@@ -1804,12 +1810,14 @@ Sporobolus indicus,smutgrass,X,,,,,45308,7749,79187,149101,true
1804
1810
  Sporobolus niliacus,,X,,,,,82876,14905,773022,397065,Crypsis vaginiflora
1805
1811
  Sporobolus pumilus,saltmeadow cordgrass,X,,,,,82878,14906,773004,432226,Spartina patens
1806
1812
  Sporobolus schoenoides,swamp grass,X,,,,,82879,14907,773038,397066,Crypsis schoenoides
1813
+ Stachys,,N,,,,,10540,,51229
1807
1814
  Stachys ajugoides,hedge nettle,N,,,,,45338,7751,53295,77371,,Ajuga Hedge Nettle
1808
1815
  Stachys albens,,N,,,,,45339,7754,58192,77372,,White Hedge Nettle
1809
1816
  Stachys bullata,,N,,,,,45343,7756,58930,77383,,California Hedgenettle
1810
1817
  Stachys pycnantha,short-spike hedge nettle,N,,,,,45389,7759,57123,77417,,Short Spike Hedge Nettle
1811
- Stachys rigida var. quercetorum,,N,,,,,80610,12038,81388,99881,,Rough Hedgenettle
1812
- Stachys rigida var. rigida,hedge nettle,N,,pink,,,80611,12039,53296,99882,,Rigid Hedge Nettle
1818
+ Stachys rigida,rough hedgenettle,N,perennial,pink,3,10,45385,12037,53306,77420,,Rough Hedgenettle
1819
+ Stachys rigida var. quercetorum,,N,perennial,pink,,,80610,12038,81388,99881,,Rough Hedgenettle
1820
+ Stachys rigida var. rigida,hedge nettle,N,perennial,pink,,,80611,12039,53296,99882,,Rigid Hedge Nettle
1813
1821
  Stebbinsoseris heterocarpa,,N,,,,,76210,7768,50804,206070,true,Grassland Silverpuffs
1814
1822
  Stellaria media,common chickweed,X,,,,,45497,7776,53298,119478,true
1815
1823
  Stellaria nitens,shining chickweed,N,,,,,45502,7777,57007,119483,true,Shining Chickweed
@@ -1868,6 +1876,7 @@ Toxicoscordion fremontii,zigadene,N,bulb,white,2,6,89163,11103,49649,206215,Ziga
1868
1876
  Toxicoscordion paniculatum,,N,bulb,white,5,6,46802,11105,79380,206217,Zigadenus paniculatus,Panicled Death Camas
1869
1877
  Toxicoscordion venenosum var. venenosum,death-camas,N,bulb,white,5,7,93851,11106,81432,206219,Zigadenus venenosus var. venenosus,Death Camas
1870
1878
  Tradescantia fluminensis,,X,,,,,77137,8017,79382,206221,true
1879
+ Tragopogon dubius,yellow salsify,X,"annual,biennial",yellow,5,9,5443,8019,54143,206231,true
1871
1880
  Tragopogon porrifolius,salsify,X,,,,,5449,8020,54141,206232,true
1872
1881
  Trianthema portulacastrum,,N,,,,,46920,8023,79390,119925,true,Desert Horsepurslane
1873
1882
  Tribulus terrestris,puncture vine,X,,,,,46922,8024,64238,33988,true,,tribulus-terrestris-profile
@@ -1880,8 +1889,9 @@ Trifolium campestre,hop clover,X,,,,,47059,8064,57076,34056,true
1880
1889
  Trifolium ciliolatum,foothill clover,N,,,,,47063,8065,60197,34065,true,Foothill Clover
1881
1890
  Trifolium columbinum,olive clover,N,,,,,47030,13577,79425,34068,true
1882
1891
  Trifolium cyathiferum,bowl clover,N,,,,,47064,8066,60198,34073,true,Bowl Clover
1883
- Trifolium depauperatum var. depauperatum,dwarf sack clover,N,,,,,67267,8069,64176,52386,true,Dwarf Sack Clover
1884
- Trifolium depauperatum var. truncatum,truncate sack clover,N,,,,,67272,8071,60199,52391,true,Truncate Sack Clover
1892
+ Trifolium depauperatum,sack clover,N,annual,purple,,,47072,8067,58164,34078,true,Cowbag Clover
1893
+ Trifolium depauperatum var. depauperatum,dwarf sack clover,N,annual,purple,3,5,67267,8069,64176,52386,true,Dwarf Sack Clover
1894
+ Trifolium depauperatum var. truncatum,truncate sack clover,N,annual,purple,4,6,67272,8071,60199,52391,true,Truncate Sack Clover
1885
1895
  Trifolium dichotomum,,N,,,,,47076,12099,61179,34079,true,Branched Indian Clover
1886
1896
  Trifolium dubium,little hop clover,X,,,,,47078,8072,53313,34083,true
1887
1897
  Trifolium fragiferum,strawberry clover,X,,,,,47083,8074,58167,34092,true
@@ -1905,15 +1915,15 @@ Trifolium tomentosum,woolly clover,X,,,,,47177,8586,61024,34253,true
1905
1915
  Trifolium variegatum,,N,,,,,47179,8108,57080,34264,true,Whitetip Clover
1906
1916
  Trifolium willdenovii,tomcat clover,N,annual,"purple,white",3,6,47186,8109,57081,34270,true,Tomcat Clover
1907
1917
  Trifolium wormskioldii,cow clover,N,,,,,47188,8110,71146,34272,true,Cows Clover
1908
- Triglochin concinna var. concinna,slender arrow-grass,N,,,,,74018,8112,81439,207972,,Arrow Grass
1909
- Triglochin maritima,seaside arrow-grass,N,,,,,47197,8114,60264,206250,true,Arrowgrass
1910
- Triglochin scilloides,flowering quillwort,N,,,,,91083,12117,79437,204660,Lilaea scilloides,Flowering-quillwort
1911
- Triglochin striata,,N,,,,,47201,8116,79438,206252,true,Three-ribbed Arrow-grass
1918
+ Triglochin concinna var. concinna,slender arrow-grass,N,perennial,,3,8,74018,8112,81439,207972,,Arrow Grass
1919
+ Triglochin maritima,seaside arrow-grass,N,perennial,,,,47197,8114,60264,206250,true,Arrowgrass
1920
+ Triglochin scilloides,flowering quillwort,N,annual,,,,91083,12117,79437,204660,Lilaea scilloides,Flowering-quillwort
1921
+ Triglochin striata,,N,perennial,,,,47201,8116,79438,206252,true,Three-ribbed Arrow-grass
1912
1922
  Trillium chloropetalum,giant trillium,N,,"yellow,pink,purple,white",4,5,47218,8119,50823,206256,true,Giant Wakerobin
1913
1923
  Trillium ovatum,white trillium,N,,,,,47239,8120,49463,206258,true,Western Trillium
1914
1924
  Triodanis biflora,Venus' looking-glass,N,,,,,47267,8126,79440,206266,,Small Venus' Looking-glass
1915
1925
  Triphysaria eriantha subsp. eriantha,butter-and-eggs,N,,,,,53279,8129,59332,96567,true,Butter'n Eggs
1916
- Triphysaria pusilla,,N,,,,,47296,8133,57276,78297,true,Dwarf Owl's-clover
1926
+ Triphysaria pusilla,dwarf owl's clover,N,annual,,4,6,47296,8133,57276,78297,true,Dwarf Owl's-clover
1917
1927
  Triphysaria versicolor subsp. faucibarbata,,N,,,,,53281,8135,60737,206269,true,Triphysaria
1918
1928
  Trisetum canescens,,N,,,,,47326,8139,1538928,150155,true,Tall False Oat
1919
1929
  Triteleia hyacinthina,white brodiaea,N,corm,white,3,7,47356,8154,57132,206275,true,White Brodiaea
@@ -1977,7 +1987,7 @@ Wolffia brasiliensis,,N,,,,,48587,8347,79527,225519,true,Brazilian Watermeal,,20
1977
1987
  Woodwardia fimbriata,giant chain fern,N,,,,,48619,8355,52685,200294,true,Giant Chain Fern
1978
1988
  Wyethia angustifolia,narrowleaf mule-ears,N,,yellow,4,8,5572,8356,56987,206396,true,Narrow Leaf Mule Ears
1979
1989
  Wyethia glabra,mules ears,N,,yellow,3,6,5578,8359,56988,206404,true,Shining Mule Ears
1980
- Wyethia helenioides,woolly mules ears,N,,yellow,3,5,5579,8360,50799,206405,true,Whitehead Wyethia
1990
+ Wyethia helenioides,woolly mules ears,N,,yellow,3,5,5579,8360,50799,206405,true,Gray Mule Ears
1981
1991
  Xanthium orientale,cocklebur,N,,,,,5618,14779,506262,206411,,Cocklebur
1982
1992
  Xanthium spinosum,spiny cocklebur,X,,,,,5590,8366,58045,206414,true
1983
1993
  Yabea microcarpa,California hedge parsley,N,,,,,48745,8373,56847,206426,,California Hedge Parsley
@@ -0,0 +1 @@
1
+ Lowest two to four pairs of leaflets on each blade much smaller than those above.
@@ -0,0 +1 @@
1
+ Evergreen. Leaf edges wavy with sharp teeth. At least 15 flowers in a long raceme. Petals 1-3mm. No leaves at base of flowers. Fruit 12-25mm.
@@ -0,0 +1 @@
1
+ Deciduous. Leaf edges with fine serrations. At least 18 flowers in a long raceme. Petals 4-7mm. Leaves at base of flowers. Fruit 6-14mm.
@@ -1 +1 @@
1
- Sepals deciduous in fruit. Prickles generally straight, not much thicker at base.
1
+ Sepals deciduous in fruit. Hypanthium not glandular, at most 2 mm wide. Prickles generally straight, not much thicker at base.
@@ -0,0 +1 @@
1
+ Sepals persistent in fruit. Hypanthium glandular, 4-5 mm wide. Sepals usually glandular.
@@ -0,0 +1 @@
1
+ Ring of hairs in corolla tube not perpendicular to tube. Bracts on stem get smaller towards top.
@@ -0,0 +1 @@
1
+ Plants usually 10-30 cm tall. Leaves round, 1-2mm wide.
@@ -0,0 +1 @@
1
+ Plants usually at least 40 cm tall. Leaves elliptic, 2-5mm wide.
@@ -1,47 +1,47 @@
1
1
  * {
2
- font-family: Georgia, 'Times New Roman', Times, serif;
2
+ font-family: Georgia, 'Times New Roman', Times, serif;
3
3
  }
4
4
 
5
5
  div.flr {
6
- background-color: lightgray;
7
- display: flex;
8
- align-items: center;
6
+ background-color: #ccc;
7
+ display: flex;
8
+ align-items: center;
9
9
  }
10
10
 
11
11
  div.hdr {
12
- display: flex;
13
- column-gap: 2rem;
14
- row-gap: .5rem;
15
- flex-flow: row wrap;
16
- justify-content: space-between;
12
+ display: flex;
13
+ column-gap: 2rem;
14
+ row-gap: .5rem;
15
+ flex-flow: row wrap;
16
+ justify-content: space-between;
17
17
  }
18
18
 
19
19
  div.section {
20
- margin-bottom: .5rem;
20
+ margin-bottom: .5rem;
21
21
  }
22
22
 
23
23
  div.photos {
24
- display: flex;
24
+ display: flex;
25
25
  }
26
26
 
27
27
  figure {
28
- margin: auto;
28
+ margin: auto;
29
29
  }
30
30
 
31
31
  img.flr-color {
32
- padding-right: .25rem;
33
- width: 1rem;
32
+ padding-right: .25rem;
33
+ width: 1rem;
34
34
  }
35
35
 
36
36
  span.flr-time,
37
37
  span.lc {
38
- font-weight: bold;
38
+ font-weight: bold;
39
39
  }
40
40
 
41
41
  span.lcs {
42
- margin-right: 1rem;
42
+ margin-right: 1rem;
43
43
  }
44
44
 
45
45
  div.glossary img {
46
- width: 100%
46
+ width: 100%
47
47
  }
package/lib/genera.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Config } from "./config.js";
2
2
  import { Files } from "./files.js";
3
3
 
4
- class Genera {
4
+ export class Genera {
5
5
  #families;
6
6
  #genera;
7
7
 
@@ -42,7 +42,7 @@ class Genera {
42
42
  }
43
43
  }
44
44
 
45
- class Genus {
45
+ export class Genus {
46
46
  #data;
47
47
 
48
48
  /**
@@ -65,5 +65,3 @@ class Genus {
65
65
  );
66
66
  }
67
67
  }
68
-
69
- export { Genera };
@@ -15,7 +15,7 @@ export class Family extends Taxonomy {
15
15
  * @param {FamilyData} data
16
16
  */
17
17
  constructor(name, data) {
18
- super({ "jepson id": data.id });
18
+ super(data.id);
19
19
  this.#name = name;
20
20
  this.#data = data;
21
21
  }
@@ -1,6 +1,6 @@
1
1
  import { Taxonomy } from "./taxonomy.js";
2
2
 
3
- class Taxon extends Taxonomy {
3
+ export class Taxon extends Taxonomy {
4
4
  #genera;
5
5
  #name;
6
6
  #genus;
@@ -34,7 +34,7 @@ class Taxon extends Taxonomy {
34
34
  * @param {import("../genera.js").Genera} genera
35
35
  */
36
36
  constructor(data, genera) {
37
- super(data);
37
+ super(data["jepson id"]);
38
38
  this.#genera = genera;
39
39
  const name = data["taxon_name"];
40
40
  const commonNames = data["common name"];
@@ -329,5 +329,3 @@ class Taxon extends Taxonomy {
329
329
  }
330
330
  }
331
331
  }
332
-
333
- export { Taxon };
@@ -1,17 +1,17 @@
1
1
  export class Taxonomy {
2
- #data;
2
+ #jepsonID;
3
3
 
4
4
  /**
5
- * @param {import("../index.js").TaxonomyData} data
5
+ * @param {string} jepsonID
6
6
  */
7
- constructor(data) {
8
- this.#data = data;
7
+ constructor(jepsonID) {
8
+ this.#jepsonID = jepsonID;
9
9
  }
10
10
 
11
11
  /**
12
12
  * @returns {string}
13
13
  */
14
14
  getJepsonID() {
15
- return this.#data["jepson id"];
15
+ return this.#jepsonID;
16
16
  }
17
17
  }
package/lib/tools/cch2.js CHANGED
@@ -34,6 +34,10 @@ export class CCH2 {
34
34
  const idsToUpdate = new Map();
35
35
  for (const taxon of taxa.getTaxonList()) {
36
36
  const name = taxon.getName();
37
+ if (!name.includes(" ")) {
38
+ // Ignore genera.
39
+ continue;
40
+ }
37
41
  const cchTaxon = getCCHTaxon(taxon, cchTaxa);
38
42
  if (!cchTaxon) {
39
43
  if (!exceptions.hasException(name, "cch", "notincch")) {
package/lib/tools/fna.js CHANGED
@@ -2,6 +2,7 @@ import path from "node:path";
2
2
  import { Files } from "../files.js";
3
3
  import { scrape } from "@htmltools/scrape";
4
4
  import { TaxaCSV } from "./taxacsv.js";
5
+ import { Browser } from "../utils/browser.js";
5
6
 
6
7
  /**
7
8
  * @typedef {{name:string}} FNATaxon
@@ -100,12 +101,15 @@ async function getFNATaxa(toolsDataPath) {
100
101
 
101
102
  Files.mkdir(toolsDataPath);
102
103
 
104
+ const browser = new Browser();
105
+
103
106
  // Get list of volumes.
104
107
  const volumePage = path.join(toolsDataPath, "volumes.html");
105
108
  if (!Files.exists(volumePage)) {
106
- await Files.fetch(
109
+ await browser.retrieveFromCloudFlare(
107
110
  "http://floranorthamerica.org/Special:SearchByProperty/:Volume/",
108
111
  volumePage,
112
+ "#catlinks",
109
113
  );
110
114
  }
111
115
 
@@ -118,29 +122,42 @@ async function getFNATaxa(toolsDataPath) {
118
122
 
119
123
  // For each volume, retrieve the JSON.
120
124
  const baseURL =
121
- "http://floranorthamerica.org/Special:Ask/limit=5000/unescape=true/format=json";
125
+ "http://floranorthamerica.org/Special:Ask/limit=5000/unescape=true/format=html";
122
126
  for (const vol of vols) {
123
- const fileName = path.join(toolsDataPath, `${vol}.json`);
124
- if (!Files.exists(fileName)) {
127
+ const fn = `${vol}.html`;
128
+ const fullPath = path.join(toolsDataPath, fn);
129
+ if (!Files.exists(fullPath)) {
125
130
  const url = baseURL + `/-5B-5BVolume::${vol}-5D-5D`;
126
- await Files.fetch(url, fileName);
131
+ await browser.retrieveFromCloudFlare(
132
+ url,
133
+ fullPath,
134
+ ".mw-parser-output",
135
+ );
127
136
  }
128
137
 
129
- const text = Files.read(fileName);
130
- /** @type {{results:Object<string,{}>}} */
131
- const json = JSON.parse(text);
132
- const results = json.results;
138
+ const html = scrape.parseFile(fullPath);
139
+ const linksEl = scrape.getSubtree(
140
+ html,
141
+ (e) => scrape.getAttr(e, "class") === "mw-parser-output",
142
+ );
143
+ if (linksEl === undefined) {
144
+ throw new Error();
145
+ }
146
+ const links = scrape.getSubtrees(linksEl, (e) => e.tagName === "a");
133
147
 
134
148
  // If there are more than 5000 results, this will need to be updated to retrieve chunks.
135
- if (Object.entries(results).length >= 5000) {
149
+ if (Object.entries(links).length >= 5000) {
136
150
  throw new Error(`${vol} has more than 5000 results`);
137
151
  }
138
152
 
139
- for (const [k] of Object.entries(results)) {
140
- fnaTaxa.set(k, { name: k });
153
+ for (const link of links) {
154
+ const name = scrape.getTextContent(link);
155
+ fnaTaxa.set(name, { name: name });
141
156
  }
142
157
  }
143
158
 
159
+ await browser.close();
160
+
144
161
  return fnaTaxa;
145
162
  }
146
163
 
package/lib/tools/inat.js CHANGED
@@ -11,7 +11,9 @@ import { SynCSV } from "./syncsv.js";
11
11
  * phylum:string,
12
12
  * rank:string,
13
13
  * scientificName:string,
14
- * specificEpithet:string
14
+ * genus:string,
15
+ * specificEpithet:string,
16
+ * taxonRank:string
15
17
  * }} INatCSVData
16
18
  */
17
19
 
@@ -76,12 +78,13 @@ export class INat {
76
78
  if (name.includes(" unknown")) {
77
79
  continue;
78
80
  }
81
+ if (exceptions.hasException(name, "inat", "notintaxondata")) {
82
+ continue;
83
+ }
79
84
  const iNatName = taxon.getINatName();
80
85
  const iNatTaxon = this.#taxa[iNatName];
81
86
  if (!iNatTaxon) {
82
- if (!exceptions.hasException(name, "inat", "notintaxondata")) {
83
- errorLog.log(name, "not found in " + csvFileName, iNatName);
84
- }
87
+ errorLog.log(name, "not found in " + csvFileName, iNatName);
85
88
  missingTaxa.push({ name: name, iNatName: iNatName });
86
89
  continue;
87
90
  }
@@ -165,9 +168,18 @@ export class INat {
165
168
  * @param {INatCSVData} record
166
169
  */
167
170
  static #checkTaxon(record) {
168
- if (record["phylum"] === "Tracheophyta" && record["specificEpithet"]) {
169
- const name = record["scientificName"];
170
- INat.#taxa[name] = new InatTaxon(record["id"]);
171
+ if (record["phylum"] === "Tracheophyta") {
172
+ const taxonRank = record["taxonRank"];
173
+ if (
174
+ taxonRank === "genus" ||
175
+ taxonRank === "species" ||
176
+ taxonRank === "subspecies" ||
177
+ taxonRank === "variety" ||
178
+ taxonRank === "hybrid"
179
+ ) {
180
+ const name = record["scientificName"];
181
+ INat.#taxa[name] = new InatTaxon(record["id"]);
182
+ }
171
183
  }
172
184
  }
173
185
 
@@ -205,6 +217,7 @@ export class INat {
205
217
  match.matched_term,
206
218
  result.matched_term,
207
219
  );
220
+ console.log(results);
208
221
  return;
209
222
  }
210
223
  match = result;
@@ -2,6 +2,7 @@ import { scrape } from "@htmltools/scrape";
2
2
  import { Files } from "../files.js";
3
3
  import { SynCSV } from "./syncsv.js";
4
4
  import { TaxaCSV } from "./taxacsv.js";
5
+ import { Browser } from "../utils/browser.js";
5
6
 
6
7
  /**
7
8
  * @typedef {{
@@ -122,6 +123,7 @@ export class JepsonEFlora {
122
123
  }
123
124
 
124
125
  if (
126
+ name.includes(" ") && // Ignore genus names.
125
127
  efStatus !== taxonStatus &&
126
128
  !(taxonStatus === "NC" && efStatus === "N")
127
129
  ) {
@@ -261,19 +263,22 @@ export class JepsonEFlora {
261
263
  }
262
264
 
263
265
  async #loadIndexPages() {
266
+ const browser = new Browser();
264
267
  for (let index = 0; index < 26; index++) {
265
268
  await this.#loadNameIndex(
269
+ browser,
266
270
  String.fromCharCode("A".charCodeAt(0) + index),
267
271
  );
268
272
  }
273
+ await browser.close();
269
274
  }
270
275
 
271
276
  /**
277
+ * @param {Browser} browser
272
278
  * @param {string} firstLetter
273
279
  */
274
- async #loadNameIndex(firstLetter) {
280
+ async #loadNameIndex(browser, firstLetter) {
275
281
  /**
276
- *
277
282
  * @param {string} url
278
283
  * @param {string} targetFile
279
284
  * @returns {Promise<Headers|undefined>}
@@ -284,7 +289,11 @@ export class JepsonEFlora {
284
289
  return;
285
290
  }
286
291
  console.log("retrieving " + targetFile);
287
- await Files.fetch(url, targetFile);
292
+ await browser.retrieveFromCloudFlare(
293
+ url,
294
+ targetFile,
295
+ ".eFloraTable",
296
+ );
288
297
  }
289
298
 
290
299
  const fileName = "index_" + firstLetter + ".html";
@@ -327,25 +336,24 @@ export class JepsonEFlora {
327
336
  continue;
328
337
  }
329
338
 
330
- let type = scrape.getTextContent(cols[2]);
331
- if (!type) {
332
- // Some species are lacking a type; if it's one we're tracking, errors will show elsewhere, so ignore for now.
333
- continue;
334
- }
335
-
336
339
  const linkText = scrape.getTextContent(links[0]);
337
- if (!linkText.includes(" ")) {
338
- // It's a genus name, ignore it.
339
- continue;
340
- }
340
+ const isGenus = !linkText.includes(" ");
341
341
 
342
- if (type.includes(" weed")) {
343
- type = TYPES.WEED;
344
- }
345
- if (!validTypes.includes(type)) {
346
- throw new Error(
347
- "unrecognized type for " + linkText + ": " + type,
348
- );
342
+ let type = scrape.getTextContent(cols[2]);
343
+ if (!isGenus) {
344
+ if (!type) {
345
+ // Some species are lacking a type; if it's one we're tracking, errors will show elsewhere, so ignore for now.
346
+ continue;
347
+ }
348
+
349
+ if (type.includes(" weed")) {
350
+ type = TYPES.WEED;
351
+ }
352
+ if (!validTypes.includes(type)) {
353
+ throw new Error(
354
+ "unrecognized type for " + linkText + ": " + type,
355
+ );
356
+ }
349
357
  }
350
358
 
351
359
  const common = scrape.getTextContent(cols[1]);
@@ -376,7 +384,10 @@ export class JepsonEFlora {
376
384
  case TYPES.WEED:
377
385
  break;
378
386
  default:
379
- continue;
387
+ if (!isGenus) {
388
+ continue;
389
+ }
390
+ break;
380
391
  }
381
392
 
382
393
  if (type === TYPES.SYNONYM) {
@@ -28,6 +28,13 @@ export class SynCSV {
28
28
  return this.#data;
29
29
  }
30
30
 
31
+ /**
32
+ * @param {SynData[]} data
33
+ */
34
+ setData(data) {
35
+ this.#data = data;
36
+ }
37
+
31
38
  write() {
32
39
  this.#data.sort((a, b) => {
33
40
  const former = a.Former.localeCompare(b.Former);
@@ -0,0 +1,44 @@
1
+ import path from "node:path";
2
+ import { CSV } from "../csv.js";
3
+ import { SynCSV } from "./syncsv.js";
4
+
5
+ export class Synonyms {
6
+ /**
7
+ * @param {string} dataDir
8
+ * @param {import("../types.js").Taxa} taxa
9
+ * @param {import("../errorlog.js").ErrorLog} errorLog
10
+ * @param {boolean} update
11
+ */
12
+ static analyze(dataDir, taxa, errorLog, update) {
13
+ /** @type {import("./syncsv.js").SynData[]} */
14
+ const synCSV = CSV.readFile(path.join(dataDir, "synonyms.csv"));
15
+ /** @type {import("./syncsv.js").SynData[]} */
16
+ const newData = [];
17
+
18
+ for (const synData of synCSV) {
19
+ const taxon = taxa.getTaxon(synData.Current);
20
+ if (taxon === undefined) {
21
+ errorLog.log(synData.Current, "is not a valid synonym target");
22
+ continue;
23
+ }
24
+ if (synData.Current === synData.Former) {
25
+ errorLog.log(synData.Current, "has identical former name");
26
+ continue;
27
+ }
28
+ newData.push(synData);
29
+ }
30
+
31
+ if (update) {
32
+ this.#updateSynCSV(newData);
33
+ }
34
+ }
35
+
36
+ /**
37
+ * @param {import("./syncsv.js").SynData[]} newData
38
+ */
39
+ static #updateSynCSV(newData) {
40
+ const csv = new SynCSV("./data");
41
+ csv.setData(newData);
42
+ csv.write();
43
+ }
44
+ }
@@ -0,0 +1,47 @@
1
+ import puppeteer from "puppeteer";
2
+ import { Files } from "../files.js";
3
+
4
+ export class Browser {
5
+ /** @type {puppeteer.Browser|undefined} */
6
+ #browser;
7
+
8
+ async close() {
9
+ if (this.#browser !== undefined) {
10
+ await this.#browser.close();
11
+ }
12
+ }
13
+
14
+ /**
15
+ * @returns {Promise<puppeteer.Page>}
16
+ */
17
+ async getBrowserPage() {
18
+ if (this.#browser === undefined) {
19
+ this.#browser = await puppeteer.launch({
20
+ headless: false,
21
+ args: [
22
+ "--disable-blink-features=AutomationControlled", // Critical: Hides automation flag
23
+ "--no-sandbox", // Required for environments without Chrome sandbox (e.g., Docker)
24
+ "--disable-setuid-sandbox",
25
+ "--window-size=1920,1080", // Realistic viewport
26
+ ],
27
+ defaultViewport: { width: 1920, height: 1080 },
28
+ });
29
+ }
30
+ return this.#browser.newPage();
31
+ }
32
+
33
+ /**
34
+ * @param {string} url
35
+ * @param {string} filePath
36
+ * @param {string} selector
37
+ */
38
+ async retrieveFromCloudFlare(url, filePath, selector) {
39
+ const page = await this.getBrowserPage();
40
+
41
+ await page.goto(url);
42
+
43
+ await page.waitForSelector(selector, { timeout: 30000 });
44
+ Files.write(filePath, await page.content());
45
+ await page.close();
46
+ }
47
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ca-plant-list/ca-plant-list",
3
- "version": "0.4.42",
3
+ "version": "0.4.43",
4
4
  "description": "Tools to create files for a website listing plants in an area of California.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -37,7 +37,7 @@
37
37
  },
38
38
  "dependencies": {
39
39
  "@11ty/eleventy": "^3.1.2",
40
- "@htmltools/scrape": "^0.1.1",
40
+ "@htmltools/scrape": "^0.1.2",
41
41
  "archiver": "^7.0.1",
42
42
  "cli-progress": "^3.12.0",
43
43
  "commander": "^14.0.2",
@@ -51,16 +51,18 @@
51
51
  "unzipper": "^0.12.3"
52
52
  },
53
53
  "devDependencies": {
54
+ "@eslint/js": "^10.0.1",
55
+ "@jest/globals": "^30.3.0",
54
56
  "@types/archiver": "^7.0.0",
55
57
  "@types/cli-progress": "^3.11.6",
56
- "@types/jest": "^30.0.0",
57
58
  "@types/markdown-it": "^14.1.2",
58
- "@types/node": "^25.0.9",
59
+ "@types/node": "^25.5.2",
59
60
  "@types/unzipper": "^0.10.11",
60
- "eslint": "^9.39.2",
61
- "jest": "^30.2.0",
62
- "prettier": "^3.8.0",
63
- "puppeteer": "^24.35.0",
64
- "typescript": "^5.9.3"
61
+ "eslint": "^10.2.0",
62
+ "globals": "^17.4.0",
63
+ "jest": "^30.3.0",
64
+ "prettier": "^3.8.1",
65
+ "puppeteer": "^24.40.0",
66
+ "typescript": "^6.0.2"
65
67
  }
66
68
  }
@@ -16,6 +16,7 @@ import { JepsonFamilies } from "../lib/tools/jepsonfamilies.js";
16
16
  import { CCH2 } from "../lib/tools/cch2.js";
17
17
  import { FNA } from "../lib/tools/fna.js";
18
18
  import { CalIPC } from "../lib/tools/calipc.js";
19
+ import { Synonyms } from "../lib/tools/synonyms.js";
19
20
 
20
21
  const TOOLS = {
21
22
  CALFLORA: "calflora",
@@ -27,6 +28,7 @@ const TOOLS = {
27
28
  JEPSON_EFLORA: "jepson-eflora",
28
29
  JEPSON_FAM: "jepson-families",
29
30
  RPI: "rpi",
31
+ SYNONYNS: "synonyms",
30
32
  TEXT: "text",
31
33
  };
32
34
 
@@ -39,6 +41,7 @@ const ALL_TOOLS = [
39
41
  TOOLS.INAT,
40
42
  TOOLS.JEPSON_EFLORA,
41
43
  TOOLS.RPI,
44
+ TOOLS.SYNONYNS,
42
45
  TOOLS.TEXT,
43
46
  ];
44
47
 
@@ -153,6 +156,14 @@ async function build(program, options) {
153
156
  !!options.update,
154
157
  );
155
158
  break;
159
+ case TOOLS.SYNONYNS:
160
+ Synonyms.analyze(
161
+ options.datadir,
162
+ taxa,
163
+ errorLog,
164
+ !!options.update,
165
+ );
166
+ break;
156
167
  case TOOLS.TEXT:
157
168
  SupplementalText.analyze(taxa, errorLog);
158
169
  break;
@@ -192,6 +203,7 @@ Tools:
192
203
  '${TOOLS.JEPSON_EFLORA}' retrieves data from Jepson eFlora indexes and compares with local data.
193
204
  '${TOOLS.JEPSON_FAM}' retrieves section, family and genus data from Jepson eFlora and creates data files for use by ca-plant-list.
194
205
  '${TOOLS.RPI}' retrieves data from the CNPS Rare Plant Inventory and compares with local data.
206
+ '${TOOLS.SYNONYNS}' checks that synonyms are valid.
195
207
  '${TOOLS.TEXT}' checks supplemental text files to make sure their names are referenced.
196
208
  `,
197
209
  );
@@ -1,3 +0,0 @@
1
- #!/bin/bash
2
-
3
- npm publish --access public