Faits :
A.
A._ est propriétaire de la parcelle n° 508 de la commune de Cossonay. Cette parcelle de 2'284 m2 se trouve dans le hameau d'Allens et est comprise dans le plan partiel d'affectation de la zone du village d'Allens (PPA). Elle supporte, en sa partie sud, une ancienne maison d'habitation de 239 m2, dont le faîte est orienté nord-sud. Au nord de cette maison, dans l'espace de jardin, A._ a construit un nouveau bâtiment d'habitation de cinq logements, sur la base d'un permis de construire délivré par la Municipalité de Cossonay le 20 octobre 2016. Le faîte de ce nouveau bâtiment est orienté est-ouest.
Le 14 septembre 2017, A._ a présenté à la municipalité un projet portant sur la démolition de l'ancienne maison d'habitation et la construction de deux bâtiments de cinq logements chacun, l'un au centre de la parcelle, l'autre au sud. Le projet prévoit que les faîtes ont une orientation est-ouest sans être tout à fait parallèles l'un à l'autre, ni au bâtiment déjà érigé; les pans sud des toitures sont recouverts de panneaux photovoltaïques. La constructrice entend satisfaire au standard passif du label Minergie-A. Un couvert pour véhicules de 138,6 m2, à toiture plate végétalisée, est prévu le long de la limite est de la parcelle, accolé au couvert déjà autorisé en 2016.
La Commission communale consultative en matière d'architecture et d'urbanisme (CCCUA), s'était prononcée négativement sur un premier projet, légèrement différent, présenté en février 2017. Celle-ci avait notamment considéré que l'orientation des faîtes - reprise dans le projet mis à l'enquête - ne respectait pas le règlement communal et que, cumulés au bâtiment déjà existant, ces deux immeubles supplémentaires dénaturaient le site et cassaient l'harmonie du bâti existant. Elle jugeait en outre "un peu cavalier" de la part du promoteur de ne pas avoir présenté le projet complet d'emblée, auquel cas elle aurait probablement refusé directement le projet global des trois bâtiments.
B.
Le 20 juin 2018, la municipalité a communiqué à la constructrice sa décision de refuser le permis de construire, ce dont les opposants au projet ont été informés le lendemain.
Statuant sur recours de la constructrice après avoir notamment procédé à une inspection locale et une audience d'instruction, la Cour de droit administratif et public du Tribunal cantonal vaudois (CDAP) a confirmé cette décision par arrêt du 12 septembre 2019.
C.
Agissant par la voie du recours en matière de droit public, A._ demande au Tribunal fédéral de réformer l'arrêt attaqué en ce sens que le permis de construire est octroyé. Subsidiairement, elle conclut à l'annulation de l'arrêt cantonal et au renvoi de la cause à la CDAP pour nouvelle décision dans le sens des considérants.
La cour cantonale renonce à se déterminer et se réfère aux considérants de son arrêt. La commune dépose une réponse et conclut au rejet du recours. La recourante réplique et persiste dans ses conclusions.
Considérant en droit :
1.
Le recours est formé contre un arrêt final rendu en dernière instance cantonale, dans une cause de droit public. Il est recevable au regard des art. 82 let. a, 86 al. 1 let. d et 90 LTF. La recourante, propriétaire de la parcelle litigieuse et requérante du permis de construire refusé, est particulièrement touchée par l'arrêt attaqué et a un intérêt digne de protection à l'annulation ou la modification de celui-ci au sens de l'art. 89 al. 1 LTF.
Les autres conditions de recevabilité sont réunies, si bien qu'il y a lieu d'entrer en matière sur le recours.
2.
La cour cantonale a procédé à deux examens distincts de la situation selon les normes appliquées. Elle a dans un premier temps (arrêt attaqué, consid. 2b) contrôlé l'interprétation de l'art. 5.10 al. 2 du règlement communal sur le plan général d'affectation et la police des constructions (RPGA) faite par la commune à la lumière de l'autonomie communale consacrée par l'art. 50 al. 1 Cst. Confirmant cette interprétation, elle en a conclu que le projet n'était pas conforme à la disposition réglementaire s'agissant de l'orientation des faîtes. Toujours dans cette partie du raisonnement, mais dans une sorte de motivation subsidiaire (arrêt attaqué, consid. 2c), la CDAP a avalisé l'appréciation de l'esthétique du projet par la commune, compétente en vertu de l'art. 86 de la loi vaudoise du 4 décembre 1985 sur l'aménagement du territoire et les constructions (LATC; RSV 700.11) sur cette question. Dans un second temps (arrêt attaqué, consid. 3), la CDAP a fait l'examen des possibilités d'accorder une dérogation en vertu des art. 85 LATC et 27.10 RPGA, dispositions topiques en la matière, en particulier à la lumière de l'art. 18a LAT (RS 700), pour un projet jugé non conforme au règlement communal. Elle a considéré qu'en l'espèce les conditions à l'octroi d'une dérogation n'étaient pas réunies.
3.
La recourante fait valoir une violation de l'art. 18a LAT ainsi qu'une application arbitraire des art. 97 al. 2 LATC, 29 de la loi vaudoise du 16 mai 2006 sur l'énergie (LVLEne; RSV 730.01) et 18 al. 1 du règlement d'application de la loi vaudoise sur l'énergie (RLVLEne; RSV 730.01.1), ainsi que 5.10 al. 2 et 27.19 RPGA. La cour cantonale aurait à tort confirmé le refus du projet pour des motifs d'esthétique, à savoir que les faîtes des toitures des bâtiments projetés sont orientés est-ouest.
3.1.
3.1.1. A teneur de l'art. 18a al. 4 LAT, l'intérêt à l'utilisation de l'énergie solaire sur des constructions existantes ou nouvelles l'emporte en principe sur les aspects esthétiques.
Cette disposition est directement applicable (JÄGER, in Commentaire pratique LAT: Autorisations de construire, protection juridique et procédure, 2020, n° 7 ad art. 18a LAT; cf. également PIGUET/DYENS, Analyse critique de l'art. 18a LAT révisé: genèse, conditions d'application et portée, RDAF 2014 I p. 502). Elle s'applique partout où il faut apprécier, à l'occasion d'une demande d'autorisation de construire comprenant une installation solaire, des questions relevant notamment de l'intégration architecturale ou de l'application de clauses générales d'esthétique de la législation cantonale ou communale en matière de constructions (JÄGER, op. cit., n° 60). Mais également lorsqu'il est question d'interpréter une notion juridique indéterminée ( ibidem, n° 61). Cette règle a pour conséquence qu'en cas de pesée des intérêts, celui à promouvoir l'énergie solaire l'emporte en principe. Le refus de l'autorisation de construire pour des considérations esthétiques n'est dès lors admissible que dans des cas très exceptionnels et devra être particulièrement bien justifié par la présentation et la discussion des intérêts opposés jugés prépondérants dans le cas concret, une mention générale ("mauvaise intégration" ou "nuit à l'apparence") ne suffisant pas ( ibidem, n° 61). Aussi, si le droit cantonal ou communal peut encore imposer au constructeur, à production et rendements énergétiques comparables, de choisir l'option la moins dommageable sur le plan de l'esthétique, ce droit cantonal ou communal ne peut condamner une utilisation conséquente de l'énergie solaire pour des seuls motifs d'esthétique (CAVIEZEL/FISCHER, in Öffentliches Baurecht, 2016, n° 3.91 p. 124; HETTICH/PENG, Erleichterte Bewilligung von Solaranlagen in der Rechtspraxis: gut gemeint, wenig effektiv und verfassungsrechtlich fragwürdig, AJP/PJA 10 2015 p. 1432; PIGUET/DYENS, op. cit., p. 532; cf. également JÄGER, op. cit., n° 62). En d'autres termes, l'art. 18a al. 4 LAT restreint la marge d'appréciation des autorités délivrant les autorisations de construire (JÄGER, op. cit., n° 61)
La constitutionnalité de l'art. 18a LAT est sujette à discussion dans la doctrine, l'aménagement du territoire incombant, en vertu de l'art. 75 al. 1 Cst., aux cantons (cf. HETTICH/PENG, op. cit., p. 1433 s.; PIGUET/DYENS, op. cit., p. 532). Cela étant, à teneur de l'art. 89 al. 2 Cst., la Confédération fixe les principes applicables à l' utilisation des énergies indigènes et des énergies renouvelables et à la consommation économe et rationnelle de l'énergie. Aussi, quand bien même ses compétences législatives sont limitées dans ce domaine également, la Confédération peut, à titre exceptionnel, édicter des dispositions concrètes applicables dans le cas d'espèce lorsqu'elles sont nécessaires à la réalisation d'intérêts essentiels (Message du 4 septembre 2013 relatif au premier paquet de mesures de la Stratégie énergétique 2050 [Révision du droit de l'énergie] et à l'initiative populaire fédérale "Pour la sortie programmée de l'énergie nucléaire [Initiative ‹Sortir du nucléaire›]"; FF 2013 6959 ch. 8.1.1). On peut concevoir que tel soit le cas s'agissant de l'importance à donner à la production d'énergie solaire autonome en matière de constructions. Cette question n'a pas à être résolue en l'occurrence, le Tribunal fédéral ne contrôlant pas la constitutionnalité des lois (art. 190 Cst.; JÄGER, Installations solaires - Un premier commentaire du nouvel article 18a LAT, Territoire & Environnement 6/2014 p. 2).
3.1.2. L'art. 97 al. 2 LATC prévoit que, dans l'élaboration et l'application des plans d'affectation, la municipalité favorise l'utilisation rationnelle de l'énergie et le recours aux énergies renouvelables. En vertu de l'art. 29 LVLEne, les communes encouragent l'utilisation des énergies renouvelables; elles créent des conditions favorables à leur exploitation et peuvent accorder des dérogations aux règles communales à cette fin. Enfin, l'art 18 al. 1 RLVLEne prescrit qu'en tenant compte des intérêts publics en présence, les bâtiments sont conçus de manière à favoriser l'utilisation de l'énergie solaire, notamment par l'orientation de la construction, la répartition et la proportion des ouvertures vitrées, ainsi que par le choix des matériaux.
3.1.3. Au niveau communal, l'art. 5.10 al. 2 RPGA prévoit que "l'orientation dominante des faîtes et les pentes des toitures anciennes seront respectées".
3.1.4. Selon l'art. 50 al. 1 Cst., l'autonomie communale est garantie dans les limites fixées par le droit cantonal. En droit cantonal vaudois, les communes jouissent d'une autonomie consacrée, s'agissant de l'aménagement local du territoire, par l'art. 139 al. 1 let. d Cst-VD (ATF 115 Ia 114 consid. 3d p. 118 s.; arrêts 1C_365/2010 du 18 janvier 2011 consid. 2.1, in Pra 2011 n° 60 p. 428, non publié in ATF 137 II 23; 1C_424/2014 26 du mai 2015 in RDAF 2015 I p. 474). L'art. 86 al. 1 LATC confie à la municipalité le rôle de veiller à l'aspect architectural et l'intégration des constructions dans l'environnement. Le droit cantonal ne contient aucune disposition définissant l'orientation ou l'aspect des toitures. Ces domaines ressortissent par conséquent du droit communal qui, dans cette mesure, peut être qualifié d'autonome (arrêt 1C_499/2017 du 19 avril 2018 consid. 3.1.1; 1C_452/2016 du 7 juin 2017 consid. 3.1.1; 1C_92/2015 du 18 novembre 2015 consid. 3.1.2).
Lorsque, statuant sur une demande d'autorisation de construire, l'autorité communale interprète son règlement en matière de police des constructions et apprécie les circonstances locales, elle bénéficie d'une liberté d'appréciation particulière, que l'instance cantonale de recours contrôle avec retenue (cf. art. 3 al. 2 LAT). Une autorité de recours ne peut ainsi pas choisir entre plusieurs solutions disponibles et appropriées ou remplacer une appréciation adéquate de la commune par sa propre appréciation (AEMISEGGER/HAAG, in Commentaire pratique LAT: Autorisations de construire, protection juridique et procédure, 2020, n° 84 ad art. 33 LAT). Elle ne doit cependant pas seulement intervenir lorsque l'appréciation de l'instance précédente est insoutenable, auquel cas l'étendue de son pouvoir d'examen s'apparenterait à un contrôle limité à l'arbitraire, ce qui serait contraire à l'art. 33 al. 3 let. b LAT (ATF 145 I 52 consid. 3.6 p. 58). Conformément aux art. 46 et 49 Cst., l'autorité de recours doit en particulier sanctionner l'appréciation communale lorsque celle-ci contrevient au droit supérieur (ATF 145 I 52 consid. 3.6 p. 59; 138 I 305 consid. 1.4.3 p. 311; arrêt 1C_ 279/2019 du 9 avril 2020 consid. 2.1; arrêt 1C_450/2018 du 11 décembre 2019 consid. 3.1.3). Sur des éléments susceptibles de heurter le droit supérieur, il appartient à la commune de motiver soigneusement sa décision (arrêts 1C_540/2016 du 25 août 2017 consid. 2.2, in JdT 2017 I p. 303; 1C_450/2018 du 11 décembre 2019 consid. 3.1.3; 1C_641/2018 du 23 septembre 2019 consid. 3.1.3;). Le contrôle de l'opportunité s'exerce donc avec retenue sur des points concernant principalement des intérêts locaux, tandis que, au contraire, la prise en considération adéquate d'intérêts d'ordre supérieur, dont la sauvegarde incombe au canton, doit être imposée par un contrôle strict. L'autorité intervient ainsi non seulement lorsque la mesure d'aménagement retenue par la commune est insoutenable, mais aussi lorsqu'elle paraît inappropriée à des intérêts qui dépassent la sphère communale (ATF 145 I 52 consid. 3.6 p. 58 s.; AEMISEGGER/HAAG, ibidem).
3.1.5. Le Tribunal fédéral revoit librement l'interprétation et l'application du droit fédéral et du droit constitutionnel cantonal (art. 95 LTF). Il examine en revanche sous l'angle restreint de l'arbitraire l'interprétation et l'application des autres règles du droit cantonal ou communal (ATF 141 I 36 consid. 5.4 p. 43; 138 V 67 consid. 2.2 p. 69; 134 II 349 consid. 3 p. 351).
3.2. On peut se demander si l'art. 18a al. 4 LAT a pour portée de proscrire une réglementation cantonale ou communale qui, pour des seuls motifs d'esthétique, va systématiquement à l'encontre de l'intérêt à l'utilisation de l'énergie solaire. Tel serait en effet le cas d'une disposition de police des constructions qui, comme les instances précédentes l'ont retenu en l'espèce, imposerait sans réserve une orientation nord-sud de faîtes de toitures, excluant de facto tout pan de toiture orienté vers le sud qui, équipé d'installations solaires, permet pourtant à l'évidence un meilleur rendement énergétique qu'avec toute autre orientation. Cela semble être l'interprétation qu'en font certains auteurs ("on ne saurait admettre qu'une loi cantonale vienne faire échec à la balance des intérêts prévue à l'art. 18a al. 4 LAT" PIGUET/DYENS, op. cit., p. 532). Sans se prononcer sur une éventuelle portée aussi étendue de l'art. 18a al. 4 LAT en l'état, le Tribunal fédéral constate que l'application de cette disposition a en l'occurrence quoi qu'il en soit été omise à tort par la cour cantonale.
3.2.1. S'agissant de l'interprétation de l'art. 5.10 RPGA, la cour cantonale s'est contentée de s'assurer que la lecture que la commune faisait de son règlement n'était "pas insoutenable". Elle a ainsi limité son contrôle à l'arbitraire, alors que, comme on va le voir ci-dessous, des intérêts protégés par le droit fédéral justifiaient un contrôle plus conséquent. Ce faisant, l'arrêt cantonal viole l'art. 33 al. 3 let. b LAT.
3.2.2. Sur le plan matériel, la commune, et à sa suite la CDAP, s'est fondée sur la lettre de la disposition, à savoir une formulation au singulier de "l'orientation dominante" des faîtes, pour considérer que seule l'orientation majoritaire à l'exclusion de toute autre orientation, aussi répandue fût-elle, était visée par la disposition réglementaire. Vu le décompte effectué par la CCCUA de 27 toitures orientées nord-sud et de 21 toitures orientées est-ouest, cela signifiait que l'orientation nord-sud était l'orientation dominante imposée par l'art. 5.10 al. 2 du RPGA. Tel n'étant pas le cas de l'orientation des faîtes est-ouest des constructions projetées, celles-ci ne pouvaient être admises.
A ce stade, la cour cantonale, à l'instar de la commune, n'a pas du tout pris en considération l'art. 18a al. 4 LAT. Or, le règlement communal posant un problème d'interprétation, les autorités concernées devaient intégrer les prescriptions du droit fédéral dans leur réflexion. Ceci est d'autant plus nécessaire lorsque, comme en l'occurrence, les motifs sur lesquels elles entendent fonder l'interprétation du règlement sont de faible consistance: en effet, la cour cantonale reconnaît elle-même que l'orientation des faîtes nord-sud n'est que légèrement majoritaire - il est question ici d'une proportion de 56 contre 44 %; quant à l'utilisation du singulier dans l'expression "orientation dominante", elle n'est pas mise en perspective avec d'autres indices à prendre en considération dans une interprétation littérale, comme le choix du recours à cette formulation abstraite plutôt que la mention expresse et non ambiguë des points cardinaux eux-mêmes, si l'on doit reconnaître qu'une seule orientation est prescrite. En bref, l'interprétation littérale n'étant que peu convaincante en l'espèce, l'autorité communale, respectivement la CDAP lors du contrôle judiciaire, devait prendre en considération les dispositions du droit fédéral pertinentes pour s'assurer d'une interprétation du droit communal conforme au droit supérieur. L'arrêt attaqué mentionne également dans son état de fait le but du PPA, exprimé dans le rapport 47 OAT, de protéger le bâti traditionnel de ce secteur. Or, dans les proportions recensées par l'autorité communale, il n'est pas manifeste que l'orientation des faîtes nord-sud, à l'exclusion des faîtes est-ouest, soit une composante du bâti traditionnel du hameau. Enfin, comme on le verra ci-après, vu la façon dont la commune met l'accent sur la problématique de l'alignement que créeraient les trois bâtiments de la parcelle, on peut douter de la cohérence de l'interprétation de l'art. 5.10 RPGA à la faveur d'une unique orientation de faîtes. En effet, le préavis de la CCCUA relevait que ces trois bâtiments "dans une surface aussi petite péjor[ait] l'intégration et dénatur[ait] le site" et que leur "même orientation de faîte cass[ait] l'harmonie du bâti existant". Or, si la recourante avait conçu le présent projet, ainsi que le bâtiment déjà érigé sur la parcelle, selon l'interprétation du règlement défendue par la commune, ce seraient trois bâtiments alignés avec des faîtes orientés nord-sud qui seraient en cause. Dans ce cas de figure, les critiques de fond de la CCCUA et de la commune quant à un alignement trop massif de bâtiments, qui relèvent en réalité de l'esthétique (cf. consid. 4.2 ci-dessous), demeureraient. Cette appréciation révèle qu'apparemment la commune souhaite plutôt favoriser une diversité des orientations de toiture entre les deux orientations observées dans le hameau et éviter de tels alignements de structures aux orientations similaires. Or un tel objectif ne pourrait manifestement pas être atteint avec une disposition réglementaire ne prescrivant qu'une unique orientation de faîtes.
A l'inverse, il ressort de l'arrêt attaqué que, selon les dires de la constructrice, l'édification des bâtiments avec des faîtes orientés est-ouest permet d'optimiser la production d'énergie solaire hivernale au point d'atteindre l'autonomie énergétique indispensable pour la certification Minergie-A. Une orientation nord-sud ferait baisser cette production de 30 %. A l'évidence, l'interprétation du règlement communal comporte des enjeux qui tombent sous le coup de l'art. 18a al. 4 LAT. Selon le sens donné à l'art. 5.10 al. 2 RPGA, le potentiel de production d'énergie solaire d'un bâtiment varierait, si les allégations de la constructrice sont confirmées, de 30 % et permettrait, ou non, de passer le cap de l'autonomie énergétique. On peut présumer que si tel est le cas pour les deux bâtiments litigieux, ceci est valable pour toute éventuelle construction dans le hameau d'Allens. Dans de telles circonstances, l'interprétation de l'art. 5.10 al. 2 RPGA à la lumière du droit supérieur - en l'occurrence l'art. 18a al. 4 LAT - doit être celle qui fait prévaloir les intérêts à l'utilisation de l'énergie solaire sur les aspects esthétiques. Il y a ainsi lieu de comprendre le règlement communal comme enjoignant une orientation nord-sud ou est-ouest des faîtes.
La CDAP se réfère en grande partie à l'arrêt 1C_92/2015 du Tribunal fédéral du 18 novembre 2015 pour justifier la décision communale. Dans cette affaire de 2015, le Tribunal fédéral a annulé l'arrêt cantonal qui octroyait le permis de construire refusé par la commune pour un bâtiment à toiture semi-arrondie, cette forme étant supposée permettre l'utilisation de capteurs solaires sur le côté nord, alors que le côté sud, entièrement vitré jusqu'au sommet du bâtiment devait permettre un captage passif de l'énergie solaire. La CDAP avait invité les parties à se déterminer sur l'application de l'art. 18a LAT (arrêt de la CDAP AC.2013.0151 du 31 décembre 2014 consid. cc), mais, quand bien même l'arrêt a finalement annulé le refus d'autorisation de construire, elle n'avait ensuite pas intégré cette disposition à son raisonnement. L'arrêt du Tribunal fédéral ne s'y réfère pas non plus. Quoi qu'il en soit, cet arrêt est antérieur à l'ATF 145 I 52, repris dans des causes concernant le canton de Vaud (arrêt 1C_ 279/2019 du 9 avril 2020 consid. 2.1; arrêt 1C_450/2018 du 11 décembre 2019 consid. 3.1.3), qui a clarifié la portée de l'autonomie communale en ce sens qu'elle ne restreint pas le pouvoir d'examen du juge cantonal à l'arbitraire, alors que cet arrêt 1C_92/2015 laissait plutôt entendre le contraire. L'analogie avec ce cas n'est donc pas judicieuse en l'espèce.
La recourante expose encore qu'au contraire d'une orientation de faîtes est-ouest, l'ombre portée d'éventuels nouveaux bâtiments aux faîtes orientés nord-sud affecterait le rendement énergétique (la recourante évoque une perte de 25%) des installations solaires en toiture du bâtiment déjà construit. Peu intuitive, une telle information, si elle était confirmée, renforcerait d'autant ce qui précède. Elle se rapporte néanmoins aux seules spécificités du projet litigieux et non à l'application plus générale du règlement communal de sorte qu'elle aurait plutôt été pertinente dans le contexte de l'octroi d'une dérogation et pourra cas échéant l'être dans le cadre de l'examen de l'esthétique du projet (cf. consid. 4 ci-dessous). Cette question, vu l'interprétation de l'art. 5.10 RPGA permettant deux orientations de faîtes, ne se pose en tout état pas à ce stade.
4.
Une fois la conformité du projet au règlement constatée, se pose encore la question de l'esthétique de la construction. La recourante se plaint d'une application arbitraire de l'art. 86 LATC à cet égard.
4.1. L'art. 86 LATC prescrit que la municipalité veille à ce que les constructions, quelle que soit leur destination, ainsi que les aménagements qui leur sont liés, présentent un aspect architectural satisfaisant et s'intègrent à l'environnement (al. 1); celle-ci refuse le permis pour les constructions ou les démolitions susceptibles de compromettre l'aspect et le caractère d'un site, d'une localité, d'un quartier ou d'une rue, ou de nuire à l'aspect d'un édifice de valeur historique, artistique ou culturelle (al. 2). Les règlements communaux doivent en outre contenir des dispositions en vue d'éviter l'enlaidissement des localités et de leurs abords (art. 86 al. 3 LATC).
4.2. En l'espèce, la cour cantonale a considéré qu'elle n'avait aucun motif de s'écarter de l'appréciation de l'autorité intimée et de son organe spécialisé. Elle a constaté que le projet, qui créerait une succession de trois bâtiments massifs implantés parallèlement à la route, aux façades similaires, avec des distances égales entre eux, modifierait de manière significative la vue que l'on a sur le hameau lorsque l'on y pénètre par l'ouest. La CDAP a pour le surplus retranscrit le détail d'une note rédigée par un membre de la CCCUA à son intention, qui évoque notamment la pente atypique de la toiture ainsi que la démolition du bâtiment existant au faîte orienté nord-sud.
La problématique du caractère massif du projet est effectivement légitime sous l'angle des considérations esthétiques. Cela étant, tant la commune que la cour cantonale ont, dans le cadre de leur appréciation de l'esthétique, corrélé ce caractère massif à la seule question de l'orientation des faîtes. Le projet doit donc désormais être apprécié dans l'idée que l'orientation des faîtes - et donc l'orientation parallèle décriée des bâtiments - est conforme à la réglementation communale. Au contraire de ce qu'ont fait les instances précédentes, l'appréciation de l'esthétique au sens de l'art. 86 LATC doit par ailleurs également se faire dans le respect de l'art. 18a al. 4 LAT. Cela ne signifie pas que l'autorité communale doive approuver tout projet comportant une installation solaire en toiture et quelle que soit son esthétique. Cela signifie que les aspects du projet qui sont justifiés par le recours à l'énergie solaire ne sauraient, en principeet sauf alternative raisonnable, être condamnés pour des motifs d'esthétique. En l'occurrence, le caractère massif résulte apparemment également d'autres facteurs, tels que le degré d'utilisation du sol, les hauteurs, les implantations rapprochées notamment.
Il y a par conséquent lieu de renvoyer le dossier aux instances précédentes pour nouvel examen de l'esthétique du projet à la lumière de ce qui précède.
5.
Enfin, la recourante dénonce une application arbitraire des art. 5.8 al. 1 et 4 RPGA.
L'art. 5.8 al. 1 RPGA prévoit que les toitures seront recouvertes de tuiles plates du pays, anciennes ou modernes, dont la couleur correspondra à celles des toitures traditionnelles de la localité; les tuiles vieillies sont proscrites; l'angle d'inclinaison sera compris entre 30 et 45 degrés. L'art. 5.8 al. 4 RPGA précise que d'autres formes de toiture peuvent être autorisées pour les dépendances.
Alors que la commune prétendait que, vu ses dimensions, le couvert à véhicules ne serait pas une dépendance, que partant l'art. 5.8 al. 4 RPGA n'était pas applicable et qu'en conséquence la toiture plate et végétalisée du couvert projeté ne pouvait être autorisée, la cour cantonale a considéré que le litige ne portait plus sur cette question puisque la recourante était prête à modifier le couvert dans le sens d'une toiture traditionnelle telle que le prévoit le règlement.
La recourante ne remet pas en cause cette constatation de la CDAP. Elle ne dément pas s'être dite prête à consentir à la modification précitée. Elle expose simplement que "si par impossible, la décision de la CDAP ne devait pas être confirmée sur ce point, il faudrait retenir une application arbitraire de l'art. 5.8 al. 1 RPGA par la municipalité. Elle détaille ensuite longuement les raisons pour lesquelles l'appréciation de la commune serait arbitraire. Mais à aucun moment la recourante n'explique en quoi les constatations de la cour cantonale quant à l'accord donné pour la modification du projet s'agissant de la toiture du couvert à voiture seraient arbitraires. Ce grief est par conséquent insuffisamment motivé (art. 106 al. 2 LTF) et doit être écarté.
6.
Il résulte de ce qui précède que le recours doit être admis, et la cause renvoyée à la cour cantonale pour nouvelle décision dans le sens des considérants.
Le présent arrêt est rendu sans frais (art. 66 al. 4 LTF). La recourante, qui obtient gain de cause avec l'aide d'un avocat, a droit à des dépens (art. 68 al. 1 LTF).
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est admis. L'arrêt attaqué est annulé. La cause est renvoyée à la Cour de droit administratif et public du Tribunal cantonal du canton de Vaud pour nouvelle décision dans le sens des considérants.
2.
Il n'est pas perçu de frais judiciaires.
3.
Une indemnité de dépens de 3'000 francs est accordée à la recourante, à la charge de la Commune de Cossonay.
4.
Le présent arrêt est communiqué aux mandataires de la recourante et de la Municipalité de Cossonay ainsi qu'au Tribunal cantonal du canton de Vaud, Cour de droit administratif et public.
Lausanne, le 3 juin 2020
Au nom de la Ire Cour de droit public
du Tribunal fédéral suisse
Le Président : Chaix
La Greffière : Sidi-Ali