Faits :
A.
Par ordonnance pénale du 23 avril 2018, le Ministère public genevois a condamné A._ et B._ pour voies de fait, commises lors d'une altercation qui a opposé les deux femmes le 9 novembre 2017.
B.
Statuant le 14 août 2019 sur opposition de A._, le Tribunal de police genevois a acquitté celle-ci et débouté de ses conclusions civiles B._, qui n'avait pas formé opposition contre sa propre condamnation.
C.
Par arrêt du 22 avril 2020 la Chambre pénale d'appel et de révision de la Cour de justice genevoise a admis l'appel formé par B._ contre le jugement du Tribunal de police, qu'elle a annulé. Statuant à nouveau, elle a reconnu A._ coupable de voies de fait et l'a condamnée à une amende de 200 fr., la peine privative de liberté de substitution étant fixée à 2 jours.
Les faits à l'origine de cette condamnation sont en substance les suivants.
Au matin du 9 novembre 2017, A._, qui circulait au volant de son automobile, et B._, à pied, ont eu une première altercation à un passage pour piétons, celle-ci accusant celle-là d'avoir manqué de la renverser. Après un échange d'injures au cours duquel elle avait notamment traité son antagoniste de " pute ", A._ a poursuivi sa route pour se garer. Une fois sortie de sa voiture, elle a vu B._ se diriger vers elle. Elles ont eu une brève conversation. Une gifle a été assénée par la conductrice et un coup de poing par son adversaire, laquelle a alors saisi les cheveux de A._ pour la mettre au sol avant de la frapper de ses pieds puis de se placer au-dessus de son corps et de la taper avec les mains. A._ lui a donné un coup de pied pour se dégager. Une passante est alors intervenue en leur criant d'arrêter. B._ s'est exécutée et est partie en criant des insultes.
A._ et B._ ont toutes deux déposé plainte, la première le jour même des faits et la seconde le 27 décembre 2017, postérieurement à son audition par la police.
D.
A._ forme un recours en matière pénale au Tribunal fédéral contre l'arrêt de la Chambre pénale d'appel et de révision. Elle conclut, avec suite de frais et dépens, à l'annulation de l'arrêt attaqué et principalement à ce que l'intimée soit déboutée de toutes ses conclusions en appel, le jugement du Tribunal de police étant confirmé intégralement. Subsidiairement, elle conclut au renvoi de la cause à la cour cantonale pour qu'elle statue à nouveau.
E.
Invitée à se déterminer, la cour cantonale a indiqué n'avoir pas d'observations à formuler et persister dans son arrêt; pour sa part le ministère public, faisant siens les considérants de l'arrêt attaqué, a conclu au rejet du recours. Enfin, l'intimée conclut à ce que la recourante soit déboutée de toutes ses conclusions.

Considérant en droit :
1.
La recourante se plaint de ce que les faits auraient été constatés de manière manifestement inexacte au sens de l'<ref-law>, respectivement arbitraire au sens de l'art. 9 Cst.
1.1. Le Tribunal fédéral est lié par les constatations de fait de la décision entreprise (<ref-law>), à moins qu'elles n'aient été établies en violation du droit ou de manière manifestement inexacte au sens des art. 97 al. 1 et 105 al. 2 LTF, soit pour l'essentiel de façon arbitraire au sens de l'art. 9 Cst. Une décision n'est pas arbitraire du seul fait qu'elle apparaît discutable ou même critiquable; il faut qu'elle soit manifestement insoutenable et cela non seulement dans sa motivation mais aussi dans son résultat.
Le Tribunal fédéral n'entre en matière sur les moyens fondés sur la violation de droits fondamentaux, dont l'interdiction de l'arbitraire, que s'ils ont été invoqués et motivés de manière précise (<ref-law>); il n'entre ainsi pas en matière sur les critiques de nature appellatoire (<ref-ruling> consid. 1.3.1 p. 92 et les arrêts cités).
1.2. La cour cantonale a considéré que, contrairement à ce qu'avait retenu le tribunal de police, il ressort du dossier que la recourante avait cherché, par sa gifle, à se venger du coup qui venait de lui être porté dans le cadre du conflit qui avait surgi peu auparavant et pour lequel elle portait une part de responsabilité.
1.3. La recourante invoque l'<ref-law>, selon lequel lorsque seules des contraventions ont fait l'objet de la procédure de première instance, l'appel ne peut être formé que pour le grief que le jugement est juridiquement erroné ou que l'état de fait a été établi de manière manifestement inexacte ou en violation du droit, et fait valoir que l'arrêt attaqué n'explique pas en quoi il était arbitraire de considérer que la gifle litigieuse était un moyen de défense et non un acte de vengeance.
1.4. L'infraction en cause, voies de fait (<ref-law>), constitue une contravention, de sorte que l'<ref-law> trouve application. Il découle de cette disposition que le pouvoir d'examen de la cour d'appel est limité à l'arbitraire en ce qui concerne l'établissement des faits (cf. p. ex. arrêt 6B_426/2019 du 31 juillet 2019 consid. 1.1).
Selon une jurisprudence constante, déterminer ce qu'une personne a su, envisagé, voulu ou accepté relève du contenu de sa pensée, à savoir de faits " internes ", partant, des constatations de fait (cf. <ref-ruling> consid. 12 p. 152; <ref-ruling> consid. 6.3 p. 375).
1.5. La cour cantonale a substitué son appréciation de la volonté de la recourante à celle du tribunal de première instance en se limitant à relever que devant la police, avant d'être assistée d'un avocat, la recourante n'avait pas dit que sa gifle était destinée à repousser une attaque mais qu'elle avait été administrée en conséquence du coup reçu, ce qui l'amène à la conclusion que cette riposte dénote une part active à une querelle et une volonté de rendre ce qu'elle venait de recevoir. Elle n'a toutefois pas exposé en quoi l'appréciation du tribunal de police aurait été établie de manière manifestement inexacte ou en violation du droit, se bornant à dire que le tribunal de police n'avait pas motivé sa décision alors que ce dernier a dûment exposé au consid. 2.2.2 de son jugement les raisons pour lesquelles il a accordé foi à la version de la recourante, selon laquelle cette dernière se serait bornée à se défendre face à une attaque de l'intimée. Dans ces circonstances, la cour cantonale n'a pas exercé son pouvoir d'appréciation dans les limites imposées par l'<ref-law> s'agissant d'une contravention. Il convient par conséquent d'admettre ce grief.
1.6. Il peut encore être signalé qu'outre son appréciation différente de la volonté de la recourante, la cour cantonale a considéré que la seule perspective de voies de fait ne suffisait pas à retenir la légitime défense.
Cet argument n'est pas pertinent dès lors qu'il est admis que la gifle imputée à la recourante a été administrée à l'intimée après que cette dernière lui avait donné un coup de poing (arrêt attaqué, p. 6, consid. 1.7 2 ème §). On ne se trouve donc pas dans une situation où une querelle était susceptible d'aboutir à des voies de fait mais dans une situation où des voies de fait avaient déjà été commises.
Dans ces circonstances, il y a lieu de renvoyer la cause à la cour cantonale afin soit qu'elle expose les motifs pour lesquels les faits auraient été établis de manière manifestement inexacte ou en violation du droit soit pour déterminer si la défense était justifiée et proportionnée.
2.
Le recours doit être admis, l'arrêt attaqué annulé et la cause renvoyée à l'autorité cantonale pour qu'elle statue à nouveau. La recourante, qui obtient gain de cause, ne supportera pas de frais et peut prétendre à une indemnité de dépens à la charge pour moitié chacun, d'une part, du canton de Genève et, d'autre part, de l'intimée (art. 68 al. 1 et 2 LTF). Dans les circonstances d'espèce, il peut être renoncé à mettre des frais à la charge de l'intimée, le canton n'ayant quant à lui pas à en supporter.

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est admis, l'arrêt attaqué est annulé et la cause est renvoyée à la cour cantonale pour nouvelle décision.
2.
Il n'est pas perçu de frais judiciaires.
3.
Une indemnité de 3'000 fr., à verser à la recourante à titre de dépens, est mise pour moitié à la charge du canton de Genève et pour moitié à la charge de l'intimée.
4.
Le présent arrêt est communiqué aux parties et à la Chambre pénale d'appel et de révision de la Cour de justice de la République et canton de Genève.
Lausanne, le 17 décembre 2020
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
La Greffière : Paquier-Boinay